走了 Starbucks Technology 的 ML engineer 全套面试,岗位在他们的 personalization team。这个团队负责驱动 app 里展示的内容:个性化饮品推荐、定向优惠等。我把信息贴出来。
流程。三周内五轮:recruiter screen、ML coding screen、ML system design、cross-functional behavioral,以及最后的一个 director calibration call。
ML coding screen。60 分钟,两部分。第一部分是 Python 实现题:写函数计算排序列表的 precision 和 recall at K(P@K、R@K),很标准的 recsys 评估。第二部分是 pandas 的数据处理题。如果你 pandas 生疏,建议进面试前补一下。
ML system design。最重要的一轮。题目是:设计个性化 offer 推荐系统,决定给每个 Starbucks Rewards 会员在移动端展示哪些 offer。覆盖特征工程(交易历史、时间段、位置、季节性模式)、模型选择、训练 pipeline、移动端的服务延迟要求、以及 A/B 测试策略。我 60 分钟讲满了,仍然感觉只覆盖了 70% 的面。他们非常看重线上 serving,不只是线下训练。
他们更看重什么。从复盘(recruiter 说得很直白)看:system design 和 A/B 测试讨论权重最大。他们实验文化很成熟。你如果能讲清楚怎么设计带干净 holdout 的实验,以及上线新 recsys 功能时如何避免 novelty effect,比 coding 轮表现更能出信号。
Behavioral。更偏和产品、工程协作。有个问题让我意外:「Tell me about a time a model you shipped had unintended consequences for a user group.」(说说你上线的一个模型如何对某个用户群体产生了非预期影响。)要有真实例子,泛泛或假设性的回答撑不住。
技术栈。主要 Python,特征工程规模化用 Spark,还有一些基于 Azure ML 的内部工具。他们提到 Databricks。不是重 PyTorch 研究文化,更偏应用和生产化 ML。
Comp(口头 offer,已拒)。Senior MLE,Seattle:$190k base,15% bonus target,4 年 modest RSU。模型算的第一年总包大概 $220k 左右。我拿了别的 offer,但面试流程很扎实。