👔面试官:(翻开简历)「你之前写了五年 Go 后端,现在面我们 AI 应用开发,那你做的 Agent 怎么保证它不自己跑飞?」
🙋♂️我:(心里咯噔一下)「跑飞」这词太狠了,但确实是生产里最怕的事。我深吸一口气,把压箱底的几道防线甩了出去。
兄弟们,见字如面,我是王中阳。
今天这篇不是我编的。是咱们一个老学员,写了五年 Go 后端、今年硬转 AI 应用开发,面字节 AI 应用开发岗的真实复盘。整场面试就三条线:Agent 架构、RAG 工程化、系统稳定性。面试官不考你背概念,专挑你落地里的坑问。
我让这个学员把每一题都按「面试官怎么问 → 怎么答 → 阳哥点评」拆开写。下面 12 道题,一道一道来。照着准备,比刷一百道八股管用。
一、Agent 怎么不跑飞,核心模块怎么拆 💡
面试官怎么问:你做的 Agent,怎么保证它不会自己越界、胡乱调工具、或者陷入死循环?
怎么答:先说清楚我对 Agent 的理解,它和 chatbot 的本质区别就一句话。
chatbot 是「你问我答」,一锤子买卖。Agent 是「能自己决定调什么工具、执行、看结果、再决定下一步」的循环系统。所以它必须被框在一个安全的边界里,我一般上四道防线:
- 能力边界:System Prompt 里写死「你能调哪些工具、绝对不能碰什么」。比如不能执行高危写操作、不能泄露密钥。
- 决策准则:什么场景调哪个工具,写明确规则,别让模型自由发挥。
- 终止条件:最大轮次(我一般设 10 轮)+ 模型主动输出 finish 信号,到顶必须停。
- 执行兜底:工具调用失败,让模型看到错误自己决定重试、换策略还是降级,而不是无限重试烧钱。
自主性是双刃剑。给太多权,模型可能做出不可预期的操作;给太少,又退化成 chatbot。工程挑战就在设计这个边界。
阳哥点评:加分项是你能说出「安全边界」这四个字,而不只是罗列组件。坑在于很多人把 Agent 当成调 API 的壳,面试官一追问边界和终止条件就露怯。
二、Tool 怎么设计才稳 💡
面试官怎么问:设计 Tool 你遵循哪些原则?入参 Schema 和错误码体系怎么定?
怎么答:Tool 设计我抓三个原则:单一职责、入参强约束、错误可恢复。
什么样的能力该抽成 Tool?一个动词、一个明确副作用,就值得成为一个 Tool。比如「查订单」「创建退货单」,不要搞一个「处理售后」的大杂烩。
入参 Schema 我用 JSON Schema 写死字段类型和必填项,让模型没空子钻。错误码我专门做一套枚举,而不是只抛一个 error string:
// Tool 统一返回结构
type ToolResult struct {
Code int `json:"code"` // 0=成功 非零=业务错误
Message string `json:"message"` // 人读错误信息
Data any `json:"data"` // 业务数据
Retryable bool `json:"retryable"` // 是否可重试
}
// 错误码体系(按域分段,避免和 HTTP 码混)
const (
ErrParamInvalid = 1001 // 入参校验失败,不可重试
ErrUpstreamTimeout = 2001 // 上游超时,可重试
ErrUpstreamBadData = 2002 // 上游返回脏数据,不可重试
)
最关键的一条:返回的 error 必须带 retryable 标记,Agent 循环才知道该重试还是该降级。这是生产稳定性里最值钱的设计。
阳哥点评:加分项是错误码带「可重试」语义,坑是很多人 Tool 一失败就让模型无脑重试三次,结果一个注定失败的请求烧了十几刀还让用户等两分钟。
三、Memory 分几类,怎么存怎么清 💡
面试官怎么问:Memory 一般分为哪几类?短期和长期记忆工程上怎么存储、过期清理、去重?
怎么答:我按时间维度分三层:
| 层级 | 存什么 | 存储介质 | 生命周期 |
|---|---|---|---|
| 上下文窗口内 | 最近 3 轮原文 | 直接拼进 prompt | 本轮对话 |
| 短期记忆 | 近期对话摘要 | KV 存储(Redis) | 按 TTL 过期 |
| 长期记忆 | 用户画像、历史知识 | 向量库(按 chunk 存) | 持久,定期去重 |
清理和去重我这么干:短期记忆设 TTL 自动过期;长期记忆入库前先算内容 hash,重复 chunk 直接跳过,避免向量库膨胀和召回噪声。
有个实战细节:用户说「我叫小王,做电商」,这句话要写进长期记忆,但下轮他又说一遍,就得靠 hash 去重,不然召回一堆重复废话。
阳哥点评:加分项是你能说出「长期记忆也要去重」,坑是很多人把万轮对话全塞进上下文,context 直接爆掉,token 烧穿还答非所问。
四、ReAct 和 Plan-and-Execute 怎么选 💡
面试官怎么问:ReAct 和 Plan-and-Execute 分别适合什么场景?怎么防 Agent 陷入无限循环、多个 Agent 互相甩锅?
怎么答:本质区别就四个字:边想边干 vs 先想后干。
- ReAct:适合任务路径不确定、要边看结果边调。比如「帮我挑个性价比高的显示器」,搜一轮看结果再决定筛选条件。灵活,但容易跑偏。
- Plan-and-Execute:适合步骤清晰、依赖明确的确定性任务。比如「分析上周销售数据出报告」,步骤固定:查数据、分析、写报告。省 token、可控。
防循环我上三招:最大轮次硬上限、模型主动 finish 信号、工具失败最多重试 1 次就降级。
防甩锅是多 Agent 的坑,靠任务归属唯一 + 状态共享:每个子任务明确认领人,结果写进共享状态,没人认领的任务有超时兜底自动回收,不让它在 Agent 之间空转。
阳哥点评:加分项是你能点出「生产级一般混着用,大步骤 Plan、子步骤 ReAct」。坑是有人吹 ReAct 万能,结果一个三步任务跑了十二轮,没用还烧钱。
五、多 Agent 协作怎么设计 💡
面试官怎么问:要搭一套多 Agent 协作系统,整体怎么设计?Agent 之间通信和共享状态怎么落地?
怎么答:多 Agent 我按「角色分工 + 消息总线 + 共享黑板」来搭。
- 调度 Agent:负责把用户意图拆成子任务,路由给专职 Agent(检索 Agent、写代码 Agent、审核 Agent)。
- 通信机制:Agent 之间不直接耦合,走消息总线(我用 Kafka 或内部队列),发任务、收结果都是消息。
- 共享状态:落一个「黑板」(共享 KV 或短期记忆库),谁干到哪了、产出了什么,都写上去,别的 Agent 来读,避免各自为战。
关键点:任务要有唯一 ID 和状态机(pending / doing / done / failed),失败的任务由调度 Agent 决定重试还是换人,绝不让它悬空。
阳哥点评:加分项是你用「消息总线解耦 + 黑板共享状态」代替硬编码调用链。坑是新手爱把 Agent 写成互相直接函数调用,一扩展开就成毛线团,谁调谁都理不清。
六、把 RAG 从入库到生成完整讲一遍 💡
面试官怎么问:请完整讲一遍 RAG 从文档入库到生成答案的全流程。
怎么答:RAG 我把全流程拆成两条线:离线入库和在线问答。
离线入库:
- 文档解析:PDF、Word 转 Markdown,表格和公式要单独处理(这是高频痛点)。
- 切分:按章节或固定长度切块,带重叠区间。
- 向量化:用 Embedding 模型把 chunk 转向量。
- 入库:向量写向量库,原文和元数据写关系库,一一对应。
在线问答:
- 用户提问 → 向量化。
- 检索:向量召回 topK,必要时混合关键词召回。
- 重排:Rerank 模型把最相关的结果顶上来。
- 拼上下文:把 top 结果塞进 prompt。
- LLM 生成:带引用来源,降低幻觉。
整套链路最怕「文档更新就全量重建」,正确做法是 hash 检测变更、增量先删后增。
阳哥点评:加分项是你能把离线和在线分开讲,还提到「增量更新」。坑是很多人背完流程就完事,面试官一问「表格怎么切」「更新怎么办」直接卡壳。
七、Chunk 大小怎么定,重叠区间怎么设 💡
面试官怎么问:文档切分的 Chunk 大小依据什么定?重叠区间怎么设?你实测过吗?
怎么答:Chunk 大小没有银弹,看内容类型:
- 代码类:256 到 512 token,代码语义局部性强,切太大反而稀释。
- 文档类:512 到 1024 token,段落完整度更重要。
- 表格/公式:尽量别切断,按结构切。
重叠区间我一般设 chunk 大小的 10% 到 20%,作用是避免一句话被切两半导致召回不全。但这玩意必须实测:重叠太大,召回重复、噪声多;太小,边界信息丢失。
我真实踩过的坑:一开始重叠设 30%,结果同一个知识点在三个 chunk 里各出现一次,Rerank 前都进 topK,答案啰嗦还互相打架。调到 15% 才稳。
阳哥点评:加分项是「我实测过,重叠 30% 翻车,调到 15%」。面试官最吃这一套,因为大多数人只背理论没真跑过。坑是张嘴就「按 512 切」,被追问依据就虚。
八、向量召回不理想,按什么顺序排查 💡
面试官怎么问:向量召回结果不理想时,你通常按什么顺序排查?做过混合召回吗?
怎么答:召回差我按这个顺序往下查,从最容易翻车的开始:
- 切分问题:chunk 太碎或切断语义,召回的自然是碎片段。
- Embedding 匹配度:查询和文档用词体系不一样(用户口语、文档书面),向量空间里离得远。
- 检索策略:只向量召回,漏了关键词精确匹配。
第三点我必上混合召回:向量召回负责语义,关键词(BM25)负责精确术语,两者结果用 Rerank 统一排序。比如用户搜「OOM 怎么排查」,向量可能召回一堆泛泛内存文,BM25 能精准命中带 OOM 字样的文档。
阳哥点评:加分项是你能给出排查顺序而不是瞎试。坑是很多人召回一差就猛换 Embedding 模型,其实八成是切分和没做混合召回的锅。
九、Rerank 怎么实现,特征权重怎么分 💡
面试官怎么问:Rerank 环节一般怎么实现?重排时各项特征权重怎么分配?
怎么答:Rerank 我直接用跨编码器(cross-encoder)模型,它把「查询 + 候选文档」拼一起过一次模型,打分比向量内积准得多。业界常用 Cohere Rerank 或自研 cross-encoder。
特征融合我一般这么分权重(经验值,要按业务调):
| 特征 | 权重 | 说明 |
|---|---|---|
| 语义相关性(cross-encoder 分) | 0.6 | 主攻,决定大方向 |
| 关键词命中(BM25 分) | 0.25 | 精确术语兜底 |
| 新鲜度 / 业务权重 | 0.15 | 新文档、权威源加权 |
权重不是写死就完事,要拿点击日志做离线评估,看 NDCG 有没有涨。我踩过的坑是语义分权重拉到 0.9,结果用户搜产品名这种硬术语时,反而被语义相近的干扰文档挤下去。
阳哥点评:加分项是「权重要拿日志回测,不是拍脑袋」。坑是把 Rerank 当银弹,召回层一塌糊涂,Rerank 再强也救不回来。
十、System Prompt 怎么写才不失效 💡
面试官怎么问:Agent 的 System Prompt 怎么写?为什么容易失效,怎么提高鲁棒性?
怎么答:Agent 的 System Prompt 不是聊天那套,它要同时承担三件事:工具使用说明书、决策逻辑、输出格式约束。我的结构固定六块:角色、能力边界、决策准则、输出格式、安全规则、错误处理。
为什么容易失效?三个真因:
- 指令冲突:又写「优先用工具 A」又写「确保快」,模型纠结。
- Lost in the Middle:三千字 prompt,中间规则遵循率只有六成,开头结尾有八成五。
- 场景漂移:覆盖九成场景,用户偏落那一成。
提鲁棒性我三招:关键规则放首尾、多用「不要做什么」的反例、输出双层约束(prompt 写一遍 + 代码 schema 校验一遍)。
阳哥点评:加分项是你知道「Lost in the Middle」这个现象,坑是新手把 prompt 写得又长又全,以为越全越好,结果中间全被模型忽略。
十一、Token 成本怎么省 💡
面试官怎么问:LLM 应用怎么控制成本?Prompt Caching 怎么做?
怎么答:省 token 我抓三块:
- 上下文压缩:每轮工具返回结果先摘要再进 context,设最大轮次定期 compact,别什么都往里塞。
- Prompt Caching:System Prompt、工具定义这些不变的内容,主流模型支持缓存前缀,命中后单价能砍到十分之一。关键是把「不变的部分放前面、变的部分放后面」,缓存才命中。
- 选型分层:简单任务用小模型,复杂决策才上大模型,别所有环节都烧旗舰模型。
举个实在的数:一个客服 Agent,System Prompt 加工具定义大概两千 token,每轮都重发,一天十万轮就是两千万 token 白烧。开了 caching,这部分基本只算一次。
阳哥点评:加分项是你能说出「不变内容前置才能命中缓存」。坑是很多人优化模型选型卷半天,却忘了 System Prompt 每轮重发这个大头。
十二、你靠什么渠道跟进展,用哪些 AI 编程工具 💡
面试官怎么问:你平时通过哪些渠道跟进大模型与 Agent 的最新进展?写代码用什么 AI 辅助工具?
怎么答:这块我实话实说,不装。
跟进渠道我就三处:arXiv 的 Agent / RAG 新论文、几个大厂工程师的技术博客、还有阳哥(哈哈,肯定不能这么说,开个玩笑)我们训练营的内部分享。真落地还是靠自己跑 demo 验证,论文看完不跑等于没看。
AI 编程工具我日常用 Copilot 写样板代码,复杂重构让 Claude Code 这类 Agentic 工具上,但生产代码我一定自己 review,不盲信生成结果。我之前就踩过生成代码漏了 context 取消的坑,goroutine 泄漏线上才暴露。
说到底,AI 工具是加速器,不是替你思考。转 AI 这条路上,底层工程能力(Go、并发、系统设计)反而是你的护城河,别因为追新把老本丢了。
阳哥点评:加分项是你不迷信工具、强调自己跑 demo 和 review。面试官最怕那种「我只看科普号」的候选人。坑是吹自己全靠 AI 写代码,一听就知道没真干过。
────🎯 阳哥总结────
2026 年的 AI 应用开发面试,考的已经不是「你会不会调大模型 API」。
它考的是:你能不能把一个会自己决策、自己调工具的系统,稳稳地框在安全边界里跑起来。
Agent 架构、RAG 工程化、成本控制、稳定性,四条线串起来,就是企业愿不愿意为你的能力买单。照着上面 12 题准备,比刷一百道八股管用。
────📚 面试突击资料────
✅ 免费路线图:后端转 AI 学习路线图 wangzhongyang.com
✅ 领资料:加阳哥微信 wangzhongyang1993,备注「面经」,免费送你《后端转 AI 高薪岗知识地图》
👇 你面 AI 岗时被哪道题问住了?最刁钻的一题是什么?评论区聊聊,让兄弟们一起准备。