面试面经 · 拼多多
【拼多多】【大模型开发】【暑期实习一面】面经(八股+大模型项目+手撕)
海外一年制硕士,投递拼多多大模型开发暑期实习,base 上海,面试时长约 70 分钟,一轮技术面(后续还有交叉面和 HR 面)。
题目摘要
- Go 语言基础:slice 的底层结构、扩容规则,以及
append在函数传参时为什么"改了又好像没改";顺带问了map是否并发安全、怎么实现一个并发安全的 map。 - MySQL 八股:聚簇索引与二级索引的区别,回表是怎么发生的;
explain里type字段从好到坏的排序;一条慢 SQL 的排查思路。 - Redis 八股:缓存穿透/击穿/雪崩的区别与对应方案;Redis 分布式锁的坑(锁过期、误删、续期);为什么 Redis 单线程还能快。
- RAG 项目深挖:文档切分策略怎么定的、向量检索召回率怎么评估、rerank 模型加在哪一步、幻觉怎么压。
- Agent / Function Calling:工具调用的 schema 怎么设计、多轮工具调用怎么管理上下文、失败重试和超时怎么处理。
- 手撕算法:LRU 缓存。题意是设计一个容量为
capacity的缓存,支持get(key)和put(key, value),两者都要求 O(1),超出容量时淘汰最久未使用的键。关键思路是哈希表 + 双向链表:哈希表存 key 到链表节点的映射,双向链表维护访问顺序,头部是最近使用、尾部是最久未使用,get命中后把节点移到头部,put时若已存在则更新并移到头部,若超容则删除尾部节点并同步删哈希表。
项目深挖
简历上写了两个项目:一个企业知识库 RAG 问答,一个带工具调用的数据分析 Agent。面试官几乎没问"你做了什么",全程在追问"为什么这么做、换个做法行不行"。
追问一:RAG 的切分和召回,你怎么证明它有效?
参考回答方向:先说清切分粒度是按语义段落 + 固定长度兜底,chunk size 大概 500 token、overlap 50,原因是太短丢上下文、太长稀释语义。然后重点讲评估——不能只说"感觉效果好",要有一套离线评估集:人工标注 100~200 条 query 对应的正确 chunk,算 Recall@k 和 MRR。上线后再看端到端指标,比如答案命中率、用户追问率。面试官接着会问"召回率低怎么办",可以答:先分层定位是 embedding 模型不行、切分把答案切断了、还是 query 和文档语义空间不匹配;对应手段是换更强的 embedding、调整切分、加 query 改写(HyDE / 多查询扩展)、加 rerank。
追问二:rerank 加在召回之后,代价是什么?
参考回答方向:承认 rerank 会显著增加延迟和算力,所以通常只对 top-20 到 top-50 做精排,而不是全量。要能说出 cross-encoder 比 bi-encoder 准但慢的原因——cross-encoder 把 query 和文档拼在一起过模型,能建模交互,但没法预计算,所以只能小批量跑。如果面试官问"延迟敏感怎么办",可以答:控制候选数量、用蒸馏后的小 rerank 模型、或者只在置信度低时才触发 rerank。
追问三:Agent 多轮工具调用,上下文怎么管?
参考回答方向:工具返回结果往往很长,全塞进上下文会爆 token 也贵。做法是:对工具输出做摘要或只保留关键字段,历史轮次做滑动窗口 + 摘要压缩,把 system prompt 和工具 schema 固定在前面。还要讲失败处理——工具调用超时设上限、失败重试有次数上限、解析不出合法 JSON 时怎么兜底(比如让模型重新生成或降级到规则解析)。面试官可能追问"怎么控制推理成本",可以答:小模型做意图路由和简单工具调用、大模型只处理复杂推理;缓存高频 query 的结果;限制最大工具调用轮数。
准备建议
- 八股不要背结论,要背因果链。比如 MySQL 回表,别只背"二级索引查不到数据要回主键索引再查一次",要能顺着 B+ 树讲清楚为什么二级索引叶子节点存的是主键值、为什么这样设计(减少二级索引体积、保证一致性),以及什么时候可以避免回表(覆盖索引)。面试官很爱在结论后追一句"为什么"。
- 项目准备一份"被追问清单"。把每个技术选型都写成"我选了 A,因为 B,代价是 C,如果换成 D 会怎样"。RAG 至少准备切分、embedding、检索、rerank、生成、评估六个环节的取舍;Agent 准备工具设计、上下文管理、失败处理、成本控制四块。面试时被问到没想过的点,先讲你的判断依据,再承认边界,别硬编。
- 手撕题按"高频 + 变形"练。LRU 这类题要练到能默写且边界不出错(容量为 1、重复 put、get 不存在的 key)。同类的还有 LFU、设计限流器、Top-K、合并区间、二叉树层序。练的时候用 Go 或 Java 手写,别用 IDE 补全,模拟白板或共享文档的环境,写完自己口述一遍复杂度。
一面通过,3 天后约了交叉面。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。