秋招 AI应用开发 Agent 复习笔记
🎯 AI 应用开发 / Agent 方向 · 秋招复习笔记
📅 整理时间:2026-06-02 📚 来源:基于 workspace 内 18 份面经资料整合 🎯 适用:AI 应用开发 / Agent 开发 / 大模型应用 校招岗位
📖 总目录
- Agent 核心概念与架构
- Agent 四种范式深度对比
- RAG 检索增强生成
- MCP 协议
- Memory 记忆系统
- Prompt 工程
- Function Calling / Tool Use
- Multi-Agent 多智能体架构
- 幻觉处理
- 上下文管理
- 工程化与可靠性设计
- Agent 评测体系
- 项目面试话术
- 算法 / CS 基础高频点
- 各家大厂面经速览
- 贴心避坑指南
1. Agent 核心概念与架构
1.1 什么是 Agent?
Agent(智能体)是一种能够感知环境、做出决策并采取行动的系统。与普通 LLM 应用的核心区别:
| 维度 | 普通 LLM 应用 | Agent |
|---|---|---|
| 交互模式 | 输入→输出,单轮 | 多轮循环,自主规划 |
| 工具使用 | 无 | 调用外部 API、代码执行等 |
| 推理能力 | 单次推理 | 多步推理,反思纠错 |
| 目标驱动 | 被动响应 | 主动规划直到完成任务 |
1.2 Agent 四大核心组件(面试高频)
┌─────────────────────────────────────┐│ Agent ││ ┌──────┐ ┌──────┐ ┌──────┐ ┌──┐ ││ │规划 │ │记忆 │ │工具 │ │执行│ ││ │Planning│ │Memory │ │Tools │ │Act│ ││ └──────┘ └──────┘ └──────┘ └──┘ │└─────────────────────────────────────┘- Planning(规划):任务分解、反思、ReAct、CoT
- Memory(记忆):短期记忆(上下文窗口)、长期记忆(向量库)、工作记忆(执行状态)
- Tools(工具):Function Calling、MCP、自定义工具
- Action(执行):执行操作并观察结果
💡 面试回答模板:先讲这四要素,再结合你的项目具体展开。
1.3 Agent vs 大模型的本质区别
- 大模型:静态参数推理,无记忆无工具
- Agent:感知 → 规划 → 工具调用 → 执行 → 反馈 闭环
- Agent 具备:自主性、反应性、目标导向、与环境的交互能力
2. Agent 四种范式深度对比
⚠️ 高频难题:对比 React、Plan-and-Execute、Tool Use、Multi-Agent 四种范式 ⚠️ 最大误区:认为它们是线性进化关系(低级→高级)。实际上它们是不同维度的!
2.1 层次关系(面试必讲)
组织架构层 → Multi-Agent流程控制层 → Plan-and-Execute / ReAct推理框架层 → ReAct基础能力层 → Tool Use / Function Calling👉 一个 Agent 可以同时用 ReAct + Function Calling,整个系统又是 Multi-Agent 架构。
2.2 各范式详解
| 范式 | 层次 | 核心机制 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| Tool Use | 基础能力层 | 模型自主决定是否调工具、调哪个、传什么参数 | 延迟低,架构简单 | 缺少全局规划,易偏离目标 | 简单调用(查天气、发邮件) |
| ReAct | 推理框架层 | Thought → Action → Observation 三段循环 | 可解释性强,有决策链路日志 | 每轮多一次 LLM 调用,延迟高 | 中等复杂度,需可观测性 |
| Plan-and-Execute | 流程控制层 | 先规划完整计划,再逐步执行,可重规划 | 全局视野,避免迷失 | 规划消耗资源,计划可能不准确 | 步骤多、结构清晰的任务(代码重构) |
| Multi-Agent | 组织架构层 | 多 Agent 分工协作,消息通信 | 职责分离,上下文专注 | 通信开销,协调复杂度 | 角色天然分离的场景 |
2.3 技术选型优先级(面试加分回答)
- 看任务复杂度:简单 → Tool Use;多步推理 → ReAct;步骤多/结构化高 → Plan-and-Execute;角色天然分离 → Multi-Agent
- 看延迟敏感度:实时交互优先 Tool Use 或最简 ReAct
- 看可观测性需求:ReAct 的循环是天然审计追踪
3. RAG 检索增强生成
3.1 RAG 完整链路
文档 → 分块(Chunking) → Embedding向量化 → 向量数据库存储用户提问 → Embedding查询 → 检索Top-K → Rerank重排序→ 注入Prompt上下文 → LLM生成回答3.2 面试常考细节
(1) Chunking 策略
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 固定大小滑动窗口 | 简单,实现容易 | 通用场景 |
| 语义分块 | 按段落/章节自然边界切分 | 结构化文档 |
| 递归分块 | 大块→小块逐级拆分 | 长文档 |
关键认知:chunking 决定了检索系统的上限。需要用评估集跑不同策略的效果对比。
(2) Embedding 模型
- OpenAI text-embedding-3-small/large
- BGE 系列(BAAI)
- M3E(国产)
- Cohere Embed
(3) 向量数据库选型
| 名称 | 特点 |
|---|---|
| Milvus | 开源高性能,企业级 |
| Pinecone | 云原生,管理简单 |
| Weaviate | 支持混合搜索 |
| Chroma | 轻量级,适合原型 |
| FAISS | Facebook 开源,高效本地部署 |
(4) RAG 优化六大手段
- 分块策略优化:按语义分块而不是固定长度
- 多路检索:向量检索 + 关键词(BM25)检索 + 混合检索
- 重排序(Rerank):对候选结果二次排序,提升精度
- 上下文压缩:只保留和问题最相关的部分
- 查询改写:把用户问题改写成更适合检索的形式
- 反馈循环:根据用户满意度反向调整检索策略
(5) RAG vs 微调
| 维度 | RAG | Fine-tuning |
|---|---|---|
| 成本 | 低 | 高(需要 GPU 训练) |
| 更新 | 实时更新文档即可 | 需要重新训练 |
| 适用场景 | 知识问答、事实查询 | 特定风格/格式/行为对齐 |
| 对幻觉影响 | 减少(有参考依据) | 可能加剧(死记硬背) |
💡 面试高频追问:什么时候不应该上 RAG?答:当知识变化极快、或对延迟极度敏感、或模型本身已具备足够知识时。
(6) RAG 常见失败原因
- 检索召回率不足(Top-K 太少或 chunking 不当)
- 检索到的上下文相关性低
- 注入的上下文干扰了模型判断
- 用户问题表述不规范
4. MCP 协议
4.1 什么是 MCP
MCP(Model Context Protocol)是 Anthropic 推出的模型上下文协议,用于标准化 LLM 与外部工具/数据源的交互方式。
4.2 MCP 工作方式
LLM ←→ MCP Client ←→ MCP Server ←→ 外部工具/数据源 ↑ ↑ JSON-RPC Tool Schema 注册4.3 MCP vs Function Calling
| 对比维度 | Function Calling | MCP |
|---|---|---|
| 标准化程度 | 模型厂商各自定义 | 统一开放协议 |
| 工具发现 | 需预注册 | 动态发现 |
| 通信方式 | JSON Schema 内嵌 | 独立 Server 进程 |
| 跨语言 | 取决于 SDK | Server 独立,语言无关 |
| 安全性 | 需自行隔离 | Server 级隔离 |
4.4 MCP vs Skill(面试高频)
| 对比 | MCP | Skill |
|---|---|---|
| 定位 | 标准化工具调用协议 | 封装好的任务级能力 |
| 粒度 | 单个工具/能力 | 一个完整功能的集合 |
| 复用性 | 跨平台通用 | 平台特定 |
| 关系 | 可作为 Skill 内部调用协议 | 可组合多个 MCP 工具 |
4.5 其他工具协议
- A2A(Agent-to-Agent):Google 提出的 Agent 间通信协议
- SSE(Server-Sent Events):服务端推送,常用于流式输出
- WebSocket:全双工通信,用于实时交互
5. Memory 记忆系统
5.1 三层记忆结构(面试必答)
| 层级 | 说明 | 存储方式 | 典型实现 |
|---|---|---|---|
| 短期记忆 | 当前对话上下文 | 滑动窗口 / 摘要压缩 | Context Window |
| 工作记忆 | 当前任务中间状态 | 进程内存 | 当前子目标、已收集证据 |
| 长期记忆 | 跨会话持久化信息 | 向量数据库 / KV存储 | 用户偏好、历史交互 |
5.2 记忆设计核心问题
- 写入时机:不是所有信息都值得存 → 需要重要性打分+去重
- 检索方式:相关性和时效性要兼顾 → 时间衰减权重
- 遗忘策略:记忆库越来越大 → 检索精度下降 → 需要定期整理
5.3 长期记忆的生成与检索
触发条件(任务完成/用户明确指示/重要信息出现) → 调用 LLM 对当前会话做摘要/结构化提取 → 向量化存储到记忆库 → 下次需要时通过语义检索召回 → 动态注入上下文💡 面试追问点:agent.md vs memory.md vs skills.md 的职责区分?
- agent.md:定义 Agent 的行为规则、系统 prompt
- memory.md:存储跨会话的长期记忆
- skills.md:注册可复用的能力模块
6. Prompt 工程
6.1 常见 Prompt 技术
| 技术 | 说明 | 面试要点 |
|---|---|---|
| Zero-shot | 直接提问,无示例 | 基础 |
| Few-shot | 给几个输入输出示例 | 要能说清楚选 few shot 的原则 |
| Chain-of-Thought (CoT) | 引导模型逐步推理 | 适合数学/逻辑问题 |
| ReAct | 推理+行动交替 | Agent 核心 |
| Self-consistency | 多次采样选最一致的答案 | 提升准确率 |
6.2 结构化 Prompt 设计原则
系统角色指令(你是谁、要做什么) ↓核心约束(不能做什么、必须遵循什么) ↓工具/技能描述(可用能力注册) ↓上下文信息(记忆/RAG检索结果) ↓用户输入(当前轮) ↓输出格式要求6.3 优化 Prompt 的常见手段
- 所有 Prompt 修改要版本化管理
- 关键指令放前面(模型更关注开头和结尾)
- 用分隔符明确区分不同信息块
- 显式注入约束减少模型”猜”的概率
7. Function Calling / Tool Use
7.1 完整链路
工具注册(定义 Schema) → 候选筛选(工具多时) → 模型决策→ 参数校验 → 执行隔离 → 结果处理 → 注入上下文⚠️ 很多初学者只关注”模型怎么输出 function call”,忽略了前后两端的工程细节。
7.2 工具设计原则
- 工具粒度:太大(模型难以理解) vs 太小(增加调用次数)
- Schema 设计:description 对完成率影响很大
- 工具装载:不要一次性加载所有工具,按需选择
- 并发处理:独立工具可并行调用
7.3 工具 Schema 示例
{ "name": "search_document", "description": "搜索知识库中的文档,返回相关片段", "parameters": { "type": "object", "properties": { "query": {"type": "string", "description": "搜索关键词"}, "top_k": {"type": "integer", "description": "返回结果数量"} }, "required": ["query"] }}8. Multi-Agent 多智能体架构
8.1 为什么用 Multi-Agent(面试话术)
- 职责分离:不同 Agent 专注不同任务,代码结构清晰
- 能力扩展:独立扩展子 Agent,不影响整体
- 上下文精简:每个 Agent 只需关注自己的上下文窗口
- 协作效率:主 Agent 分解调度,子 Agent 并行执行
8.2 三种通信模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Orchestrator(编排器) | 主 Agent 拆任务、分配、汇总 | 简单分解任务 |
| Peer-to-Peer(对等) | Agent 间平等协商 | 需要多方讨论 |
| Hierarchical(层级) | 上级管理下级 | 复杂组织结构 |
8.3 主Agent与子Agent通信
- 通信方式:消息队列(Redis/RabbitMQ)、HTTP/RPC、共享存储
- Memory 访问:一般不直接访问对方记忆,通过消息传递数据
9. 幻觉处理
9.1 幻觉产生原因
- 模型训练数据的偏差和不完整
- 上下文约束不足,模型自由发挥
- 检索到的信息相关性不足或错误
9.2 多层幻觉防御策略
第一层:Prompt 约束 → 要求模型引用来源、设置 temperature=0、指令约束
第二层:工具/函数调用 → 用精确计算替代模型猜测(如计算器、查询数据库)
第三层:RAG 召回 → 提供参考文档,减少依赖模型内部知识
第四层:后处理验证 → 对输出做静态检查、格式校验、事实核查
第五层:微调对齐 → 特定场景下用微调纠正模型行为10. 上下文管理
10.1 上下文压缩
触发时机:
- 当前上下文长度接近模型上限(如 80%)
- 多轮对话中历史信息冗余
压缩方法:
| 方法 | 说明 |
|---|---|
| 摘要压缩 | 用模型生成历史摘要,保留核心信息 |
| 关键信息提取 | 抽取实体、动作、意图,丢弃次要描述 |
| 滑动窗口 | 只保留最近 N 轮对话 |
10.2 上下文结构组织
优先级策略(从高到低):
1. 系统规则 / 约束2. 当前轮用户明确输入3. 外部工具返回结果 / 知识库证据4. 用户历史偏好(soft hint,不可覆盖当前事实)10.3 会话压缩面试参考
阿里淘天面试官追问:会话压缩怎么做的?
参考回答:当上下文窗口接近限制时,触发摘要压缩。先用模型对当前上下文生成摘要,保留系统指令、关键决策、已收集的重要信息,丢弃中间重复的推理过程和低价值日志。摘要完成后替换原始上下文,节省 token 空间。同时记录摘要的历史版本,必要时可回溯。
11. 工程化与可靠性设计
11.1 异常处理三层策略
| 层级 | 策略 | 说明 |
|---|---|---|
| 第一层 | 重试 | 指数退避重试,限制最大次数 |
| 第二层 | 降级 | 主工具失败换备用工具/简化路径 |
| 第三层 | 上报 | 处理不了交给人类介入 |
11.2 鲁棒性设计要点
输入校验 → 意图识别 → 敏感词过滤 → 上下文截断 → 错误兜底 ↓ 二次校验与格式解析关键原则:
- 先校验用户输入,再决定是否调用模型
- 对关键输出做二次校验
- 不要为了”好看”,是为了系统不会因为一次异常直接崩掉
11.3 性能优化(面试要能展开)
| 维度 | 具体措施 |
|---|---|
| 模型推理 | 流式输出(SSE),减少感知延迟 |
| 工具调用 | 并行调用独立工具,连接池复用 |
| 网络传输 | 缓存(Semantic Cache),减少重复请求 |
| 上下文组装 | 只注入必要上下文 |
| 预计算 | 确定性中间结果提前算好存储 |
| 熔断机制 | 工具连续失败超阈值时自动熔断 |
11.4 Token 消耗优化
- 上下文压缩(摘要替换原始历史)
- 缓存(常用技能、知识不重复加载)
- 批处理(合并小请求)
- 模型选择(简单任务用轻量模型)
11.5 可审计 Agent 设计
审计目标:能追责、能定因、能复现
需记录的信息:
- 用户输入
- 系统 prompt 版本
- 工具候选集 + 最终选择
- 调用参数 + 工具返回结果
- 状态变迁
- 模型输出 + 最终结果
- 扩展:模型版本、知识库版本、trace_id
12. Agent 评测体系
12.1 四层评测体系(面试杀手锏)
| 层级 | 内容 | 作用 |
|---|---|---|
| 第一层:保底 | 确保系统每次改动后仍能稳定运行 | 防止”改坏” |
| 第二层:Benchmark | 固定题目,用通过率、耗时、失败原因量化 | 避免”凭感觉” |
| 第三层:过程记录 | 记录运行过程以便复盘 | 不只看到最终结果 |
| 第四层:回归 | 将真实翻车 case 放回评测集 | 贴近真实场景 |
12.2 Agent 评估维度
| 维度 | 说明 |
|---|---|
| 任务完成率 | 是否达到目标 |
| 步骤效率 | 花了多少步,有没有走弯路 |
| 工具调用准确率 | 选对工具、参数正确 |
| 幻觉率 | 编造不存在的信息或工具 |
| 异常恢复率 | 出错后能否自己修复 |
| 人类介入率 | 多少任务需要人接管 |
12.3 评估方式
- 离线评估:benchmark 跑回归测试
- 在线评估:真实用户留存、反馈、复用率
- LLM-as-Judge:用 GPT-4 或其他模型评分
13. 项目面试话术
13.1 项目介绍的”四步公式”
业务痛点 → 初版方案 → 踩坑迭代 → 量化收益错误示范:“我用了一套多 Agent 的系统,用了 RAG、Prompt 优化……” 正确示范:“我在 XX 场景下遇到了 XX 问题(业务场景),一开始尝试了 XX 方案(初版),但发现了 XX 问题(踩坑),于是改成了 XX,最终 XX 指标提升了 XX%(收益)。“
13.2 面试官最怕的 5 个追问(校招生专供)
-
“这个设计你是怎么考虑的?有没有考虑过其他方案?” → 展示技术选型思考,说清楚为什么选 A 不选 B
-
“遇到过什么问题?怎么解决的?” → 展示真实踩坑经验,这是区分”做过”和”看过”的关键
-
“如果 XX 情况发生,系统会怎么样?” → 展示对边界情况的思考
-
“有量化的效果吗?” → 必须有指标,不能用”感觉”回答
-
“为什么这么设计?Trade-off 是什么?” → 展示架构权衡能力
13.3 项目包装要点
- 不要说自己项目是”网上找的”,可以说”参考了 xx 开源方案,结合实际业务做了 xx 改进”
- 每个功能点都要能说出”为什么”,不只是”做了什么”
- 准备 1-2 个深度模块展开讲,其他一笔带过
- 准备完整的叙事:场景 → 问题 → 方案 → 迭代 → 收益
13.4 Skill 机制面试回答
问题:skill 是怎么运作的? 当用户提问触发条件时,系统从 skill 库匹配最合适的 skill,将其内容(自然语言描述 + JSON Schema)注入 Prompt 上下文,交由大模型处理。
问题:内置 skill 和业务自定义 skill 冲突了怎么办?
- 命名空间隔离(不同前缀/目录)
- 优先级机制(按规则选择)
- 冲突检测告警
问题:太长或不当的 skill 会导致什么?
- 上下文溢出,关键指令被截断
- 性能下降,Token 消耗增加
- 噪音干扰,降低执行准确性
14. 算法 / CS 基础高频点
14.1 必刷算法
- 高频题:合并两个有序数组、字符串相加、单例模式
- 每日必做:LeetCode Hot 100 + 剑指 Offer
- Tips:刷过的题面试时假装思考一下再写
14.2 Java 高频八股
| 模块 | 重点 | 面试要求 |
|---|---|---|
| 线程池 | 核心参数、拒绝策略、工作原理 | ✅ 能讲清配置,能设计 |
| HashMap | 底层结构、红黑树转换阈值(8)、扩容 | ✅ 原理+并发安全 |
| JVM | 类加载机制(三大步骤)、垃圾回收算法、内存分布 | ✅ 经典必考 |
| 并发 | synchronized 原理、ReentrantLock、CAS、AQS | ✅ 死锁要能写出来 |
| MySQL | undo log/redo log/binlog + 两阶段提交 | ✅ 经典组合 |
| 单例 | 双检锁 + volatile | ✅ 手写级 |
14.3 Python 相关
- 多进程、多线程、协程的区别
- Python vs JS 的区别
14.4 网络基础
- HTTP 1.0 / 2.0 / 3.0 区别
- 前后端分离概念
- SSE / WebSocket
14.5 LLM / 算法基础(非训练岗也要知道)
- Transformer 流程
- 注意力机制
- 位置编码
- 过拟合 / 梯度消失
- 模型并行 / 数据并行
15. 各家大厂面经速览
字节跳动(一面)
| 题号 | 问题 | 核心考点 |
|---|---|---|
| 1 | 为什么要自己搞 code agent?挑战? | 项目动机+深度 |
| 2 | 同一个模型不同 context 长度下的差异? | 上下文工程 |
| 3 | 怎么减少 Agent 幻觉? | 多层防御体系 |
| 4 | Prompt 怎么构建的? | 模块化+版本管理 |
| 5 | Memory 机制怎么做? | 短/长期记忆 |
| 6 | 任务恢复怎么做? | 状态快照+恢复 |
| 7 | 怎么评测和验证优化效果? | 四层评测体系 |
阿里淘天(一面)
| 题号 | 问题 | 核心考点 |
|---|---|---|
| 1 | 会话压缩怎么做? | 上下文管理 |
| 2 | 长期记忆写入时机? | 记忆系统设计 |
| 3 | 上下文结构 / 长度约束? | Prompt 工程+Token控制 |
| 4 | agent.md vs memory.md 职责区分? | 架构理解 |
| 5 | 工具和 skill 位置互换的后果? | 架构权衡 |
| 6 | 怎么评测 Agent 回答质量? | 评估体系 |
| 7 | HashMap + 线程池 + 并发 | Java 基础 |
腾讯(一面→二面)
- 一面:概念型题(什么是 Agent、RAG、Prompt Engineering)
- 二面:系统设计题(Planner 设计、上下文优先级、异常处理、可审计 Agent)
- 二面和一面最大区别:一面问”会不会”,二面问”为什么不这么做、不这么做会出什么问题”
滴滴 AI 全栈(一面)
- MCP 深度题(运作方式、协议对比、并发处理)
- AI coding tools 了解程度
- MCP vs Skill 区别
- 前端基础+后端基础都会问
- 智能体三要素
16. 贴心避坑指南
❌ 常见翻车现场
1. 项目被问倒
- 项目是网上找的 → 被面试官看轻
- 项目挑战答不上来 → 面试官觉得你没做过
- 没有量化指标 → 话术再好也白搭
2. 八股只会背
- 背了线程池参数 → 追问”怎么设计一个” → 露馅
- 背了 RAG 流程 → 追问”chunking 怎么选” → 卡住
3. 忽略工程细节
- 会说”流式输出” → 说不清缓存、超时、降级
- 会说”做了评测” → 说不清评测维度
✅ 制胜关键点
- 实习经历是最大加分项 → 你现在就在做 AI 应用+Agent,珍惜每个遇到的真实问题
- 每天实习时记录踩坑细节 → 面试时这就是你的”真实感”
- 项目表达用”先讲场景,再讲方案”
- 准备一个”原理→配置→常见问题→排查方法”四件套
- 每个设计决策都要能说出 trade-off
👑 最终面试官想看到的
企业现在更看重的,不是你会不会调 API,而是:
- 出了问题你能不能定位
- 系统异常你能不能兜住
- 方案落地后你能不能让它稳定跑起来
💪 退出挑战杯省下的时间和心力,现在全部可以投入到秋招准备中。 方向正是你感兴趣的 AI Agent,这就是你说的”想做的有意义的事”。 加油!
Share Article
If this article helped you, please share it with others!