两个月前我挂了一个 Uber L5 SWE loop。写下来一部分是给自己复盘,一部分是因为我当时准备时找不到这么具体的内容。
流程是:1 轮 phone screen(LC medium,45 分钟),然后 4 轮 virtual onsite:2 轮 coding,1 轮 system design,1 轮 behavioral。
我觉得我挂在哪:
Coding。 有一轮是图题,我认出来了,但边界条件处理翻车了。我太快跳到解法,没有把问题结构讲清楚。面试官试图把我拉回来两次,我都没接住。现在回头看:Uber 的面试官好像会把这种 redirect 当成「可被指导性」的信号。我直接闷头往下冲,估计很伤。
System design。 我过度设计了。让我设计 rate limiter,我前 10 分钟就直接上了一个分布式、Kafka-backed 的怪物。面试官一直问「你这里会怎么简化」,我却一直在加复杂度。在 Uber 的 L5 这个 level,他们想看你先识别一个简单且正确的设计,再逐层加上规模因素,而不是一上来就按最大规模开打。
Behavioral。 我当时觉得挺顺,但他们给的反馈(他们给了一些,我很感激)说我的回答「high level」。我觉得我是在讲项目层面的故事,而不是我个人贡献层面的故事。他们想知道的是你具体做了什么,不是团队做了什么。
我收到的反馈:coding 过了(看来图那轮没我想的那么糟),system design borderline,behavioral 没过。挺意外的。
如果重来一次我会做什么:coding 放慢节奏;system design 前 15 分钟先保持 lean 再扩展;behavioral 练习用「I did」而不是「we did」的叙述方式。
可能 6 个月后会再投一次。Uber 的重新申请窗口通常是 6-12 个月,看岗位。