Skip to content

Snapchat Machine Learning Engineer L4 Onsite 面试经验 ​

发表于 2026-11-03
更新于 2026-11-03

面试详情 ​

  • 每轮时长:1 小时,其中 10 到 15 分钟是 behavioral case
  • 加面:debrief 之后加了一轮 system design

第一轮:ML Fundamentals ​

  • 列举你知道的 optimizer
  • offline evaluation metrics:Snapchat 用的是 Normalized Entropy(NE)
  • confusion matrix:每个格子分别叫什么(true positive、true negative 等)
  • model calibration
  • 如何解决 model over-fit

评论区补充:calibration 这块,我其实用 logistic regression 就可以,面试官说实际上就是这样做的,效果比 isotonic regression 还要好。

第二轮:Coding ​

数组的前一部分严格单调递增,后一部分单调递减,用 binary search 找到数组的峰值。

Follow-up:如果数组不是严格单调(有相等的元素),还能用 binary search 吗?我的回答是不能。

评论区补充:这一轮可以用 AI 辅助 coding,但题目很简单,基本不需要用 AI。

第三轮:System Design ​

设计一个视频推荐系统,问到:

  • 数据流是什么样的
  • two tower 模型多久更新一次
  • 如何从 data log 里拿到 label 和 feature
  • serving 是什么样的

第四轮:Applied ML ​

同样是设计一个视频推荐系统,问到 MMOE(target 和 loss 是什么样的),以及 offline evaluation metrics。

第五轮(加面):System Design ​

设计一个有害内容识别(harmful content identification)系统。

下方评论区补充:

每轮1小时,行为案例10-15分钟。有害内容检测设计轮询问了如何获取标签、延迟(约1分钟)、人工标注、模型部署方式以及特征呈现方式等问题。

关于 content safety 的 precision 和 recall,面试官提到可以做线下 annotation。不能把所有内容都 label 成坏的,那样广告就不赚钱了。所以结论是 recall 很重要,可以先保证 recall,再通过线下 annotation 提升 precision。但这里有 tradeoff,不能太 aggressive,以至于大部分广告都不能赚钱。

数据流我按照两路讲:app 的 streaming data 经过 Kafka 之后,一路由 Flink 处理,生成 online feature;另一路由 Spark 生成按小时分区的 batch data。

面试结果反馈 ​

debrief 之后先加面一轮 system design(第五轮),加面之后通过,进入 team match 阶段。

引用来源