美团 自动驾驶算法工程师一面:VOC 大模型实习与强化学习项目拷打
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
实习拷打
- 自我介绍
- VOC 是什么?输入是什么形式?
- 「闭环准确率」「根因准确率」怎么定义?5% 的噪声评估数据怎么得到?
- 高质量微调数据集怎么构建?
- 「专家经验的思考监督数据」是什么意思?
- 年初也面过美团,为什么最后去了另一家?为什么选择与自动驾驶差别较大的实习?
- 实习期间主要从哪里学习技术?有哪些输入来源?
- 追问:ZeRO-2 / ZeRO-3 是什么?
项目拷打
- 四个项目的难点、创新点或主要启发是什么?
- 第二个项目的场景和核心问题是什么?
- 奖励函数怎么构建?如何进入奖励函数?
- MHA 是什么?相关方向有哪些较好的工作或实验室?
- 为什么还需要该奖励项?不能直接优化目标吗?
- 第四个项目相较第二个项目有什么变化?
- 为什么引入交互建模模块?两部分分别怎么设计?
- 「无需预训练」是什么意思?监督数据从哪里来?
- 行为怎么建模?行为是否会变化?
- 该设计到底体现在哪里?与普通模型有什么区别?
- 是否了解该方向的相关工作?项目与其有什么关系?
- 模型主要看哪些评价指标?
个人经历、手撕与 AI Coding
- 本科成长经历带来了什么变化?
- 主要用 Python 还是 C++?
- 手撕:给定一个无固定规律、可能多次波动的整数数组,计算前面的数减去后面的数所能得到的最大下降幅度。例如输入
[2, 3, 6, 4, 3, 5, 1],输出 5(6 − 1) - 解题思路和实现过程如何?
- AI Coding 主要用在哪些场景?有什么经验?
- 输出模板是什么?如何判断上下文遗忘?
- 定位 Bug 时怎么与 Agent 协作?
反问
- 无人车业务如何扩展?目前主要落地什么场景?
- 美团与其他无人车公司的业务模式有什么区别?
- 团队主要做什么?入职后可能负责哪些工作?
《参考解析》
-
VOC 与两个准确率指标,关键在把口径讲清楚:VOC(Voice of Customer)是把用户反馈文本转成结构化信号的链路,输入通常是客服对话、工单、应用商店评论、问卷这类非结构化文本,输出是分类标签加根因。闭环准确率对应一级标签(这类问题有没有被闭环解决),根因准确率对应二级标签(为什么会出现),两者都是「模型预测与人工标注比对后的命中比例」。追问噪声数据怎么得到时,标准答法是:以人工标签为真值算指标,再抽样复核错误率高的样本,发现一部分「判错」其实是人工标错(模型是对的),据此估计标注噪声比例(例子里约 5%),后续要么修正标签、要么在指标里把这些样本剔出去。回答时点出「指标的可信度取决于真值的可信度」,比直接报一个数字更能体现工程意识。
-
高质量微调数据集怎么构建,清洗只是第一层:先做基础清洗(去空样本、去无效与乱码样本、去重、剔除超长与截断样本);再往上做的是标注质量与分布——统一标注规范、多标一致性与仲裁、按业务分布采样(避免某一类样本占绝大多数)、难例挖掘(把线上判错的样本回灌)、以及正负样本配比。格式上按 SFT 要求组织(指令、输入、输出),必要时补少量思维链样本。面试官如果评价「这些还是比较基础的数据清洗」,可以顺着补充:数据质量的核心是三件事——标签是否一致、分布是否匹配线上、以及有没有针对 bad case 的迭代闭环(线上错 → 进训练集 → 回归验证),这三条才是模型能不能真的涨点的关键。
-
「专家经验的思考监督数据」对应的是思维链监督:只用指令遵循模型(输入直接映射到标签)很难学到业务专家的判断依据,尤其是标签本身有上下文依赖、需要多步推理的场景。做法是让模型先产出中间推理(依据了哪些字段、排除了哪些可能、为什么落到这个标签),再用这些推理过程做监督(可以用更强的模型蒸馏生成、也可以由业务专家写少量高质量样例),训练目标既包括最终标签正确,也包括推理过程合理。回答时补一句边界:推理链能提升可解释性与难例表现,但也可能引入「推理看起来合理、结论却错」的幻觉,所以推理链要配合规则校验和抽检,不能只看最终准确率。
-
强化学习里为什么需要辅助奖励,要答到优化层面:理论上只优化最终目标也能学到策略,但实际训练中奖励信号稀疏、探索空间大,容易陷入局部最优或长时间学不到东西。加场景相关的辅助奖励(比如与安全、舒适、合规相关的项)相当于给策略提供先验引导,提升样本效率与收敛稳定性,代价是可能把策略带偏(奖励设计不当会出现钻空子行为)。回答时给一套取舍逻辑:辅助奖励只做引导、权重随训练衰减,最终仍以主目标为评价标准;同时说明辅助项必须可度量、不可与主目标冲突;评价上看奖励曲线、学习效率与策略收敛情况。面试官追问「不能直接优化目标吗」,正面回答「可以,但那是理想情况,工程上几乎都需要辅助信号」比绕开更稳。
-
手撕「最大下降幅度」用一次遍历就能过:维护「截至当前位置的历史最大值」,向后遍历数组,用历史最大值减当前值更新答案,遇到更大的数就更新历史最大值,时间 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。题目特意强调「无固定规律、可能多次波动」,就是在排除「单调递减」的简化假设,所以要主动说明算法不依赖趋势、能处理多次起伏;写完后自己举一个先跌后涨再跌的例子走一遍。这类题面试官会一起验算甚至尝试举反例,边写边解释「为什么这样更新是正确的」比闷头敲代码更有效。 -
ZeRO 这类追问,答出「切什么」就够:ZeRO 是训练大模型时的显存优化方案,把原本每张卡都完整保存的状态切分到各卡上。ZeRO-1 切分优化器状态(Adam 的动量与方差,占显存大头),ZeRO-2 再加上梯度切分,ZeRO-3 进一步切分模型参数本身,需要时再通过通信把参数聚合起来。代价是通信量增加,因此要配合通信与计算重叠;再往前可以提到与张量并行、流水并行的组合(所谓 3D 并行)。被问到不懂的细节时,把「切分对象 + 省显存 + 换通信」这条主线说清,明确说没深入看过各阶段的具体实现,比硬编更安全。
-
AI Coding 的经验要讲成可复用的方法,而不是罗列工具:常见的落地场景是样板代码生成、接口与参数查阅、单元测试与文档生成、以及 Bug 定位的初步排查。经验上有几条:任务拆小、一次只改一处;要求遵循最小改动原则,明确不许动的范围;用固定的输出模板(问题定位、修改位置、修改前后状态)把每次协作结构化,便于自己复盘;判断上下文是否遗忘的信号是模型开始不守模板或重复犯错,这时开新窗口重新给上下文比继续纠正有效。定位 Bug 时先让 Agent 梳理问题、按可能性列出若干根因,自己判断最可疑的一条,再要求它深入验证并给修改方案——把 Agent 当协作者而不是答案来源,面试官通常认这套。