面灵AI→

美团 自动驾驶算法工程师一面:VOC 大模型实习与强化学习项目拷打

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

实习拷打

  1. 自我介绍
  2. VOC 是什么?输入是什么形式?
  3. 「闭环准确率」「根因准确率」怎么定义?5% 的噪声评估数据怎么得到?
  4. 高质量微调数据集怎么构建?
  5. 「专家经验的思考监督数据」是什么意思?
  6. 年初也面过美团,为什么最后去了另一家?为什么选择与自动驾驶差别较大的实习?
  7. 实习期间主要从哪里学习技术?有哪些输入来源?
    • 追问:ZeRO-2 / ZeRO-3 是什么?

项目拷打

  1. 四个项目的难点、创新点或主要启发是什么?
  2. 第二个项目的场景和核心问题是什么?
  3. 奖励函数怎么构建?如何进入奖励函数?
  4. MHA 是什么?相关方向有哪些较好的工作或实验室?
  5. 为什么还需要该奖励项?不能直接优化目标吗?
  6. 第四个项目相较第二个项目有什么变化?
  7. 为什么引入交互建模模块?两部分分别怎么设计?
  8. 「无需预训练」是什么意思?监督数据从哪里来?
  9. 行为怎么建模?行为是否会变化?
  10. 该设计到底体现在哪里?与普通模型有什么区别?
  11. 是否了解该方向的相关工作?项目与其有什么关系?
  12. 模型主要看哪些评价指标?

个人经历、手撕与 AI Coding

  1. 本科成长经历带来了什么变化?
  2. 主要用 Python 还是 C++?
  3. 手撕:给定一个无固定规律、可能多次波动的整数数组,计算前面的数减去后面的数所能得到的最大下降幅度。例如输入 [2, 3, 6, 4, 3, 5, 1],输出 5(6 − 1)
  4. 解题思路和实现过程如何?
  5. AI Coding 主要用在哪些场景?有什么经验?
  6. 输出模板是什么?如何判断上下文遗忘?
  7. 定位 Bug 时怎么与 Agent 协作?

反问

  1. 无人车业务如何扩展?目前主要落地什么场景?
  2. 美团与其他无人车公司的业务模式有什么区别?
  3. 团队主要做什么?入职后可能负责哪些工作?

《参考解析》

  1. VOC 与两个准确率指标,关键在把口径讲清楚:VOC(Voice of Customer)是把用户反馈文本转成结构化信号的链路,输入通常是客服对话、工单、应用商店评论、问卷这类非结构化文本,输出是分类标签加根因。闭环准确率对应一级标签(这类问题有没有被闭环解决),根因准确率对应二级标签(为什么会出现),两者都是「模型预测与人工标注比对后的命中比例」。追问噪声数据怎么得到时,标准答法是:以人工标签为真值算指标,再抽样复核错误率高的样本,发现一部分「判错」其实是人工标错(模型是对的),据此估计标注噪声比例(例子里约 5%),后续要么修正标签、要么在指标里把这些样本剔出去。回答时点出「指标的可信度取决于真值的可信度」,比直接报一个数字更能体现工程意识。

  2. 高质量微调数据集怎么构建,清洗只是第一层:先做基础清洗(去空样本、去无效与乱码样本、去重、剔除超长与截断样本);再往上做的是标注质量与分布——统一标注规范、多标一致性与仲裁、按业务分布采样(避免某一类样本占绝大多数)、难例挖掘(把线上判错的样本回灌)、以及正负样本配比。格式上按 SFT 要求组织(指令、输入、输出),必要时补少量思维链样本。面试官如果评价「这些还是比较基础的数据清洗」,可以顺着补充:数据质量的核心是三件事——标签是否一致、分布是否匹配线上、以及有没有针对 bad case 的迭代闭环(线上错 → 进训练集 → 回归验证),这三条才是模型能不能真的涨点的关键。

  3. 「专家经验的思考监督数据」对应的是思维链监督:只用指令遵循模型(输入直接映射到标签)很难学到业务专家的判断依据,尤其是标签本身有上下文依赖、需要多步推理的场景。做法是让模型先产出中间推理(依据了哪些字段、排除了哪些可能、为什么落到这个标签),再用这些推理过程做监督(可以用更强的模型蒸馏生成、也可以由业务专家写少量高质量样例),训练目标既包括最终标签正确,也包括推理过程合理。回答时补一句边界:推理链能提升可解释性与难例表现,但也可能引入「推理看起来合理、结论却错」的幻觉,所以推理链要配合规则校验和抽检,不能只看最终准确率。

  4. 强化学习里为什么需要辅助奖励,要答到优化层面:理论上只优化最终目标也能学到策略,但实际训练中奖励信号稀疏、探索空间大,容易陷入局部最优或长时间学不到东西。加场景相关的辅助奖励(比如与安全、舒适、合规相关的项)相当于给策略提供先验引导,提升样本效率与收敛稳定性,代价是可能把策略带偏(奖励设计不当会出现钻空子行为)。回答时给一套取舍逻辑:辅助奖励只做引导、权重随训练衰减,最终仍以主目标为评价标准;同时说明辅助项必须可度量、不可与主目标冲突;评价上看奖励曲线、学习效率与策略收敛情况。面试官追问「不能直接优化目标吗」,正面回答「可以,但那是理想情况,工程上几乎都需要辅助信号」比绕开更稳。

  5. 手撕「最大下降幅度」用一次遍历就能过:维护「截至当前位置的历史最大值」,向后遍历数组,用历史最大值减当前值更新答案,遇到更大的数就更新历史最大值,时间 O(n)、空间 O(1)。以 [2, 3, 6, 4, 3, 5, 1] 为例,历史最大值先到 6,之后 6−4=2、6−3=3、6−5=1、6−1=5,答案 5。题目特意强调「无固定规律、可能多次波动」,就是在排除「单调递减」的简化假设,所以要主动说明算法不依赖趋势、能处理多次起伏;写完后自己举一个先跌后涨再跌的例子走一遍。这类题面试官会一起验算甚至尝试举反例,边写边解释「为什么这样更新是正确的」比闷头敲代码更有效。

  6. ZeRO 这类追问,答出「切什么」就够:ZeRO 是训练大模型时的显存优化方案,把原本每张卡都完整保存的状态切分到各卡上。ZeRO-1 切分优化器状态(Adam 的动量与方差,占显存大头),ZeRO-2 再加上梯度切分,ZeRO-3 进一步切分模型参数本身,需要时再通过通信把参数聚合起来。代价是通信量增加,因此要配合通信与计算重叠;再往前可以提到与张量并行、流水并行的组合(所谓 3D 并行)。被问到不懂的细节时,把「切分对象 + 省显存 + 换通信」这条主线说清,明确说没深入看过各阶段的具体实现,比硬编更安全。

  7. AI Coding 的经验要讲成可复用的方法,而不是罗列工具:常见的落地场景是样板代码生成、接口与参数查阅、单元测试与文档生成、以及 Bug 定位的初步排查。经验上有几条:任务拆小、一次只改一处;要求遵循最小改动原则,明确不许动的范围;用固定的输出模板(问题定位、修改位置、修改前后状态)把每次协作结构化,便于自己复盘;判断上下文是否遗忘的信号是模型开始不守模板或重复犯错,这时开新窗口重新给上下文比继续纠正有效。定位 Bug 时先让 Agent 梳理问题、按可能性列出若干根因,自己判断最可疑的一条,再要求它深入验证并给修改方案——把 Agent 当协作者而不是答案来源,面试官通常认这套。