我走了 Uber 的 MLE loop,面的是 Forecasting 团队的一个 senior 岗位(ETA 预测、rider demand 建模)。我做 ML 八年了,之前在一家中型公司做 recsys。分享这个是因为 MLE 面试和 SWE 面试不一样,准备方式也不一样。
流程是:recruiter screen,两轮技术 phone screen,然后 full onsite。
Phone screen 1(ML 深度):45 分钟,聊 ML 概念。他们让我设计一个模型来预测用户在叫车后是否会取消。这是一个经典 Uber 问题,巧得像是故意的。他们不太在意模型选择(我说 gradient boosted trees,他们点点头就过了),更关注 feature engineering、class imbalance(取消很少)、评估指标,以及模型上线后出错会怎么样。
Phone screen 2(coding):标准 leetcode 风格题。中等难度。他们确实要求 MLE 候选人写出干净、能跑的代码。如果你 coding 弱,面这家之前先补起来。
Onsite ML design 轮:设计一个 pricing surge 系统。领域很 Uber,但会问得很深。实时延迟要求、模型重训节奏、如何检测 distribution shift、在峰值需求(Super Bowl、NYE)训练数据很薄时会发生什么。我大概花了 20 分钟讲 ML,他们一直把我往系统侧拉。
Onsite systems 轮:ML systems design。怎么在 10k QPS、sub-100ms latency 下做模型 serving?feature store 设计。online vs offline feature serving。监控和告警 model drift。这是一轮真正的系统面,不是软性的「聊聊你的架构」。
Onsite coding:两道题。一道偏数据处理(pandas 风格),一道偏算法(graph)。每道题大概 20-25 分钟能解。
Onsite behavioral:STAR 形式,重点是无权影响力和处理模糊需求。
结论:Uber 的 MLE 面试比平均更难。系统侧是真考。如果你没怎么想过 feature store、模型 serving 基础设施、或者线上 A/B 测试 ML 模型,这会是你走进去前需要补的短板。