大概 6 周前刚面完 uber 的 DS loop。写这个是因为网上信息基本都是 SWE 的,我只能从零散帖子里拼起来。
DS(L4/L5 IC)的流程结构: sql 轮(45 分钟) product case 轮(45 分钟) statistics/ml 轮(45 分钟) behavioral 轮(45 分钟) 有时会有 HM 轮(我有,但不是每个人都有)
sql 轮: 真的难,不是那种「写个 GROUP BY」的难,更像是多层 CTE 的窗口函数题,还带一个需要你自己推出来的业务逻辑小坑。我的题涉及 session 数据和在 rolling time windows 上算某个指标。如果你对 rank()、lag()、lead()、dense_rank()、以及嵌套 CTE 很熟,基本就还行。他们非常看重我的推理过程,不只是对不对。
they 当场跑了我的代码,有点吓人。第一次就跑通了,有个 edge case 小错误,他们问了下,我修了。看起来没问题。
product case 轮: 这就是 uber 的 DS 和别处偏纯分析 DS 不同的地方。他们希望你像 PM 一样思考。题目大概是「你会怎么衡量 [Uber Eats 功能] 的成功?」你得定义指标,选对指标,解释 trade-off,有需要的话设计实验。用 north star metric 和 guardrail metric 的经典框架对我帮助很大。
stats/ml 轮: L4 更偏 stats,不太偏 ml。A/B testing、假设检验、p-values 以及它们的局限。有一道题是实验短期有正向 lift,但他们担心 novelty effect。你怎么验证?建议上线还是不上?类似这种。
如果你期待「从零实现 gradient boosting」那种,那更像是 ml engineering。uber 的 DS 更偏应用统计和产品思维。
整体感觉: 严格但公平。面试官都挺投入。我的 sql 面试官 push 得很狠,但更像智力对练,不像刁难。