Appearance
美团 2026 秋招技术方向笔试复盘
面试官提问清单
本次录屏前段包含 10 道单选题和 1 道编程题,后段主要是 AI Coding。按要求,本页完整整理单选题题干、选项和参考答案;AI Coding 只记录范围,不展开代码过程。
单选题
1. KMP 匹配效率
题目:采用 KMP 算法,对模式串 S 和主串 T 进行匹配,其中 S="aaaab"、T="abaaaabca"。设匹配成功过程中进行的字符间比较次数为 x,规定 x 与主串长度之比为匹配效率,求本次 KMP 匹配算法的效率。字符串下标从 1 开始,每次字符比较都计数,包含匹配和不匹配。
| 选项 | 内容 |
|---|---|
| A | 1 |
| B | 0.55 |
| C | 0.33 |
| D | 0.89 |
参考答案:D(0.89)。KMP 的比较序列可记为:首字符匹配、第二个字符失配并回退、随后连续匹配 a a a a b,共 8 次比较;主串长度为 9,因此效率为
2. 大模型预训练学习率调度
题目:下面关于大模型预训练中学习率调度(Learning Rate Schedule)的说法正确的是()。
| 选项 | 内容 |
|---|---|
| A | 余弦退火(Cosine Decay)在学习率降至 0 后会自动重启 |
| B | 当使用 Adam 优化器时,学习率对效果影响可以忽略 |
| C | 基于训练损失变化的动态调度(如 ReduceLROnPlateau)不适合预训练 |
| D | 线性 warmup 阶段的时间应占总训练步数的 50% 以上 |
参考答案:C。大模型预训练通常使用预先规划的 warmup 加衰减曲线;训练损失噪声大、评估周期长时,基于 plateau 的动态降学习率不稳定且难以与大规模训练配合。余弦退火本身不自动重启(重启是 cosine annealing warm restarts 的额外机制),Adam 仍然对基础学习率敏感,warmup 通常只占训练前期较小比例。
3. DPO 过度拒答
题目:对齐训练后,模型对敏感问题的拒答率上升,但也开始对正常问题“过度拒答”。更优先的修正是()。
| 选项 | 内容 |
|---|---|
| A | 补充可回答样本并做好拒答边界数据,拉回决策边界 |
| B | 把温度调高,让模型更敢回答从而降低拒答比例 |
| C | 提高拒答阈值,让模型更难触发拒答模板即可解决 |
| D | 把安全 system prompt 写得更短,减少模型受规则影响 |
参考答案:A。过度拒答是安全边界校准问题,应补充安全可答、边界和应拒样本,检查偏好数据与拒答标签;仅调温度或阈值会改变输出随机性,不能修复训练分布偏差。
4. 多 Agent 共享事实
题目:多 Agent 协作时,如果希望每个 Agent 都看到同一份“共享事实”,更常见的做法是()。
| 选项 | 内容 |
|---|---|
| A | 维护共享黑板/共享状态,由各 Agent 读取与写入 |
| B | 把 temperature 调高,让每个 Agent 自由发挥全局事实 |
| C | 给每个 Agent 不同 system prompt,让它们产生互补信息 |
| D | 让每个 Agent 各自维护记忆库,避免相互影响 |
参考答案:A。共享黑板(blackboard)或中心状态存储提供单一事实源;写入应有版本、权限和并发控制,避免多个 Agent 各自持有不可合并的事实副本。
5. GPT 系列模型架构
题目:下面关于 GPT 系列模型架构的说法正确的是()。
| 选项 | 内容 |
|---|---|
| A | GPT 采用双向编码器架构 |
| B | GPT 模型通常在小规模参数上表现最佳 |
| C | GPT 模型在训练时不使用位置编码 |
| D | GPT 采用解码器架构,适合生成式任务 |
参考答案:D。GPT 属于 decoder-only Transformer,使用因果自注意力预测下一个 token;生成任务天然符合其自回归结构。位置编码是序列建模所需信息,具体实现可以是绝对位置编码或 RoPE 等相对/旋转位置方案。
6. 生僻品牌名的词向量质量
题目:预训练商品标题模型时,生僻品牌名(如“璞璞”)词向量质量差,根治措施是()。
| 选项 | 内容 |
|---|---|
| A | 在输入层添加字符级 CNN 编码器 |
| B | 对低频词施加更高的初始化方差 |
| C | 在训练过程中对生僻词进行过采样 |
| D | 使用词干提取器将品牌名归一化为词根形式 |
参考答案:C。低频 token 获得的梯度更新不足,应通过数据清洗、覆盖更多真实上下文和适度过采样提升出现频率。字符/子词建模可以作为 OOV 或泛化补充,但不能替代对稀疏训练信号的处理;增大初始化方差也不会产生有效语义监督。
7. 子网地址计算
题目:主机网络地址为 240.210.43.56,子网掩码为 255.255.248.0,则子网地址为()。
| 选项 | 内容 |
|---|---|
| A | 240.210.43.0 |
| B | 255.255.40.0 |
| C | 240.210.43.56 |
| D | 240.210.40.0 |
参考答案:D。掩码第三字节 248 的块大小为 40;按位与结果为 240.210.40.0。
8. INT8 量化精度下降
题目:动态定价模型部署时,INT8 量化导致价格跳变异常,技术归因是()。
| 选项 | 内容 |
|---|---|
| A | 模型训练时的学习率过高 |
| B | 校准数据集未覆盖价格边界样本 |
| C | 量化感知训练使用了过多正则化 |
| D | 激活函数数值范围溢出 |
参考答案:B。校准或代表性数据没有覆盖长尾、边界和分布外附近的激活范围时,scale/zero-point 估计失真,INT8 舍入和截断会放大为输出跳变。应补齐代表性校准集,分别检查权重、激活的动态范围,并对敏感层采用更高精度或量化感知训练。
9. 单道处理机平均周转时间
题目:一台使用单道方式运行的处理机上有 5 个作业同时到达,每个作业计算时间平均为 1 小时,则平均周转时间是()。
| 选项 | 内容 |
|---|---|
| A | 2 小时 |
| B | 5 小时 |
| C | 15 小时 |
| D | 3 小时 |
参考答案:D。按先来先服务且作业同时到达,5 个作业完成时间依次为 1、2、3、4、5 小时,平均周转时间为
10. 二分查找比较次数
题目:对于有序序列 1, 3, 5, 7, 8, 20, 56, 77,采用折半查找查找 5,需要( )次查找。提示:mid=(low+high)/2,向下取整。
| 选项 | 内容 |
|---|---|
| A | 2 |
| B | 4 |
| C | 5 |
| D | 3 |
参考答案:D(3 次)。以闭区间下标 [0,7] 为例:mid=3 比较 7,缩到 [0,2];mid=1 比较 3,缩到 [2,2];mid=2 命中 5,共 3 次。做题时先明确边界定义,再逐次写出 mid 和新区间。
编程题
题目:给定长度为
; ; - 录屏中的默认模板为 Java ACM 模式,需从标准输入读取并输出结果。
由于所有元素均为正数且下标允许相等,最优解就是数组最大值的平方。一次扫描维护 max_value,使用 64 位整数计算 1e9 * 1e9 = 1e18;时间复杂度
AI Coding 范围
后段进入 AI Coding 题型,本页不展开其代码过程和逐条测试;只保留“后段存在 AI Coding,未纳入本次知识点复盘”的范围说明。
知识点回顾
KMP 的比较次数与 next 数组
KMP 的核心不是跳过所有比较,而是利用模式串自身的最长相等前后缀,在失配后移动模式串而不回退主串指针。计算题应明确:
i指向主串当前位置,j指向模式串当前位置;- 匹配时
i、j同时前进; - 失配时优先令
j=next[j],只有无法回退时才移动i; - 题目若说“每次字符比较计数”,回退后对同一主串字符再次比较也要计数。
匹配效率、比较次数、移动次数是不同指标,不能把
学习率调度
| 调度方式 | 典型特点 | 易错点 |
|---|---|---|
| Linear warmup | 从小学习率逐步升到目标值,缓解训练初期不稳定 | 通常是短阶段,不是训练步数的一半以上 |
| Cosine decay | 按预设曲线平滑衰减到目标下限 | 不自动重启;重启需额外的 warm-restart 机制 |
| Step decay | 到指定 epoch 或 step 后按比例下降 | 阶梯变化可能较突兀 |
| ReduceLROnPlateau | 监控指标长期无改善后降低学习率 | 指标噪声和评估间隔会使大规模预训练不稳定 |
Adam 会自适应调整梯度方向和单参数步长,但全局学习率仍决定更新尺度;优化器不能替代学习率调度和训练稳定性设计。
对齐训练与过度拒答
拒答策略至少要区分:明确有害请求、允许回答的普通请求、需要安全转化后回答的边界请求。修正过度拒答时,应检查偏好数据中的正负样本比例、拒答模板覆盖面、分类阈值和安全策略是否过宽;温度只改变采样随机性,不能修复决策边界。
多 Agent 的共享状态
共享事实应有单一权威状态,而不是让每个 Agent 各自维护一份记忆。工程上需要继续定义:
- 状态结构和字段来源;
- 谁可以写入、谁只读;
- 版本号或时间戳如何解决并发覆盖;
- 写入是否需要事务、审计和回滚;
- Agent 读取的是快照还是实时状态。
“共享黑板”解决事实可见性,但不自动解决冲突、权限和一致性。
GPT 与 Transformer 架构
GPT 的 decoder-only 结构使用因果 mask,使位置
低频词、子词与采样
生僻品牌名的问题通常来自 token 出现次数少、上下文单一和分词切分不合理。处理顺序可以是:
- 检查分词器是否把品牌名切成过长或无意义片段;
- 补充真实标题、别名和上下文样本;
- 对低频但重要的样本做有上限的过采样,避免破坏整体分布;
- 用字符/子词特征增强未登录词泛化;
- 用下游召回、分类和生成指标验证,而不是只看 embedding 范数。
IPv4 子网计算
子网地址是 IP 与掩码按位与:
text
network = ip & mask非整字节掩码可按块大小计算。255.255.248.0 是 /21,第三字节每 8 个为一个子网块:0–7、8–15、...、40–47,所以 43 落在 40 块。
量化校准
对称量化常用 scale 将浮点范围映射到整数范围;非对称量化还需 zero-point。校准集应覆盖线上输入分布、长尾和边界激活。排查精度异常时分别看:
- 权重是否存在离群值;
- 激活范围是否被少量极值拉宽;
- 截断是否集中在某些层;
- 输出对相邻输入是否出现非业务预期的离散跳变。
不要把“训练学习率过高”和“部署量化误差”混为同一故障链;应先复现 FP32、FP16、INT8 三个版本的差异。
操作系统调度中的周转时间
对同时到达、单处理机、不可抢占的作业,完成时刻就是前缀处理时间之和:
text
周转时间 = 完成时刻 - 到达时刻
平均周转时间 = 所有作业周转时间之和 / 作业数如果题目改问带权周转时间、响应时间或平均等待时间,公式和答案都会变化,必须先识别指标名称。
二分查找边界
常用两种区间约定:
| 区间 | 初始右边界 | 循环条件 | 左移/右移 |
|---|---|---|---|
[left, right] | n-1 | left <= right | right=mid-1 或 left=mid+1 |
[left, right) | n | left < right | right=mid 或 left=mid+1 |
同一道题如果混用两种约定,就会出现少算、越界或死循环。计算比较次数时把每次访问的元素写出来,比凭“对数复杂度”估算可靠。
本次回答中需要改进的地方
客观题复习重点
- KMP 需要把失配回退后的再次比较计入次数,不能只数匹配字符。
- 学习率调度要区分 cosine decay 与 warm restart,并牢记 Adam 仍依赖合理的基础学习率。
- DPO/安全对齐遇到过度拒答,应从数据和边界校准入手,而不是只调 temperature。
- 多 Agent 共享事实要设计单一状态源、版本和写权限,不能依赖各自记忆库。
- 量化问题要优先检查代表性校准集和激活范围,分清训练误差与部署误差。
- 子网题先转为掩码块大小;调度题先确认周转时间、等待时间还是响应时间;二分题先固定区间定义。
编程题复习重点
这道题的关键陷阱是“下标可以相等”和 1e18 的结果范围。看到正数且允许重复选择时可直接取最大值平方;若忽略下标条件或使用 32 位 int,会分别导致逻辑错误和整数溢出。