Stripe SWE New Grad面试题和答案
New Grad Interview Questions & Answers
Stripe家New Grad面试经验分享,刚出炉的!
Stripe的面试体验在众多科技公司里算是独一档的。不像某些大厂,上来就是狂轰滥炸的LC Hard,Stripe的题目更偏向于实际工作中的问题,非常有意思,但准备起来也需要一些特别的技巧。我刚走完他家New Grad SWE的全流程,有些血泪教训和心得,赶紧码下来分享给还在求职路上的兄弟姐妹们。
Stripe的面试流程通常是三轮:OA -> Technical Interview -> Virtual Onsite。
首先是OA,一般是在HackerRank上做。我当时遇到的是一道题,限时60分钟。题目不是那种典型的LC算法题,更像是一个mini Project,考的是你处理数据的能力。比如给你一堆API的log,让你分析出一些特定的信息。所以刷题的时候,除了要掌握基本的Array, LinkedList, Tree, Graph这些数据结构,对HashMap, Stack, Queue, Heap的熟练运用也特别重要。尤其是HashMap,简直是处理这类问题的神器。
OA过了之后就是一轮Technical Interview,大概45-60分钟。我当时遇到的是一个面试官小哥,人很nice。他先是简单聊了聊我的简历,然后就开始做题。题目是分好几部分的,做完一部分才会给你下一部分的要求,层层递进。这种形式还挺考验人的,因为你前面的设计会直接影响到后面的实现。我当时就被一个小细节卡了十几分钟,还好最后还是想出来了。所以大家在做这种题的时候,一定要考虑代码的扩展性。
最后一轮是Virtual Onsite,也是最考验人的一轮。我当时面了四轮,分别是两轮Coding,一轮System Design和一轮Behavioral。
Coding轮的题目风格和Technical Interview很像,但会更复杂一些。可能会让你直接在一个现有的代码库上加功能,或者修复一个bug。这就要求你不仅要会写代码,还要会读代码,快速理解别人的代码逻辑。我当时就遇到了一道题,是让我给一个开源库加一个新功能,说实话,当时有点懵,因为我对那个库不是很熟。所以建议大家平时可以多看看一些开源项目,熟悉一下真实世界的代码是什么样子的。
System Design轮对于New Grad来说,考的不会太深。我当时被问到的是“如何设计一个支持高并发的短链接服务”。面试官主要想看你的思路,以及你对一些基本概念的理解,比如如何处理海量数据,如何设计数据库schema,如何做caching等等。大家可以多看看这方面的资料,比如《Grokking the System Design Interview》这门课就讲得很好。
Behavioral轮主要是和Hiring Manager聊,问题都比较常规,比如“Why Stripe?”,“Tell me about a challenging project you worked on”等等。但Stripe非常看重一个人的culture fit,所以大家在回答的时候,一定要结合Stripe的Operating Principles来回答。比如Stripe非常强调“Users first”,你就可以多讲讲你过去的项目里,是如何把用户放在第一位的。
下面给大家分享几道我准备过程中遇到的,以及和朋友交流下来觉得比较有代表性的Stripe风格的题目。
1. API Rate Limiter
设计并实现一个API Rate Limiter,可以限制特定用户在单位时间内的请求次数。你需要实现一个rate_limit(user_id)函数,如果该用户的请求没有超过限制,返回true,否则返回false。这是一个经典的Rate Limiter问题。对于New Grad来说,一个比较常见的解法是使用一个HashMap来记录每个用户的请求时间戳。
2. Reconstruct Itinerary
给你一个机票的列表,表示为[from, to]的形式。请你从JFK出发,把所有的机票都用上,并且每张机票只能用一次,返回一个行程的列表。如果有多条合法的行程,返回字典序最小的那一条。这道题其实是LC 332的原题。它是一个图的遍历问题,可以用DFS来解决。
3. Server Log Analysis
给你一个服务器的log文件,每一行代表一个请求,格式为timestamp, user_id, resource。请你找出在任意一个小时内,访问次数最多的resource。这道题也是一个很实际的问题。我们可以用一个Sliding Window来解决。
最后再聊聊Behavioral Question。前面也提到了,Stripe非常看重culture fit。所以大家在准备的时候,一定要去Stripe的官网上好好看看他们的Operating Principles。然后准备一些自己的故事,用STAR原则(Situation, Task, Action, Result)来组织语言。比如,当面试官问你“Tell me about a time you had a disagreement with your teammate”的时候,你就可以讲一个你和队友因为一个技术方案产生分歧,但你通过有效的沟通,最终说服了队友,并且取得了很好的结果的故事。这样既能体现你的技术能力,又能体现你的团队协作能力。
#Stripe #面试经验 #求职 #北美求职 #SoftwareEngineer #NewGrad #面经 #技术面试 #FLAG #湾区
