推荐算法工程师面试题及答题要点
推荐算法工程师的面试通常 3-5 轮,技术面重点考机器学习基础、推荐系统全链路认知和你项目里真实做过的事。最容易挂的不是答不出八股,而是项目深挖时讲不清自己贡献的边界,以及线上问题排查类问题暴露缺乏实战。
专业基础
讲一下推荐系统的整体架构,从用户打开 App 到看到推荐结果,中间发生了什么?
考察点:考察你对全链路的理解,是否有系统性认知而非只会调模型。
- 按「召回→粗排→精排→重排」的漏斗结构讲,说明每层的数据量级差异和延迟约束
- 召回层强调多路召回并存:协同过滤、向量召回、热门、运营位等,说明为什么不能只靠单路
- 精排层讲特征工程、模型结构(如深度排序模型)和预估目标(点击率、转化率、时长)
- 最后补一句重排做多样性、去重、业务规则,体现你懂工程和业务约束
别踩:只讲模型不讲系统,漏斗各层的量级和延迟要求说不出来,会被认为没接触过线上系统。
协同过滤的原理是什么?它有什么问题,怎么解决?
考察点:经典基础题,考你对传统方法的掌握和问题分析能力。
- 分 ItemCF 和 UserCF 讲清楚相似度计算方式,说明各自的适用场景
- 问题至少说三点:冷启动、稀疏性、热门物品主导推荐结果
- 对应解法:引入内容特征、矩阵分解、热度打压和长尾扶持策略
- 可以补充协同过滤现在多作为召回一路,而非唯一方案
别踩:只背定义不讲问题和解法;或者反过来把协同过滤贬得一文不值,显得不理解经典方法的价值。
CTR 预估和推荐排序是什么关系?为什么不能直接用点击率排序?
考察点:考察对预估目标和业务目标之间差异的理解。
- 说明排序模型本质是在预估点击率、转化率等概率,排序只是预估结果的一种应用
- 直接按 CTR 排序会导致标题党、低质内容霸屏,伤害长期体验
- 讲多目标建模思路:点击、时长、点赞、负反馈等目标如何融合
- 提到 E&E(探索与利用)或长期价值,体现你思考的不只是即时指标
别踩:把 CTR 预估和推荐系统划等号,或说不出「为什么线上指标涨了用户体验反而变差」这类矛盾。
AUC 是什么?线上 AB 实验指标涨了但 AUC 没变,可能是什么原因?
考察点:考察离线评估和线上效果的对应关系,这是实战经验题。
- 先准确定义 AUC:随机取一正一负样本,模型给正样本打分更高的概率
- 说明 AUC 是全局排序能力,线上每个用户只看到自己的一小段排序
- 可能原因:模型对头部用户改善明显但整体 AUC 被稀释;或收益来自召回而非排序
- 也可能 AB 实验本身有干扰或新奇效应,建议观察更长时间
别踩:只会背 AUC 定义,答不出离线和线上不一致的场景,会被判定缺乏实战。
项目经历深挖
挑一个你最有代表性的推荐项目,讲一下背景、你的方案和最终效果。
考察点:考察表达结构、贡献真实性和技术选型逻辑。
- 用「业务问题→技术方案→我的角色→量化结果」四段式,控制在两分钟内
- 量化结果要具体:指标提升幅度、实验周期、覆盖流量比例
- 主动说清团队分工和你的边界,哪些是你做的、哪些是协作方做的
- 结尾补一句踩过的坑和迭代过程,比只讲成功更有说服力
别踩:讲成流水账或把团队成果说成个人成果,后面追问细节时对不上会直接出局。
这个项目里,你的模型上线后效果不好,你是怎么排查的?
考察点:考察线上问题排查能力,区分「做过项目」和「真正负责过」。
- 先确认问题定位:是数据问题(特征穿越、样本偏差)还是模型问题
- 讲排查顺序:离线在线一致性检查→特征分布对比→分人群分场景下钻
- 给出具体案例:比如发现训练和推理的特征口径不一致导致效果衰减
- 最后讲修复后的验证方式,形成闭环
别踩:只说「调参、重新训练」这种泛泛答案,没有排查路径,暴露没真正处理过线上问题。
你说指标提升了 X%,这个数字怎么来的?实验是怎么设计的?
考察点:考察实验严谨性,验证项目数据是否可信。
- 讲清实验设计:分流方式、对照组设置、实验周期、样本量是否充分
- 说明核心指标是什么、护栏指标有哪些(比如时长涨了但留存不能跌)
- 主动提显著性检验和置信度,以及如何排除新奇效应
- 如果当时实验有瑕疵,坦诚说明,比硬撑可信得多
别踩:数字说不出实验依据,或只报好指标不提护栏指标,会被认为数据注水。
如果让你重新做这个项目,你会改进哪里?
考察点:考察反思能力和技术视野,看你是否停留在「做完了」层面。
- 准备 2-3 个真实的改进点,比如特征体系没做充分、目标定义偏短期
- 每个改进点讲清楚当时为什么没做(时间、数据、优先级),体现取舍意识
- 至少一个点要指向长期方向,比如从单点优化到全链路联动
- 避免把改进说成「全都推倒重来」,显得当初方案一无是处
别踩:说「没什么可改进的」显得没有思考;说太多则显得当初做得很差。
算法与工程能力
召回和排序的特征体系有什么区别?特征穿越是什么,怎么避免?
考察点:考察特征工程实战经验,这是推荐岗位的高频深挖点。
- 召回特征偏内容侧和用户长期画像,排序特征包含大量实时上下文特征
- 特征穿越定义:训练时用了线上不可知的信息,比如用了「用户当天总点击数」
- 避免方法:特征快照、按请求时间对齐、线上线下特征一致性校验
- 可以补充交叉特征、序列特征的处理经验
别踩:只罗列特征类型,说不出穿越的具体例子和防范手段,暴露没做过线上特征。
冷启动问题怎么处理?新用户和新物品分别说说。
考察点:考察对推荐系统经典难题的方案积累。
- 新用户:利用注册信息、设备信息做粗粒度分层,先推热门和高质量内容快速收集反馈
- 新物品:利用内容特征理解(类目、标签、embedding),辅以小流量探索
- 提到 E&E 策略:如何平衡探索新物品的代价和收益
- 说明冷启动的本质是信息不足,方案核心都是引入侧信息或加速反馈收集
别踩:只说「用内容特征」一句话带过,没有具体机制,显得理解停留在概念层。
线上推理延迟有要求,你的模型太重怎么办?
考察点:考察工程落地意识,推荐岗不是只训模型。
- 先分层:召回用轻量模型或向量检索,重模型放在精排,控制候选量
- 模型侧手段:蒸馏、剪枝、量化,说明各自适用场景
- 工程侧手段:特征预计算、缓存、并行化、批量推理
- 强调先测量再优化,找到真正的延迟瓶颈而不是盲目优化
别踩:只答「换小模型」,说不出蒸馏、缓存这类具体手段,或没有性能测量意识。
多目标建模了解吗?点击、时长、互动这些目标怎么融合?
考察点:考察对主流排序技术的掌握深度。
- 讲多任务结构:共享底层网络加多个任务头,说明参数共享的意义
- 融合方式分层讲:样本级融合、模型级融合(多塔输出合并)、排序级融合(公式加权)
- 提到任务间冲突(比如负迁移)及处理思路
- 如果没实际做过,坦诚说了解原理但没上线经验,别硬编细节
别踩:只会说「加权求和」四个字,追问权重怎么定、冲突怎么处理就答不上。
情景应变与业务思维
老板说推荐结果太同质化了,用户刷到的内容都差不多,你会怎么分析和解决?
考察点:考察从业务现象到技术方案的拆解能力。
- 先定义和度量:怎么量化多样性(类目分布、embedding 距离),确认问题真实存在
- 分析来源:是召回通道单一、还是排序目标过于偏向点击导致马太效应
- 方案分层:召回侧加探索通道,排序侧加多样性目标或打散规则,重排侧做硬约束
- 提醒要观察多样性提升对核心指标的代价,做权衡而非单点优化
别踩:直接跳到「加个打散规则」,没有先定义问题和分析根因,显得缺乏方法论。
AB 实验显示新模型点击率涨了 2%,但用户留存跌了,你上不上这个模型?
考察点:考察指标权衡和业务判断,没有标准答案,看思路。
- 先质疑数据:实验周期够不够、留存下跌是否显著、有没有新奇效应干扰
- 分析因果:点击涨留存跌通常意味着内容质量下降或标题党,做下钻分析验证
- 给出决策框架:留存是长期护栏指标,短期点击收益通常不值得牺牲
- 结论可以是「暂不上线,先修复质量问题」,关键是讲清权衡逻辑
别踩:不假思索说「上」或「不上」,没有验证数据和分析过程,暴露缺乏业务判断。
如果推荐效果突然掉了 20%,你会怎么排查?
考察点:考察线上稳定性意识和系统级排查能力。
- 先看时间和范围:全量掉还是部分人群、是否与某次发布或数据更新时间吻合
- 分层排查:数据链路(特征、样本)→模型服务(延迟、超时、降级)→上游依赖
- 讲一个具体案例最好:比如某特征上游表延迟导致大量默认值填充
- 强调监控和报警的缺失也是要复盘的点
别踩:只说「看日志、查模型」,没有分层排查路径和时间对齐意识,会被认为没值过线上班。
行为面试与反问环节
说一次你和产品或者工程同学在方案上有分歧的经历,最后怎么解决的?
考察点:考察协作方式和沟通能力,推荐岗需要大量跨职能配合。
- 选真实小分歧,别编「重大冲突」的戏剧化故事
- 讲清分歧本质:通常是指标口径或技术可行性上的认知差
- 解决方式:用数据或小流量实验验证,而不是靠职级或嗓门
- 结尾讲结果和你的反思,体现你尊重专业边界
别踩:把对方塑造成不讲理的一方,或最后靠领导拍板解决,显得协作能力差。
你为什么想做推荐算法,而不是纯研究或后端开发?
考察点:考察动机真实性和岗位匹配度。
- 结合真实经历讲:比如做项目时感受到「策略改动直接影响百万用户」的反馈感
- 说明推荐的技术特点吸引你:数据闭环快、问题定义开放、算法和工程并重
- 如果有从其他方向转来的经历,讲清转换的逻辑链
- 避免空谈「热爱机器学习」,要落到推荐这个具体方向
别踩:答案换成任何岗位都成立,说明没想清楚;或过度贬低原来的方向。
你有什么想问我们的?
考察点:考察你的关注点和思考深度,也是你判断团队的机会。
- 问业务:团队负责的场景和核心指标是什么,当前最大的挑战是什么
- 问技术:推荐链路哪些环节是团队自建的、迭代节奏如何
- 问成长:新人前三个月一般做什么、团队怎么衡量算法同学的价值
- 至少准备 3 个问题,别问加班和薪资这类留给 HR 的问题
别踩:说「没什么想问的」直接减分;只问福利待遇显得不关心工作本身。
面试准备清单
| 什么时候 | 要做什么 |
|---|---|
| 面试前 3 天 | 把自己项目按「背景-方案-我的角色-量化结果-踩坑」重写一遍,每个数字准备好实验依据,追问答不上来的地方提前补齐。 |
| 面试前 3 天 | 过一遍推荐系统全链路知识:召回排序重排各层职责、特征穿越、冷启动、多目标、AB 实验,每个主题准备一个能讲两分钟的完整回答。 |
| 面试前 1 天 | 查目标公司的业务:推荐什么内容、大概的产品形态,把通用答案往对方场景上靠,比如短视频和电商的排序目标差异要能说出来。 |
| 面试前 1 天 | 准备 3 个线上问题排查的故事(效果下跌、指标矛盾、特征异常),每个按「现象→排查路径→根因→修复」结构讲。 |
| 面试当天 | 准备纸笔,算法题和系统设计题边画边讲;每轮结束前留 5 分钟问 2-3 个准备好的反问问题。 |
| 面试当天 | 遇到不会的问题直接说「这块我了解有限,但我的思路是……」,展示思考过程比硬编答案安全得多。 |