Agent一些题目总结
2025 年以来,Agent 已经从“概念热词”变成了“岗位刚需”。字节、阿里、百度、腾讯的招聘 JD 里,Agent 相关的岗位数量翻了好几倍,面试官也从“你听说过 Agent 吗”进化到了“你们生产环境的 Agent 怎么做的,踩过什么坑”。
只会背概念已经远远不够了。面试官要的是你能把 Agent 的底层原理讲清楚,能把 Function Call、MCP、A2A 这些协议的关系理顺,能在系统设计题里给出落地方案。
这篇文章把 Agent 面试从底层到实战的核心考点全部梳理一遍,认真看完,面试不再怕被追问。
一、LLM 和 Agent 有什么区别?
这是最基础也最高频的面试题。面试官通常会这样问:“你们项目里用的是 LLM 直接调用还是 Agent?为什么这么选?”
LLM 的四大天花板
LLM(大语言模型)本质上是一个条件概率模型——给它一段输入 token,它预测下一个 token 最可能是什么。你可以把它当成一个无状态的函数:输入 Prompt,输出文本。每次调用都是独立的,没有记忆,没有状态,对外部世界一无所知。
但这带来了四个根本性局限:
-
只会说不会做——它能告诉你“你可以去天气 App 查一下”,但它自己不会去查。
-
没有记忆——上下文窗口一满就“失忆”,跨会话什么都没留下。
-
知识截止——训练数据有截止日期,昨天发生的事它不知道。
-
不会规划——你让它“做一份竞品分析”,它只会线性回答,不会自己拆解步骤。
Agent 是什么?
一句话:Agent = LLM + 工具 + 记忆 + 规划,在循环中自主完成目标。
用例子说明本质区别最清楚:
任务:帮我查一下明天北京的天气,如果下雨就取消我日历里的跑步计划。
LLM:告诉你“可以打开天气 App 查询……建议取消户外运动……”
Agent:调用天气 API → 查到中雨 → 调用日历 API 找到跑步计划 → 调用日历 API 删除计划 → 回复“已为您取消”
LLM 告诉你怎么做,Agent 直接帮你做完。 这就是本质区别。
面试加分点:Agent 的完整四模块
面试时别只说“Agent 就是 LLM 加工具”,要展开讲四个模块:
| 模块 | 角色 | 职责 |
|---|---|---|
| LLM(大脑) | 理解意图、推理判断 | 核心决策引擎 |
| 规划模块 | 任务拆解、步骤排序 | 把大目标拆成小步骤 |
| 记忆模块 | 短期上下文 + 长期知识存储 | 跨会话记忆 |
| 工具模块 | 调用外部 API、数据库、代码执行器 | Agent 的“手和脚” |
二、Agent 和 Workflow 有什么区别?
面试官会追问:“你说你用了 Agent,为什么不用 Workflow?如何判断一个任务该用 Agent 还是 Workflow?”
核心区别:谁在控制流程?
这两者最核心的分歧只有一点:Workflow 的控制权在代码手里,Agent 的控制权在 LLM 手里。
Workflow 把流程提前写死在代码里,LLM 只是其中某些节点的处理器。每个 if/else 分支、每个步骤的顺序,都是开发者预先定义的。
Agent 接收到目标后自主规划执行路径。每一步都是 LLM 自己决定的,不在代码里写死。同一个 Agent,面对不同的任务,可能会走完全不同的路径。
量化对比
| 维度 | Workflow | Agent |
|---|---|---|
| 控制者 | 代码/开发者 | LLM |
| Token 消耗 | 低(约1x) | 高(约4-8x) |
| 可预测性 | 高 | 低 |
| 灵活性 | 低 | 高 |
| 适合任务 | 固定流程 | 开放式目标 |
| 调试难度 | 容易 | 困难 |
实际生产:混合架构最常见
别把 Workflow 和 Agent 对立起来。大多数生产系统是 Workflow + Agent 的混合架构——Workflow 提供稳定骨架,Agent 负责处理异常和复杂情况。
比如智能客服系统:简单问题走 Workflow 直接回答,复杂问题启动 Agent 自主分析决策。能说出这个,面试官就知道你做过实际项目。
三、Agent 有哪些工作模式?
面试官会问:“你了解 ReAct 吗?除了 ReAct 还有哪些 Agent 工作模式?各自的优缺点是什么?”
模式一:ReAct(推理 + 行动)
最经典的 Agent 工作模式,几乎所有主流框架(LangChain、LangGraph)的默认选择。
ReAct 的核心是一个三步循环:Thought(思考)→ Action(行动)→ Observation(观察)→ 回到 Thought,直到任务完成。
text
Thought: 用户想查北京明天天气,我需要调用天气工具
Action: get_weather(city="北京", date="明天")
Observation: {"city":"北京","weather":"中雨","temp":"14-20°C"}
Thought: 天气查到了,是中雨。我应该告诉他结果
Action: 结束,生成最终回答
-
优点:透明可审计(每步思考看得见)、灵活适应、通用性强
-
缺点:Token 消耗大、可能死循环、延迟高
如何防止 ReAct 死循环?(面试高频追问)
这是必考题,三个方法要能脱口而出:
-
最大步数限制——通常设 15 步,超过就强制终止
-
重复动作检测——连续 3 次调用同一个工具且参数相同,直接退出循环
-
超时控制——整个任务设置最大执行时间
模式二:Plan-and-Execute(先规划再执行)
ReAct 的问题是每一步都要重新思考全局,Token 消耗太大。Plan-and-Execute 的思路是:先把计划想清楚,再按计划逐步执行。
Token 消耗对比:ReAct 消耗 100%,Plan-and-Execute 消耗约 20%。
模式三:Reflection(自我反思)
让一个 Agent 生成,另一个 Agent 审查,循环迭代直到质量达标。适用于代码生成、法律文书、学术论文等对输出质量要求高的场景。
面试加分:Reflection 也可以用于自我校正幻觉。当 Agent 发现自己给出的事实存疑时,可以触发“验证反思”,调用搜索工具去核实。
模式四:Multi-Agent(多智能体协作)
多个专业 Agent 协作完成复杂任务。
重要提醒:不要过早引入 Multi-Agent。一个强大的单 Agent 往往比多个简单 Agent 协作更稳定、更省钱。只有任务明确需要并行处理或专业分工时,才引入多 Agent。
四、Function Call 是什么?底层怎么实现?
面试官会问:“Function Call 和普通的 Prompt + 正则解析有什么区别?LLM 自己执行 Function Call 吗?”
关键认知:LLM 自己并不执行函数!
Function Call 是让 LLM 输出结构化的工具调用指令,再由应用程序实际执行。LLM 只告诉你“我想调用什么函数、传什么参数”,真正执行的是你的代码。
Function Call 四步流程
Step 1:定义工具——告诉 LLM 有哪些工具可用(用 JSON Schema 描述工具名称、参数等)
Step 2:LLM 判断并生成调用指令——LLM 的输出不是普通文本,而是结构化的 JSON
Step 3:你的代码解析执行——拿到 LLM 的调用指令后,真正去执行函数
Step 4:把结果传回 LLM——工具执行结果传回 LLM,生成最终回答
Parallel Function Call(并行调用)
GPT-4o 和 Claude 3.5+ 都支持一次返回多个工具调用,可以并行执行。串行执行 T = T1 + T2 + T3,并行执行 T = max(T1, T2, T3),延迟大幅降低。
五、MCP 是什么协议?解决什么问题?
面试官会问:“MCP 和 Function Call 有什么本质区别?如果给团队接入 10 个外部工具,你会用 MCP 还是直接写 Function Call?”
MCP 解决的根本问题:N × M 爆炸
没有 MCP 之前,每个 AI 应用要跟每个外部服务单独写一套集成代码。3 个应用 × 3 个工具 = 9 套代码,10 个应用 × 20 个工具 = 200 套代码。
MCP 把这个问题变成了 N + M:每个应用只需接入 MCP 协议,每个工具只需实现一个 MCP Server。
MCP 架构
MCP 由三个角色组成:
-
MCP Host:你使用的 AI 应用(Claude Desktop / Cursor / 你自己的 Agent)
-
MCP Client:住在 Host 里,负责和 Server 通信的“翻译官”
-
MCP Server:对外暴露具体工具能力的服务端
MCP 的工具发现机制
这是 MCP 最强大的特性之一:Agent 启动时动态扫描所有 MCP Server,获取工具列表并注入 LLM 的上下文。
这意味着 Agent 可以在运行时动态发现新能力,不需要重新部署代码。今天加一个 Slack MCP Server,明天 Agent 就能用 Slack 的能力了。
MCP 底层协议
-
本地通信:stdio(标准输入输出)
-
远程通信:HTTP + SSE(Server-Sent Events,支持流式)
-
消息格式:基于 JSON-RPC 2.0 规范
六、Function Call、MCP、Skills 三者区别与协作
面试官会问:“这三个东西我感觉都是让 Agent 能干更多事,能用一个统一的比喻讲清楚吗?”
用“新员工入职”来类比:
-
Function Call:打电话的基础能力
-
MCP:公司统一的通讯录和电话系统
-
Skills:岗位培训手册
技术层面的三维对比
| Function Call | MCP | Skills | |
|---|---|---|---|
| 解决的问题 | LLM 如何调用函数 | 工具集成标准化 | 领域知识编码 |
| 运行位置 | 你的应用程序 | 外部 MCP Server | Agent 上下文窗口 |
| 技术本质 | API 协议 | 通信标准 | 提示词扩展 |
| 标准化程度 | 各厂商不统一 | 开放统一标准 | 无统一标准 |
一句话总结:Skills 决定「怎么想」→ MCP 决定「用什么」→ Function Call 决定「怎么调」。
七、A2A 协议是什么?和 MCP 的关系?
面试官会问:“MCP 和 A2A 都是协议,它们有什么区别?”
为什么需要 A2A?
MCP 解决了 Agent ↔ 工具 的连接,但没有解决 Agent ↔ Agent 的连接。
Agent A 想请求 Agent B 帮忙完成一个子任务,面临的问题:不知道 Agent B 有什么能力、不知道怎么给 Agent B 发任务、不知道 Agent B 完成没有、不同框架做的 Agent 怎么通信。
MCP vs A2A:互补而非替代
-
MCP 解决纵向问题:Agent ↔ 工具(一个 Agent 连接多个外部服务)
-
A2A 解决横向问题:Agent ↔ Agent(多个 Agent 之间协作)
两者互补,不互相替代。Agent 内部用 MCP 调工具,Agent 之间用 A2A 协作。
八、Agent 的记忆系统怎么设计?
面试官会问:“Agent 怎么实现跨会话记忆?RAG 是 Agent 记忆的一部分吗?”
记忆的两种层次
上下文窗口(In-Context Memory)——速度最快的短期记忆,存当前对话、任务状态、加载的 Skill、工具调用历史。但容量有限(通常 128K tokens)。
外部记忆(External Memory)——分三类:
| 存储类型 | 存什么 | 特点 |
|---|---|---|
| 向量数据库 | 用户偏好、历史经验 | 语义检索,模糊匹配 |
| 关系数据库 | 结构化事实、用户档案 | 精确查询 |
| KV 存储(Redis) | 任务状态、中间结果 | 极快读写,会话级别 |
记忆压缩策略
上下文快满的时候怎么办?三种策略:
-
滑动窗口——丢弃最旧的消息,保留最近 N 条
-
摘要压缩——用 LLM 把旧对话总结成一段话
-
重要性过滤——只保留关键信息,丢弃过程细节
九、Agent 的安全与可靠性如何保障?
面试官会问:“如果 Agent 要操作数据库,怎么保证它不会误删数据?什么是 Prompt Injection?怎么防御?”
核心防御:最小权限 + Human in the Loop
最小权限原则:
-
读任务只给 SELECT 权限,不给 DELETE
-
MCP Server 声明工具时限制操作范围
-
不同环境使用不同凭证
Human in the Loop(人类审批):高风险操作暂停,请求人类确认。必须人工审批的操作:删除数据、发送外部邮件、修改权限配置、超过阈值的资金操作。
Prompt Injection 防御(面试高频)
-
数据/指令分离——外部内容放在明确的数据区域,和系统指令区分开
-
输入过滤——检测并标记可疑内容
-
Prompt 模板隔离——用户输入不直接拼入系统提示词
-
上下文标记——明确标记哪些是外部数据、哪些是系统指令
十、RAG 和 Agent 是什么关系?
面试官会问:“RAG 和 Agent 有什么区别?什么时候用 RAG,什么时候用 Agent?”
RAG vs Agent
| RAG | Agent | |
|---|---|---|
| 目的 | 补充知识 | 完成任务 |
| 流程 | 固定(检索→生成) | 动态(思考→行动) |
| 工具使用 | 仅检索工具 | 任意工具 |
| 自主性 | 无 | 有 |
RAG 是 Agent 的一个工具
别把 RAG 和 Agent 对立起来。Agent 把 RAG 当作工具之一:
-
当 Agent 判断需要知识时 → 调用 RAG 检索工具
-
当 Agent 判断需要操作时 → 调用 API/数据库工具
-
当 Agent 判断需要计算时 → 调用代码执行工具
面试时说出这个关系,比单纯对比两者的区别要有深度得多。
十一、大厂真实面试追问汇总
系统设计类
Q:设计一个企业级 Agent 系统,需要考虑哪些点?
必答五个要点:
-
工具管理层——MCP Server 统一管理,工具权限分级,调用审计日志
-
记忆与状态——短期上下文管理 + 长期向量数据库 + 会话 Redis
-
可靠性保障——最大步数限制、超时控制、人工审批、熔断机制
-
可观测性——完整 Trace、Token 消耗监控、错误分类统计
-
安全——Prompt Injection 防御、最小权限原则、数据脱敏
Q:Agent 的 Token 消耗很大,怎么优化成本?
-
工具选择优化——只给 Agent 真正需要的工具
-
模式选择——简单任务用 Workflow,复杂任务用 Plan-and-Execute
-
上下文压缩——摘要压缩历史对话
-
模型路由——简单子任务用小模型,复杂推理才用大模型
-
缓存——工具调用结果缓存、Prompt 缓存
工程实践类
Q:你们生产环境的 Agent 踩过什么坑?
| 坑 | 解法 |
|---|---|
| 死循环:工具持续失败 Agent 反复重试 | 最大步数 + 相同动作检测 |
| 幻觉工具调用:调用不存在的工具 | 严格校验工具名,未知工具直接报错 |
| 上下文污染:历史对话影响当前判断 | 合理截断上下文 + 任务重置机制 |
| Token 爆炸:工具返回超大数据 | 工具输出截断 + 分页策略 |
| Prompt Injection:外部数据含恶意指令 | 数据/指令分离 |
更多推荐


所有评论(0)