Skip to content

美团 2026 秋招技术方向笔试复盘 ​

面试官提问清单 ​

本次录屏前段包含 10 道单选题和 1 道编程题,后段主要是 AI Coding。按要求,本页完整整理单选题题干、选项和参考答案;AI Coding 只记录范围,不展开代码过程。

单选题 ​

1. KMP 匹配效率 ​

题目:采用 KMP 算法,对模式串 S 和主串 T 进行匹配,其中 S="aaaab"、T="abaaaabca"。设匹配成功过程中进行的字符间比较次数为 x,规定 x 与主串长度之比为匹配效率,求本次 KMP 匹配算法的效率。字符串下标从 1 开始,每次字符比较都计数,包含匹配和不匹配。

选项内容
A1
B0.55
C0.33
D0.89

参考答案:D(0.89)。KMP 的比较序列可记为:首字符匹配、第二个字符失配并回退、随后连续匹配 a a a a b,共 8 次比较;主串长度为 9,因此效率为 8/9≈0.89。

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 系列模型架构的说法正确的是()。

选项内容
AGPT 采用双向编码器架构
BGPT 模型通常在小规模参数上表现最佳
CGPT 模型在训练时不使用位置编码
DGPT 采用解码器架构,适合生成式任务

参考答案: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,则子网地址为()。

选项内容
A240.210.43.0
B255.255.40.0
C240.210.43.56
D240.210.40.0

参考答案:D。掩码第三字节 248 的块大小为 256−248=8,第三字节 43 所在块的起点是 40;按位与结果为 240.210.40.0。

8. INT8 量化精度下降 ​

题目:动态定价模型部署时,INT8 量化导致价格跳变异常,技术归因是()。

选项内容
A模型训练时的学习率过高
B校准数据集未覆盖价格边界样本
C量化感知训练使用了过多正则化
D激活函数数值范围溢出

参考答案:B。校准或代表性数据没有覆盖长尾、边界和分布外附近的激活范围时,scale/zero-point 估计失真,INT8 舍入和截断会放大为输出跳变。应补齐代表性校准集,分别检查权重、激活的动态范围,并对敏感层采用更高精度或量化感知训练。

9. 单道处理机平均周转时间 ​

题目:一台使用单道方式运行的处理机上有 5 个作业同时到达,每个作业计算时间平均为 1 小时,则平均周转时间是()。

选项内容
A2 小时
B5 小时
C15 小时
D3 小时

参考答案:D。按先来先服务且作业同时到达,5 个作业完成时间依次为 1、2、3、4、5 小时,平均周转时间为 (1+2+3+4+5)/5=3 小时。周转时间是“完成时刻−到达时刻”,不要误算成平均等待时间(2 小时)或总周转时间(15 小时)。

10. 二分查找比较次数 ​

题目:对于有序序列 1, 3, 5, 7, 8, 20, 56, 77,采用折半查找查找 5,需要( )次查找。提示:mid=(low+high)/2,向下取整。

选项内容
A2
B4
C5
D3

参考答案:D(3 次)。以闭区间下标 [0,7] 为例:mid=3 比较 7,缩到 [0,2];mid=1 比较 3,缩到 [2,2];mid=2 命中 5,共 3 次。做题时先明确边界定义,再逐次写出 mid 和新区间。

编程题 ​

题目:给定长度为 n 的正整数数组,从数组中任选两个数 ai 和 aj(下标可以相等),求乘积最大值。

  • 2≤n≤1000;
  • 1≤ai≤109;
  • 录屏中的默认模板为 Java ACM 模式,需从标准输入读取并输出结果。

由于所有元素均为正数且下标允许相等,最优解就是数组最大值的平方。一次扫描维护 max_value,使用 64 位整数计算 1e9 * 1e9 = 1e18;时间复杂度 O(n),空间复杂度 O(1)。如果题目改为下标必须不同,则应维护最大值和次大值,而不能直接平方同一元素。

AI Coding 范围 ​

后段进入 AI Coding 题型,本页不展开其代码过程和逐条测试;只保留“后段存在 AI Coding,未纳入本次知识点复盘”的范围说明。

知识点回顾 ​

KMP 的比较次数与 next 数组 ​

KMP 的核心不是跳过所有比较,而是利用模式串自身的最长相等前后缀,在失配后移动模式串而不回退主串指针。计算题应明确:

  1. i 指向主串当前位置,j 指向模式串当前位置;
  2. 匹配时 i、j 同时前进;
  3. 失配时优先令 j=next[j],只有无法回退时才移动 i;
  4. 题目若说“每次字符比较计数”,回退后对同一主串字符再次比较也要计数。

匹配效率、比较次数、移动次数是不同指标,不能把 O(n+m) 的复杂度直接当成实际比较次数。

学习率调度 ​

调度方式典型特点易错点
Linear warmup从小学习率逐步升到目标值,缓解训练初期不稳定通常是短阶段,不是训练步数的一半以上
Cosine decay按预设曲线平滑衰减到目标下限不自动重启;重启需额外的 warm-restart 机制
Step decay到指定 epoch 或 step 后按比例下降阶梯变化可能较突兀
ReduceLROnPlateau监控指标长期无改善后降低学习率指标噪声和评估间隔会使大规模预训练不稳定

Adam 会自适应调整梯度方向和单参数步长,但全局学习率仍决定更新尺度;优化器不能替代学习率调度和训练稳定性设计。

对齐训练与过度拒答 ​

拒答策略至少要区分:明确有害请求、允许回答的普通请求、需要安全转化后回答的边界请求。修正过度拒答时,应检查偏好数据中的正负样本比例、拒答模板覆盖面、分类阈值和安全策略是否过宽;温度只改变采样随机性,不能修复决策边界。

多 Agent 的共享状态 ​

共享事实应有单一权威状态,而不是让每个 Agent 各自维护一份记忆。工程上需要继续定义:

  • 状态结构和字段来源;
  • 谁可以写入、谁只读;
  • 版本号或时间戳如何解决并发覆盖;
  • 写入是否需要事务、审计和回滚;
  • Agent 读取的是快照还是实时状态。

“共享黑板”解决事实可见性,但不自动解决冲突、权限和一致性。

GPT 与 Transformer 架构 ​

GPT 的 decoder-only 结构使用因果 mask,使位置 t 的输出只能关注不晚于 t 的 token。训练时进行 next-token prediction,推理时将已生成 token 追加回上下文。双向 encoder 更适合 BERT 类理解任务;encoder-decoder 适合输入到输出的条件生成任务。

低频词、子词与采样 ​

生僻品牌名的问题通常来自 token 出现次数少、上下文单一和分词切分不合理。处理顺序可以是:

  1. 检查分词器是否把品牌名切成过长或无意义片段;
  2. 补充真实标题、别名和上下文样本;
  3. 对低频但重要的样本做有上限的过采样,避免破坏整体分布;
  4. 用字符/子词特征增强未登录词泛化;
  5. 用下游召回、分类和生成指标验证,而不是只看 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-1left <= rightright=mid-1 或 left=mid+1
[left, right)nleft < rightright=mid 或 left=mid+1

同一道题如果混用两种约定,就会出现少算、越界或死循环。计算比较次数时把每次访问的元素写出来,比凭“对数复杂度”估算可靠。

本次回答中需要改进的地方 ​

客观题复习重点 ​

  • KMP 需要把失配回退后的再次比较计入次数,不能只数匹配字符。
  • 学习率调度要区分 cosine decay 与 warm restart,并牢记 Adam 仍依赖合理的基础学习率。
  • DPO/安全对齐遇到过度拒答,应从数据和边界校准入手,而不是只调 temperature。
  • 多 Agent 共享事实要设计单一状态源、版本和写权限,不能依赖各自记忆库。
  • 量化问题要优先检查代表性校准集和激活范围,分清训练误差与部署误差。
  • 子网题先转为掩码块大小;调度题先确认周转时间、等待时间还是响应时间;二分题先固定区间定义。

编程题复习重点 ​

这道题的关键陷阱是“下标可以相等”和 1e18 的结果范围。看到正数且允许重复选择时可直接取最大值平方;若忽略下标条件或使用 32 位 int,会分别导致逻辑错误和整数溢出。

使用 Markdown 与 VitePress 构建