美团 · 到店

推荐算法一面、二面、三面面经

完整信息

39 条问法 · 30 道题

本篇目录

先结算。

一面 10.26,50 分钟,过

二面 10.30,55 分钟,过

三面 11.01,45 分钟,过

10.05 HR 打电话说意向,让等正式函

一共 22 道题,一面偏项目,二面偏模型,三面偏业务和取舍。

一面

  1. 自我介绍。

  2. 讲一个你做得最深的召回项目,目标是啥,指标涨了多少。

  3. 双塔召回,用户塔和物品塔分别喂了什么特征。

  4. 用户塔里放历史行为序列,序列长度多少,怎么截断。

  5. 物品塔和用户塔的输出做内积,为什么不是 concat 过 MLP。

  6. 内积有什么表达上的限制,怎么缓解。

  7. 训练样本怎么构造,曝光未点击算负样本吗。

  8. 曝光未点击里有多少是没看见的,你怎么区分。

  9. 负采样比例多少,采样之后损失函数要不要加权。 [ 答要,权重是 1/采样率。他问为什么,我说否则预估的点击率会偏高 ]

  10. 特征里有统计类特征吗,窗口多大。

  11. 统计特征怎么防止穿越。 [ 答按天分区、只用到 T-1。他问那当天实时的呢 ]

    这题后面追了三层。实时的用 Flink 算,窗口 5 分钟,写进 KV。他问训练的时候怎么拿到这个特征,我说用 T-1 的离线值补。他问那线上和训练不就对不上了。我说对,这是我们现在最大的一个问题。

    再往下他问,如果非要让训练用上实时特征,怎么办。我说只能做特征回填,把线上请求的 feature 落盘,训练时 join。他问落盘延迟多少,这就是第 12 题。

  12. 实时特征怎么接,延迟多少,延迟期间用什么补。

  13. 模型上线后 AUC 涨了,线上 CTR 没涨,可能是什么原因。

二面

  1. 多目标怎么做的,CTR 和 CVR 是两个模型还是一个。

  2. 如果用两个模型,CVR 的训练样本只有点击样本,样本空间不一致怎么办。

  3. ESMM 怎么解决这个问题的,它真的解决了还是有别的问题。 [ 答用全样本空间建模,pCTCVR = pCTR × pCVR。他说那只是一种约束,不是真的学到了 ]

    他让我说具体点。我的理解是,ESMM 把 CVR 塔和 CTR 塔共享 embedding,用曝光样本的 CTCVR 做监督,CVR 只在点击样本上有梯度。所以问题没被消除,只是被约束住了。他点头,说那 CVR 塔学到的分布还是有偏。

    我当时接了一句"那可以加一个 IPW 校正"。他问权重怎么估。我答不上来。

  4. 排序公式用 pCTR × pCVR × price,价格这一项会不会让模型学歪。

  5. 位置偏差怎么处理,训练时去掉位置特征,线上再加,这样做的问题在哪。

  6. 序列模型用的什么,DIN 的 attention 和普通的 target attention 差在哪。

  7. 长序列怎么处理,全量塞进去显存够吗。

  8. 冷启动 item 没有行为,怎么排。

  9. 新用户没有历史,你们给什么兜底。

三面

  1. 你们这套系统的 QPS 多少,P99 多少,模型多大。
  2. 模型从训练到上线要多久,中间卡在哪。
  3. 如果让你把现在这个模型换成一个 10 倍大的,你会先动哪。
  4. 你怎么衡量一次模型迭代的收益,离线指标和线上指标打架听谁的。
  5. AB 实验的样本量怎么算的,跑了几天。
  6. 有一个实验线上涨了 2%,但人均使用时长掉了,你怎么判断。
  7. 你怎么看现在的大模型做推荐,能替代现在的排序吗。
  8. 反问。

手撕:给 K 个已经按分数降序排列的召回列表,每个列表长度不等,要求合并去重后取 TopN,并说明复杂度。

我写的是堆,每个列表放一个游标,取最大值,用 set 去重。他问如果 TopN 只要 100,K 是 20,堆和直接归并哪个快。我说堆,O(N log K)。他说 N 是 100 的话,直接扫 20 次也差不多。这个我承认没想。

第二个手撕:写 AUC 的计算,要求处理并列分数。

我用了排序 + 秩,并列取平均秩。他问为什么不直接两重循环。我说 O(n²) 线上跑不动,他说离线算 AUC 又不看这个。

这场能过,我猜是因为第 13 题。我答的是"离线 AUC 涨、线上 CTR 不涨,大概率是训练和 serving 的特征不一致,尤其是实时特征回填的延迟"。他追问了一句"你怎么查的",我说我把线上请求的 feature dump 下来,和训练样本 join,比了 50 个特征的分位数,发现有两个偏差超过 3 个标准差。

这是我真干过的事,所以说得很顺。其他题都是套路。

三面第 29 题我答得不好。我说大模型短期内替代不了排序,因为延迟和成本。他说"我没问替代,我问你怎么看"。我改口说可能会把召回和排序揉成一个生成式模型,但样本效率和可控性还是问题。他点了点头,没再追。

推荐岗的面试题其实都不难,难的是每道题后面那句"为什么"。你答完一个方案,他问为什么不用另一个,你答完对比,他问那你们线上是怎么验证的。

—— AIGC小白入门记

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
    负采样比例多少,采样之后损失函数要不要加权。 \[ 答要,权重是 1/采样率。他问为什么,我说否则预估的点击率会偏高 \]
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
    ESMM 怎么解决这个问题的,它真的解决了还是有别的问题。 \[ 答用全样本空间建模,pCTCVR = pCTR × pCVR。他说那只是一种约束,不是真的学到了 \]
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
    手撕:给 K 个已经按分数降序排列的召回列表,每个列表长度不等,要求合并去重后取 TopN,并说明复杂度。
  37. 37
  38. 38
  39. 39

同作者面经

展开其余 13 篇收起其余 13 篇

相关公司