我在 2 月面了 Lyft 的 DS 流程,职位是 mid-level(他们相当于 L4)。我会拆得细一点,因为 DS 流程和 SWE 不一样,我准备时也找不到一篇清晰的总结。
DS 的流程结构: SQL 轮(45 分钟) Product/case 轮(45 分钟) Stats/probability 轮(45 分钟) Behavioral(45 分钟) HM intro(30 分钟)
这个岗位没有(Python/ML)coding。Lyft 其他更偏 ML 的 DS 岗会有 modeling 轮。
SQL 轮: 真的很难。不是「写个 SELECT 加个 JOIN」那种难。我遇到的是:多步骤窗口函数 + self-join,计算某个 driver 维度的滚动窗口指标。大概是:对每个 driver 算 7 天滚动完成率,然后找出哪些 driver 在某个事件后掉到阈值以下。
他们会先给 schema,让你 5 分钟读。数据模型包含 rides、drivers、timestamps、statuses。很 Lyft 领域,但能理解。用的是共享 SQL 编辑器。
Tip:动手写之前先把思路说出来。他们评估的是你怎么拆解问题,不只是 query 能不能跑。我用 CTE 一步步拆开,效果很好。
Product/case 轮: 给一个和 Lyft 指标相关的场景。我的是:'driver utilization 在三个市场月环比下降了 8%。你会怎么排查。' 经典诊断框架:是否真实还是数据假象,是供给还是需求,是特定 cohort 还是全市场,leading indicator 是什么。
他们会追问你的假设。我说「我会先查数据 pipeline 有没有变」,他们就问我具体怎么查、看哪些信号。每一步都要准备被追问到下一层。
Stats 轮: A/B testing 设计 + 一点概率。我遇到的问题包括:如何设计一个实验来测试 driver 激励结构的变化(难点在于 driver 不是 IID,行为相关),一个 Bayesian updating 题,还有一题是怎么判断指标变化是 composition shift 造成的还是实际变化。
如果你做过双边市场的 A/B testing,会很顺。如果你只会最基础的 two-sample t-test,你可能会在 interference 和 spillover 上吃亏。
整体来说,Lyft 的 DS 面试很硬。这个级别下 stats 深度比多数公司更深。准备好窗口函数、产品诊断框架、双边市场的实验设计。