面试面经 · 小鹏汽车
【小鹏汽车】【Agent 开发】【暑期实习一面】面经(八股+大模型项目+手撕)
小鹏汽车 Agent 开发 暑期实习一面面经
海外一年制硕士,主攻 LLM 应用方向,有一段 RAG 相关项目经历。整体面试时长约 70 分钟,节奏紧凑,面试官是 Agent 平台组的资深工程师,全程无闲聊,直接进入技术验证。
题目摘要
- Go 语言基础:goroutine 与 channel 的底层原理,GMP 模型简述,以及 slice 与 array 的区别(追问了 slice 扩容机制)。
- MySQL 八股:事务隔离级别、MVCC 实现原理,以及一条慢 SQL 的排查思路(explain 关键字重点考察)。
- Redis 八股:缓存穿透/击穿/雪崩的区别与解决方案,重点问了分布式锁的 Redlock 实现细节。
- RAG 项目深挖:围绕文档切分策略、embedding 模型选型、检索召回率优化展开,追问了 Function Calling 的 tool 定义与结果校验流程。
- 上下文管理:长对话场景下 token 超限的处理方案,以及多轮对话中历史信息的压缩策略。
- 手撕算法:合并 K 个升序链表(LeetCode 23 原题),要求给出两种解法并分析复杂度。
项目深挖
面试官对我的 Agent 项目非常感兴趣,连续追问了近 20 分钟,核心围绕三个方向:
追问一:RAG 检索效果不好时,你怎么定位问题?
参考回答:先拆链路。第一步检查切分质量,是否把语义完整的段落切碎了,导致向量检索召回碎片化内容——我用的是结构感知切分(按 markdown 标题层级切),对比过固定窗口切分,命中率提升约 15%。第二步检查 embedding 与查询语句的领域匹配度,如果业务术语多,通用 embedding 容易跑偏,可以考虑微调或者用领域词典做查询改写。第三步看 rerank 阶段,top-20 召回后必须接 rerank 模型,否则精度不够。
追问二:Function Calling 的 tool 定义和结果校验怎么做的?
参考回答:tool 定义严格遵循 JSON Schema,description 写清楚每个参数的语义和取值边界,避免模型传错参数。关键点是结果校验要做两层:第一层是格式校验,确保返回 JSON 可解析且参数类型正确;第二层是业务校验,比如调用天气 API 后检查返回的城市名是否与请求一致。如果校验失败,把错误信息回传给模型,让它重新生成 tool 调用——这比直接报错体验好很多。
追问三:多轮对话的上下文管理,你怎么控制 token 成本?
参考回答:我用了三层策略。第一层是滑动窗口,只保留最近 N 轮完整对话,更早的做摘要压缩;第二层是关键信息提取,把用户提到的实体、偏好、约束条件单独存到结构化槽位中,每轮对话动态注入;第三层是按需裁剪,某些工具调用的中间结果(比如大段 JSON)不进入历史,只在需要时重新查询。实测能把单轮 token 消耗降低 40% 左右。
准备建议
- Go 语言不要只看语法,要理解并发模型。面试官明显在考察你是否真的写过并发代码,建议手写几个 goroutine + channel 的生产者消费者模式,并理解 GMP 调度的基本流程。如果时间有限,优先掌握 slice 扩容、map 并发安全、defer 执行顺序这三个高频考点。
- Redis 八股要结合场景答。不要只背缓存穿透/击穿/雪崩的定义,要能说出针对你们项目的具体方案。比如缓存穿透可以用布隆过滤器,击穿可以用互斥锁或逻辑过期,雪崩可以加随机过期时间。分布式锁部分,Redlock 的争议点(时钟漂移、GC 停顿)也值得准备,面试官喜欢听你辩证分析。
- Agent 项目必须准备量化指标。面试官会追问"你怎么知道你的方案是有效的",提前准备好基线对比数据,比如 RAG 的 Recall@K 提升了多少、端到端准确率变化、响应延迟降低了多少。没有数据支撑的项目描述在面试官眼里等于没做。
结果反馈
一面通过,约 3 天后安排二面(技术面 + 交叉面连面)。整体感受是小鹏的 Agent 团队技术栈偏工程落地,对候选人的系统设计能力和项目细节要求较高,纯背八股很难过关。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。