好吧,这是我找工作的第 34 周,我终于走完了一轮 Uber coding loop,所以把信息写下来。
背景:我投的是 L5 SWE,偏 backend。流程是:recruiter screen,然后 take-home OA,然后在正式 loop 里两轮 live coding。
Take-home OA: HackerRank 平台。两题,总共 90 分钟。我遇到一题 medium,一题 medium-hard 的 sliding window。只要做过标准 Leetcode 准备都能解。没什么阴招,也不需要冷门算法。OA 没要求讨论时间复杂度,但我还是写了注释。
OA 过了后 3 天内就通知我了,recruiter 发邮件约 live loop。
Live coding(2 轮,每轮 45 分钟): Coderpad。每轮一个面试官。我的两轮都是偏 backend 的题。
第 1 轮:图遍历,BFS 变体。更多是考你能不能把边界条件处理对,而不是纯拼速度。初版解出来后,他们让我优化内存使用,需要考虑 iterative vs recursive,以及用显式 stack。
第 2 轮:更偏 system adjacent。给一份 ride events 的日志,找重叠窗口并计算一些 driver utilization 相关指标。需要 interval merging 的逻辑。感觉像是从真实的 Uber backend 问题里抽出来的,这点挺好,因为不是纯抽象谜题。
两位面试官基本都把时间用在讨论 trade-off 上了,也没人催我。
整体难度: Leetcode medium 的熟练度大概是底线。除非你目标是非常 senior,否则 Leetcode hard 的熟练度可能有点过度。建议重点练 graphs、intervals、sliding window、string manipulation。
不过现在已经不是那种 top-of-the-funnel 的感觉了。我 8 个月里做了大概 30 个 OA,Uber 的这个算是更像回事的。live 轮真正测的是工程判断力,而不是背模板。