面试面经 · 寒武纪
【寒武纪】【Agent 开发】【暑期实习一面】面经(八股+大模型项目+手撕)
背景
海外一年制硕士,投递寒武纪 Agent 开发暑期实习,岗位偏应用层(RAG / Tool Use / 推理链路优化),一面技术面约 60 分钟,面试官是组内一线工程师。
题目摘要
- Go 语言基础:
slice的底层结构与扩容规则、map是否并发安全、defer的执行顺序与闭包变量捕获、channel有缓冲/无缓冲的区别 - MySQL:聚簇索引与二级索引的回表过程、
EXPLAIN中type字段的取值含义、事务隔离级别与 MVCC 如何避免幻读 - Redis:缓存穿透/击穿/雪崩的区别与各自解法、
ZSet底层跳表结构、分布式锁的续期问题 - Agent / RAG 项目深挖:RAG 召回率怎么评估、Function Calling 的 schema 设计与失败重试、多轮对话的上下文裁剪策略、推理成本优化的具体手段
- 手撕算法:LRU 缓存(LeetCode 146),要求 O(1) 的
get与put
手撕题题意与关键思路
题意:设计一个 LRU(最近最少使用)缓存,容量为 capacity,实现 get(key) 和 put(key, value),两者都要求平均 O(1)。当容量超限时,淘汰最久未使用的键。
关键思路:哈希表 + 双向链表。哈希表存 key -> 链表节点指针,保证 O(1) 定位;双向链表维护访问顺序,头部是最近使用、尾部是最久未使用。get 命中后把节点移到头部;put 若 key 已存在则更新值并移到头部,若不存在则新建节点插到头部,超容量时删掉尾节点并同步从哈希表移除。注意用哨兵头尾节点(dummy head/tail)省掉大量边界判断,这是写对且写快的关键。面试官额外追问了「如果并发访问怎么办」,回答方向是加锁分段或直接用 sync.Map + 锁保护链表,并说明锁粒度对吞吐的影响。
项目深挖
我简历上写了一个基于 RAG 的企业知识库问答 Agent,面试官基本围绕它连问了三个方向。
追问一:你怎么衡量 RAG 的召回质量?光看最终回答对不对不够吧。
参考回答方向:分两层评估。检索层用 Recall@K 和 MRR,需要先构造一批「问题-标准答案片段」的评测集,看正确片段有没有进 Top-K;生成层再单独评 faithfulness(回答是否忠于检索内容)和 answer relevance。工程上我会把检索命中的 chunk 和最终回答一起打日志,人工抽检 bad case,定位是「没召回」还是「召回了但模型没用上」——这两类问题的修法完全不同,前者调 embedding / 切分策略,后者调 prompt 或 rerank。
追问二:Function Calling 里模型返回的参数格式不对、或者调了个不存在的函数,你怎么处理?
参考回答方向:三层兜底。第一层在 schema 层面把参数约束写死(枚举、必填、类型),用严格的 JSON Schema 降低模型乱填概率;第二层做校验,解析失败或字段缺失时不直接抛错,而是把校验错误信息回灌给模型让它重试,设最大重试次数(比如 2 次)避免死循环;第三层是白名单,函数名不在注册表里直接拦截并返回可用函数列表。核心思想是「把模型的输出当成不可信输入」。
追问三:多轮对话上下文越来越长,推理成本怎么压?
参考回答方向:几个手段组合。一是滑动窗口 + 摘要,近期对话保留原文,早期对话压缩成摘要;二是对历史消息做语义去重和裁剪,比如重复的寒暄直接丢;三是把稳定的系统提示和工具定义放到 prompt 前缀,利用 KV Cache 复用,减少重复计算;四是简单意图用便宜的小模型、复杂推理才路由到大模型。回答时要能说出「哪部分省的是 token 钱、哪部分省的是延迟」,面试官明显在意这个区分。
准备建议
- 八股按「会被追问的第二层」准备,而不是背结论。比如背「Redis 缓存穿透用布隆过滤器」没用,要能接着答布隆过滤器的误判率怎么算、删除 key 时布隆过滤器没法删怎么办。寒武纪这类偏系统的团队,面试官习惯往下挖一层,准备时对每个八股点自问「然后呢」。
- 把项目里的每个技术选型都准备一个「为什么不用另一个」的答案。比如「为什么用向量检索不用关键词检索」「为什么 rerank 用这个模型」,面试官高频问对比。回答时给出你当时的约束条件(数据量、延迟要求、成本),比单纯说「效果好」有说服力得多。
- 手撕题限时练,重点练「一次写对」。LRU 这类题思路都会,但白板上写双向链表容易在指针操作和边界上翻车。建议用手机计时 15 分钟,不开 IDE 补全,手写或纯文本敲,写完自己走一遍
capacity=1、重复 put 同一个 key 这些边界用例。
结果
一面通过,3 天后约了二面(交叉面,偏系统设计)。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。