大概五周前走完了 airbnb MLE 的 loop。分享原始笔记。
airbnb 很偏 recsys/ranking。如果你来自纯 NLP 或 CV,不会直接被刷掉,但你得会用 ranking 的语言说话。比如:在推荐场景里怎么平衡 exploration vs exploitation、offline vs online 的评估指标、针对 user-item 交互数据的 feature pipeline。
我的面试结构:
Coding(2 轮): 一轮标准 coding,一轮 ML coding。标准那轮是中等难度的图题。ML coding 更有意思:实现一个简化版的 embedding 最近邻搜索,评估几种距离函数,然后讨论你会怎么扩展规模。不能用 sklearn,数学自己写。他们给了 numpy。
ML system design(1 轮): 我拿到的是「设计一个用于 airbnb 搜索结果的 ranking system」。非常对味。我从澄清问题开始:主指标是什么(预订?点击?满意度?)、延迟约束、有什么信号。然后他们想看到完整 pipeline:candidate retrieval、feature engineering、模型选择(让我对比 gradient boosted trees vs two-tower neural network 在 retrieval 里的适用性)、用 holdout set 做离线评估、在线 A/B 测试设计,以及监控 model drift。我们光监控就聊了 20 分钟。他们非常在意你会怎么发现模型在生产环境里变差。
ML depth / research interview: 更像 PhD 式讨论。他们给了一个接近论文的问题:怎么处理 ranking 数据里的 position bias(用户更倾向点顶部结果,不管质量)。我们聊了 inverse propensity scoring、unbiased learning-to-rank 方法、logged bandit feedback。如果你不知道 position bias 是什么,把它加进你的准备清单。
Behavioral: 和其他岗位差不多的格式。「for 'be a host'...」之类。
comp 说明:我拿到的 L5 MLE offer 是 base 大概 $200-220k(SF 区间)+ RSUs。我说法是大概「朋友拿到的」ballpark。
真正有用的准备资源:Airbnb engineering blog(他们发过 ranking 和 search 系统的文章)、RecSys 会议里关于 learning-to-rank 的论文,以及说真的,就是能具体地聊 tradeoff,而不是只会堆 buzzword。