面试面经 · 得物
【得物】【大模型开发】【暑期实习二面】面经(八股+大模型项目+手撕)
得物 大模型开发 暑期实习二面
背景:海外一年制硕士,一段中小厂 NLP 算法实习,简历里有两个大模型相关项目(一个 RAG 问答,一个 Agent 工具调用),无顶会。
题目摘要
- 编程语言基础(Go):goroutine 与 channel 的底层原理,GMP 模型简述,如何避免 goroutine 泄漏。追问:channel 无缓冲与有缓冲在用法上的本质区别。
- MySQL/Redis 八股:MySQL 为什么选择 B+ 树作为索引数据结构?最左前缀原则在联合索引 (a, b, c) 下,查询条件
where b=1 and a=2能否命中索引?Redis 持久化 RDB 与 AOF 的区别与适用场景,AOF 重写机制了解吗? - 大模型项目深挖(RAG):基于 LangChain 搭建的文档问答系统,深挖点集中在检索质量优化、上下文窗口管理、推理成本控制三个方向。
- 大模型项目深挖(Agent):Function Calling 的实现原理,如何设计工具描述让模型更稳定地触发调用?多轮对话中工具返回结果过长如何处理?
- 手撕算法题:给定一个字符串
s,找出其中不含有重复字符的最长子串的长度(LeetCode 3)。要求先讲思路再写代码,写完后面试官追问了时间复杂度和能否用 O(1) 空间优化。
项目深挖
追问 1:你的 RAG 项目里,检索召回率不高、答案经常答非所问,你怎么定位和解决的?
参考回答方向:先分模块排查——是 query 理解的问题(口语化表达 vs 文档书面语不匹配),还是 chunk 切分导致的语义断裂,还是 embedding 模型本身区分度不够。我的解决路径是:① 对 query 做改写,用 LLM 将口语化问题转成包含关键实体和限定条件的检索式表达;② 调整 chunk 策略,从固定 500 字改成按标题层级切分,并在 chunk 之间保留 10% 重叠;③ 引入 hybrid search(BM25 + 向量检索),用 RRF 做结果融合。最后用一套人工标注的 50 条测试集做回归,召回率从 68% 提到 82%。这里重点展示的是系统性排查思路,而不是背答案。
追问 2:你的 Agent 项目里,模型频繁调用错误工具或参数格式不对,你怎么处理的?
参考回答方向:分三层解决。第一层是工具描述工程化——每个工具的 description 里写清楚“什么时候用”和“什么时候不用”,参数用 JSON Schema 严格约束类型和枚举值,并在 description 里给出示例值。第二层是加一层规则校验,模型返回的 tool_call 先做 schema 校验,不合法就带错误信息重试一次,而不是直接报错。第三层是设计了一个轻量级的 few-shot 示例库,根据用户意图匹配相似的示例拼进 prompt。效果上,工具调用成功率从 76% 提到 91%。面试官追问“为什么不用微调”,我回答:数据量不够大且工具列表会动态扩展,微调性价比低,prompt 工程 + 规则兜底在现阶段更可控。
追问 3:上下文管理你具体怎么做的?成本怎么算的?
参考回答方向:先说我的方案——对话历史做滑动窗口 + 关键信息抽取。滑动窗口保留最近 3 轮完整对话,更早的历史用 LLM 抽取成“用户偏好 + 已确认事实”的结构化摘要存入上下文。长文档场景下,RAG 检索出的 top-k 片段按相关度排序后,用重排模型压缩到 3-4 段。成本方面,我按 token 统计了单次请求的平均消耗,发现 60% 的 token 花在系统提示词和 few-shot 示例上,于是做了动态 prompt——简单 query 走短模板,复杂任务才加载完整示例。整体推理成本降了约 35%。最后补充了一句:这是在效果不明显下降的前提下做的优化,有 A/B 数据支撑。
准备建议
- 项目深挖别只准备“做了什么”,准备“为什么这么做”和“效果怎么量化”。面试官每个追问都在逼你做技术选型的论证,比如“为什么用 RRF 而不是直接加权”“为什么重试一次而不是两次”。建议把简历里每个项目的关键决策点列出来,每个点准备 1-2 个备选方案和放弃理由,并准备好效果数据(哪怕是自己标注的小样本)。没有数据的项目在二面基本撑不过三个追问。
- 算法题刷到“能讲”而非“能写”。二面的算法题大概率是 medium 偏下,但面试官会追问优化空间和边界条件。建议把 LeetCode 热题 HOT 100 里的字符串、双指针、滑动窗口类题目按“题意转化 → 暴力解 → 优化点 → 复杂度”四步法过一遍,每道题控制在 15 分钟内讲完思路 + 写完代码。注意手撕时先和面试官确认输入输出约束,不要闷头写。
- 八股要结合项目场景记忆。比如索引失效的问题,不要只背“违反最左前缀会失效”,要能结合自己项目里的查询场景说“我在 xx 表上建了联合索引,但因为查询条件顺序问题导致没走索引,后来怎么调整的”。Redis 持久化同理,结合“缓存要不要重启恢复”这种实际场景来理解 RDB 和 AOF 的取舍。大模型相关的八股(如 temperature 的作用、top_p 和 temperature 能否同时调)也过一遍,二面容易被冷不丁问到。
结果反馈
一面通过后约 5 天收到二面邀请,整体面试节奏偏快,面试官会打断并追问细节,但问题都在简历项目射程内,保持逻辑清晰比堆砌术语更重要。目前等三面通知中。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。