面试面经 · 第四范式
【第四范式】【Agent 开发】【暑期实习二面】面经(八股+大模型项目+手撕)
背景
海外一年制硕士,投递第四范式 Agent 开发暑期实习,简历偏 LLM 应用与后端混合方向,一面通过后约 5 天进入二面。二面时长约 60 分钟,面试官是 Agent 平台组的工程师,整体节奏偏工程落地,八股问得不深但会追着项目细节往下挖。
题目摘要
- Go 语言基础:
slice的底层结构与扩容机制,map并发读写为什么会 panic,sync.Map适用场景;defer的执行顺序与返回值陷阱。 - MySQL / Redis 八股:MySQL 聚簇索引与回表,
explain中type字段的等级;Redis 缓存穿透/击穿/雪崩的区别与各自解法,分布式锁用SETNX时为什么要带过期时间和唯一 value。 - RAG 项目深挖:文档切分策略怎么定的,召回阶段用的什么检索方式,如何评估召回质量,幻觉怎么压。
- Function Calling / 上下文管理:多轮对话里工具调用结果怎么回填,上下文超长怎么截断,工具描述写不好导致误调用怎么处理。
- 推理成本优化:线上 QPS 上来后 token 成本怎么控,有没有做缓存、模型分级、prompt 压缩。
- 手撕算法:给一个字符串数组,要求按字符出现频率对字符排序,频率相同按字典序,返回排序后的字符序列(本质是哈希计数 + 自定义排序,或桶排序)。关键思路:先统计频率,再按
(频率降序, 字符升序)排序;若要求 O(n) 可用频率桶从高到低收集。面试官要求手写并口述复杂度。
项目深挖
追问一:RAG 的切分和召回你是怎么设计的,效果不好时怎么定位问题?
参考回答方向:先讲切分不是拍脑袋,而是按文档类型分。结构化文档按标题层级切,长文本按语义段落 + 固定窗口重叠切,重叠是为了防止答案被切断。召回上如果只用向量检索,遇到专有名词、编号、代码符号会漏,所以补了 BM25 做混合检索,再用 rerank 模型精排。定位问题时把链路拆成「切分是否把答案切碎」「召回 top-k 里有没有正确答案」「有答案但生成没用好」三段,分别看召回命中率和最终回答准确率,避免一上来就调 prompt。
追问二:Function Calling 在多轮里怎么管理,工具调用失败或者模型乱调怎么办?
参考回答方向:工具调用结果以 tool role 的消息回填,保留 tool_call_id 做关联。上下文管理上,历史工具结果只保留最近若干轮,更早的做摘要压缩,避免 token 爆炸。模型乱调主要靠三件事:工具描述写清楚参数含义和边界、给必填参数做 schema 校验、对高风险工具加二次确认或白名单。调用失败时把错误信息结构化回填给模型,让它决定重试还是换工具,而不是直接抛异常中断对话。
追问三:推理成本你实际做过什么优化,效果怎么衡量?
参考回答方向:分三层。请求层做语义缓存,相似 query 直接命中;模型层做分级,简单意图走小模型,复杂推理才上大模型;prompt 层压缩冗余指令和 few-shot 示例,减少输入 token。衡量上不只看单次成本,要看「单位有效回答成本」,即总 token 花费除以成功解决的请求数,否则一味降本会把准确率也降下去。
准备建议
- 把项目里的每个数字都准备好:召回率、top-k、token 消耗、延迟、成本降幅,面试官一定会问「你怎么知道有效果」,答不出量化指标会被认为项目是跟着教程做的。
- 八股只背高频且能延伸的:Go 的 slice/map/defer、MySQL 索引与 explain、Redis 三兄弟和分布式锁,这几块能讲清原理 + 一个实际踩坑例子就够了,不用铺太广。
- 手撕题按题型刷:哈希计数 + 自定义排序、双指针、滑动窗口、二叉树遍历这几类覆盖大部分 Agent 岗手撕,练到能边写边讲复杂度,别只背题解。
结果
二面结束当天状态变为通过,3 天后收到 HR 约三面(交叉面)的通知。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。