Robinhood SWE New Grad面试题和答案
New Grad Interview Questions & Answers
最近帮一个学弟Mock了Robinhood的面试,感觉他家bar还是挺高的,尤其是对New Grad,感觉现在越来越卷了。今天就来复盘一下,给后面要面试的同学提个醒,顺便攒攒人品。
Robinhood的面试流程,我感觉还算比较standard。一般是先发一个OA,然后是Virtual Onsite。OA通常是在CodeSignal上,有两道题,难度大概在LC Medium左右。Virtual Onsite就比较刺激了,一般是三轮背靠背,两轮Coding,一轮System Design,最后再加一轮Behavioral。不过这个流程也可能变,具体看HR怎么说。
Coding Round是重头戏,我碰到的题都挺经典的,但会包装一下。说实话,Robinhood的题出的很有水平,不是那种纯粹的算法题,会结合一些实际业务场景。
第一道题是关于用户交易的。题目大意是,给你一个用户的交易记录,是一个Array of strings,每条记录包含交易类型(buy/sell)、股票代码和数量。要求你计算出这个用户最终持有的每只股票的数量。这题不难,用一个HashMap来记录每只股票的持有量就行。遍历一遍交易记录,如果是buy就加,sell就减。Time Complexity是O(n),Space Complexity是O(k),k是股票的数量。这题主要是考察你对HashMap的熟练运用,以及处理edge Case的能力,比如某个股票sell的数量比buy还多怎么办。我当时就这个问题和面试官讨论了很久,最后得出的结论是题目保证了交易记录是合法的。
第二道题就有点意思了,是关于股票价格波动的。给你一个股票过去N天的价格,是一个Array of integers。现在让你找出最长的一段连续天数,其中股票价格的波动不超过一个给定的阈值。波动定义为这段时间内的最高价和最低价之差。这题我第一反应是用Sliding Window。我们维护一个window,保证window内的最大值和最小值之差小于等于阈值。然后不断扩大window的右边界,当不满足条件时,就收缩左边界。为了快速找到window内的最大值和最小值,可以用两个Deque来分别维护单调递减和单调递增的序列。这样Time Complexity可以做到O(n)。这道题的变种很多,比如让你返回所有满足条件的子数组,或者让你在O(nlogn)的时间内解决。我当时卡了20分钟,主要是Deque的操作有点忘了,血泪教训啊,大家一定要把基础打扎实。
代码框架:
def longest_subarray(prices, threshold): # ... implementation using sliding window and deques ...
第三道题是关于用户推荐的。Robinhood有一个推荐系统,用户A推荐了用户B,用户B又推荐了用户C,这样就形成了一个推荐链。题目给你一个推荐关系的列表,让你找出最长的推荐链。这是一个典型的Graph问题,我们可以把每个用户看作一个节点,推荐关系看作一条有向边。问题就转化为了求图中的最长路径。因为推荐关系不会形成环(一个用户不能被多个人推荐),所以这是一个DAG(有向无环图)。我们可以用DFS + Memoization来解决。从每个节点出发,计算从它开始的最长路径长度,并用一个HashMap存起来,避免重复计算。Time Complexity是O(V+E),V是用户数,E是推荐关系数。这题我答得还行,因为之前刷到过类似的题,算是准备得比较充分。
代码框架:
def longest_Referral_chain(referrals): # ... implementation using DFS and memoization ...
System Design方面,New Grad一般不会考得太深,主要是看你的思路和沟通能力。我被问到的是设计一个股票价格的实时更新系统。我当时提出的方案是,用WebSocket来和客户端保持长连接,后端用一个消息队列(比如Kafka)来处理价格数据的流入,然后通过一个分发服务把价格推送到各个客户端。面试官追问了一些细节,比如如何保证数据的一致性,如何处理高并发,以及如何做failover。我当时答得不是很好,感觉System Design这块还是得靠多看多想多积累。
最后是Behavioral Question。Robinhood非常看重公司的价值观,比如Safety First, Participation is Power。所以准备BQ的时候,一定要结合这些价值观来准备你的故事。比如,当被问到“Tell me about a time you made a mistake”时,你可以讲一个你如何发现并修复了一个潜在的安全漏洞的故事,以此来体现你对Safety First的重视。我个人觉得,BQ没有标准答案,关键是要真诚,并且能够展示出你和公司文化的契合度。千万不要背答案,不然会显得很假。
#北美求职 #软件工程师 #面试经验 #Robinhood #NewGrad #SWE #Coding #SystemDesign #面经 #求职
