Coinbase SWE New Grad面试题和答案
New Grad Interview Questions & Answers
Coinbase New Grad面经,OA到Onsite全流程复盘
刚面完Coinbase的SWE New Grad,感觉身体被掏空,赶紧来复盘一下,给后面的兄弟姐妹们攒攒人品。说实话,Coinbase的面试流程还挺长的,从OA到Virtual Onsite,感觉跟打怪升级似的,一关接一关。
面试流程
首先是OA,一般是在CodeSignal上做,感觉他们家还挺看重分数的,我当时是700+过的,身边也有差不多分数的同学进了下一轮。所以大家刷题的时候可以顺便在CodeSignal上练练手。
OA过了之后就是HR小哥的Phone Screen,简单聊聊简历,问问你为啥想来Coinbase,对crypto感不感兴趣之类的。这里大家可以提前准备一下,表现出对Web3的热情,绝对是加分项。
然后就是重头戏Virtual Onsite了。我当时是两轮Technical Interview,每轮一个半小时。这个时长真的有点吓人,一场下来口干舌燥。
Coding题目
不得不说,Coinbase的Coding题还是挺有水平的,不是那种无脑背题就能过的。我碰到的两道题都是LC Medium难度的,但会加一些follow-up,让你不断优化。
第一题:变种Two Sum
这题是Two Sum的变种,给你一个Array of integers和一个target,要求你返回所有和为target的unique pairs。
解题思路: 这题的考点在于如何去重。一个经典的解法是先给Array排序,然后用Two Pointers,一个指向头一个指向尾。如果两个pointer指向的数的和等于target,就找到了一个pair,然后同时移动两个pointer,并且要跳过所有重复的元素。如果和小于target,就移动左边的pointer;如果和大于target,就移动右边的pointer。
代码框架:
第二题:设计一个简易的交易系统
这题有点System Design的意思了,但其实还是在考Coding。要求你实现一个class,包含buy和sell两个方法,来模拟一个简单的股票交易系统。你需要维护一个order book,并且在有新的buy/sell order进来的时候,看能不能match上已有的order。
解题思路: 这题的关键在于如何高效地存储和查找order。可以用两个Heap,一个Min Heap存sell order,一个Max Heap存buy order。当一个新的buy order进来时,就去sell order的Heap里找价格最低的,看能不能match。反之亦然。这道题当时把我卡了20分钟,主要是在处理各种edge Case的时候有点懵。
代码框架:
System Design
如果你的面试轮次里有专门的System Design,那很有可能会碰到“Design a Trading System”这种问题。这可比上面那个Coding版的要复杂多了。你需要考虑的东西包括:
- Scalability: 如何处理海量的交易请求?
- Reliability: 如何保证交易的原子性?
- Latency: 如何降低交易的延迟?
这里就不展开讲了,大家可以去搜搜相关的资料,有很多大神分享过。血泪教训,千万不要裸考System Design。
Behavioral Question
最后再聊聊Behavioral Question。Coinbase非常看重culture fit,所以BQ环节千万不能掉以轻心。常见的BQ问题包括:
- Why Coinbase?
- Tell me about a time you had a disagreement with your teammate.
- How do you handle ambiguity?
准备BQ的时候,建议大家多去了解一下Coinbase的文化和价值观,然后结合自己的经历,准备一些STAR原则的故事。不要只是干巴巴地回答问题,要通过故事来展示你的能力和个性。我当时就准备了好几个项目经历,把它们包装了一下,用来回答不同的问题。
好了,就说这么多吧,希望能帮到大家。Coinbase的面试体验总体来说还是不错的,就是有点熬人。大家加油刷题,好好准备,Offer会有的!
#coinbase #swe #newgrad #Interview #面经 #北美求职 #cs #softwareengineer #codesignal #LeetCode
再补充一个面经里看到的题目,感觉也挺有代表性的。
第四题:有效的回文
这道题是判断一个字符串是不是有效的回文,只考虑字母和数字,忽略大小写。
解题思路: 这题可以用Two Pointers来解。一个pointer从字符串的开头开始,另一个从结尾开始,然后同时向中间移动。在移动的过程中,如果碰到不是字母或数字的字符,就跳过。如果两个pointer指向的字符(忽略大小写后)不相等,那就不是回文。如果两个pointer相遇了,那就说明是回文。
代码框架:
另外,关于Behavioral Question,我还想再多说几句。Coinbase的面试官真的很喜欢问follow-up question。比如你讲完一个项目经历,他会追问你在项目中遇到的最大的挑战是什么,你是怎么解决的,如果再给你一次机会,你会怎么做得更好。所以大家在准备BQ的时候,一定要把自己的故事想得足够深入,不要只停留在表面。最好能准备几个不同维度的故事,比如技术挑战、团队合作、项目管理等等,这样不管面试官问什么,你都有的聊。我当时就因为一个项目细节没想清楚,被面试官问得有点尴尬,还好最后圆回来了。这都是血泪教训啊!
