AI Agent/大模型/RAG方向面试题及最优解答全汇总
前言
近期,我参与了三场AI应用落地方向的技术面试。我将面试中出现的所有提问与追问完整收录。
本文摒弃空泛的概念堆砌,直击底层机制、算法细节与系统权衡。它既能帮助求职者查漏补缺,也能为技术团队提供一份高标准的考察维度参考。
一、 Agent 架构与多智能体协同
1. 什么是 AI 智能体?它与传统的 LLM 链式调用有何本质区别?
面试官预期:考察对 Agent 核心定义的抽象能力,能否讲清“从工具调用到自主决策”的进化。
最优回答:
-
定义:AI Agent 是一个能够自主感知环境、制定计划、执行动作并基于反馈进行反思的智能实体。核心公式可以提炼为
Agent = LLM(大脑) + Planning(规划) + Memory(记忆) + Tools(工具)。LLM作为推理内核,Planning负责动态任务拆解,Memory管理状态与知识,Tools提供对外部世界的感知与操作能力。 -
本质区别:
-
传统 LLM Chain:是预定义的、硬编码的流程,每一步的输入输出固定,缺乏动态调整能力。它本质上是开环的一次性执行。
-
Agent:是目标驱动的。它能根据任务目标动态规划执行步骤,在执行过程中通过
ReAct等模式调用外部工具,观察返回结果,判断是否正确,甚至可以自我反思、修正错误。它是一个闭环控制系统,具备条件判断与自主编排能力。 -
典型例子:对于“如果明天下雨,帮我取消下午的会议并通知参会人”,
Chain只会按顺序执行查天气->写邮件。而Agent会先去查天气,判断条件满足,再去调用日历工具找到下午的会议,获取参会人列表,最后调用邮件或通讯工具发送通知。
-
2. React 模式的工作原理是什么?
最优回答:ReAct(Reasoning + Acting)是当前 Agent 实现的主流范式,它将推理轨迹与行动步骤交织在一起:
-
Thought(思考):Agent 接收任务后,进行一步推理,分析当前状况,判断下一步需要做什么。
-
Action(动作):根据思考的结果,选择并调用一个外部工具(如搜索、计算器、数据库查询),并传入所需参数。
-
Observation(观察):接收工具返回的结果,将其作为新的上下文。
-
重复 1-3 步,不断进行
思考-行动-观察的循环,直到 Agent 认为已达成任务目标,最后用Finish动作输出最终结果。
这种模式让模型在推理时能利用外部知识,在决策时有据可依,是解决大模型幻觉和执行复杂多步任务的关键。
3. 如何设计一个多智能体协作系统?遇到过哪些挑战并如何解决?
最优回答:
-
架构设计:我会采用“主-从式编排+动态路由”的混合架构。
-
顶层-主控 Agent:负责意图识别、任务拆分与分发、结果汇聚。它不执行业务逻辑,只做调度员。
-
领域-子 Agent:每个子 Agent 封装特定的业务能力,拥有独立的提示词、技能工具集和知识库。
-
通信总线:基于
A2A协议规范,实现 Agent 间的上下文传递和任务派发。所有 Agent 都通过标准化接口注册到总线,实现解耦。 -
工作流引擎:对于流程固定的任务,可用
LangGraph或硬编码状态机编排;对于探索性任务,则交由主控 Agent 动态路由。
-
-
核心挑战及解法:
-
上下文一致性与数据时序错位:多 Agent 并发执行时,A Agent 写入的数据 B Agent 可能无法立即读取。解法:引入全局状态管理器和任务依赖图,B Agent 的执行必须显式依赖 A Agent 的完成事件,并通过状态快照传递数据,这本质上是一个跨进程的多版本并发控制模型。
-
任务分配与动态路由:意图识别错误会导致任务分发给错误的 Agent。解法:采用两级路由,第一级用轻量级分类模型做粗筛,第二级让主控 Agent 基于候选列表和历史对话做精细决策。
-
循环与无限等待:Agent 可能在某个步骤陷入死循环。解法:设置最大步数限制、超时熔断和无意义重复检测(如连续三次同样的 Action 则强制停止并转人工)。更关键的是,在提示词中植入元认知指令,强制Agent在每步执行前进行自我提问,有效抑制幻觉循环。
-
故障隔离:一个子 Agent 失败不应导致整个系统崩溃。每个子 Agent 需有完整的错误捕获和降级策略,返回结构化错误信息给主控,由主控决定重试、绕过或求助人类。
-
4. Agent 中的记忆是如何分类的?请结合实际应用说明。
最优回答:
记忆是 Agent 实现连续对话和个性化体验的核心,通常分为三大类:
-
短期记忆(Working Memory):当前对话窗口内的上下文,受模型最大长度限制。我会利用 KV Cache 技术加速推理,同时对过长历史进行摘要压缩或滑动窗口处理,防止上下文溢出。
-
长期记忆(Long-term Memory):需要持久化存储的信息,分为两类:
-
情景记忆(Episodic Memory):用户过往的对话记录、操作历史。通常以向量化形式存入向量数据库,用于时间线查询。
-
语义记忆(Semantic Memory):关于用户、领域的事实性知识,如“用户偏好极简风格的报告”。适合用知识图谱或结构化数据库存储,便于精确查询和推理。
-
-
程序性记忆(Procedural Memory):固化下来的技能或工作流模板。例如在
Claude Code中定义的Skills或Claude.md文件,它告诉了 Agent “当遇到某类问题时,应该按什么步骤思考和执行”。这是把人的经验外化给 Agent 的最高效方式。
5. 如何评估一个 Agent 的性能?
最优回答:
评估 Agent 需要从最终效果、过程质量和运行效率三个维度综合考量:
-
任务成功率(Task Success Rate):这是金标准。需要构建覆盖核心场景的测试用例集,由人工或自动化判断 Agent 的最终输出是否解决了用户问题。
-
工具调用准确性(Tool Accuracy):检查 Agent 是否在正确的时机、以正确的参数调用了正确的工具。错误调用是 Agent 失败的常见根源。
-
推理效率(Efficiency):统计完成任务的平均步数/Token 数,衡量其是否走了弯路。理想情况是用最少的步骤完成工作。
-
幻觉率(Hallucination Rate):尤其在 RAG 场景,要检查 Agent 是否遵循了检索到的文档,是否编造了文档中不存在的事实。可用
RAGAS等框架进行自动评估。 -
稳定性与延迟:在生产环境,需要关注 P50/P95 的端到端响应时间,以及系统的并发处理能力。
-
人工评估(Human Eval):上述指标都无法替代最终用户的主观体验。定期进行盲测打分,是校准技术指标、发现未知问题的最后一道防线。
二、 MCP 与 A2A 协议
6. 请解释 A2A 和 MCP 协议,并说明它们的区别。
最优回答:
二者是 Google 和 Anthropic 分别提出的、互为补充的智能体协议标准。
-
MCP(Model Context Protocol):定位为“Agent 与外部系统之间的通用 USB 接口”。它解决的是“Agent 如何调用五花八门的工具和数据源”的问题。MCP 采用
Client-Server架构,允许任何 LLM 客户端通过标准化的 MCP Client,连接到暴露了“资源、工具、提示模板”三大原语的 MCP Server,实现一次开发、随处集成。 -
A2A(Agent-to-Agent Protocol):定位为“Agent 与 Agent 之间的标准通讯录”。它解决的是“不同厂商、不同框架开发的 Agent 之间如何发现彼此、安全协作”的问题。A2A 定义了 Agent Card(名片)、任务生命周期管理、流式/同步通讯等规范。
-
核心区别:MCP 连接的是“Agent 与工具”,是垂直的、外部的;A2A 连接的是“Agent 与 Agent”,是水平的、内部的。 一个全栈 Agent 系统同时需要二者:用 A2A 拆解任务给专业子 Agent,每个子 Agent 通过 MCP 访问后端服务。
7. 你是如何设计 MCP 适配层来封装各个系统的 API 的?
最优回答:
MCP 适配层的设计目标是把异构的后端系统,变成 LLM 能理解的、统一的工具描述。我的设计思路是“三层适配”:
-
统一接入层(Transport Layer):基于
FastMCP框架,统一处理stdio或HTTP传输,并集成zstandard压缩和JWT会话管理,确保长连接稳定性。 -
工具标准化层(Tool Normalization Layer):这是核心。为每个后端 API 定义标准的 Tool Schema,不仅包含
name、description和json_schema,更关键的是引入usage_example(Few-Shot示例)和edge_cases(边界行为描述),将工具调用准确率提升至92%。同时用声明式格式化管道,将异构返回统一为LLM友好的结构体。 -
治理层(Governance Layer):负责横切面问题。包括:基于角色的工具访问控制(RBAC)、自适应限流(基于后端实时响应时间动态调整令牌桶算法)、以及审计日志(记录每次调用的参数和返回)。
三、 RAG 系统设计与优化
8. 你们的数据切片策略是什么?为什么不用父子目录结构?
最优回答:
我们采用 “中文递归标点切分 + 父子块注入元数据” 的混合策略。
-
方法:根据中文标点优先级进行递归切分,父块
1200token 保证语义完整,子块400token 用于精确召回。每个块都会注入源文档的标题、章节等多级元数据。 -
为何不用目录树:对于海量、格式不规范的异构文档,严格依赖目录结构极易失败。我选择用元数据模拟目录语义:用专门的文档解析模型识别出逻辑目录,将其作为元数据注入到每个块中。这样做,在检索时既实现了基于上下文扩展的“父子召回”,又能通过元数据过滤实现按章节的精确检索,比硬编码目录结构的鲁棒性强得多。
9. 你们的具体检索方式和重排算法是什么?系统响应时间如何优化?
最优回答:
-
分层检索架构:
-
L1 语义缓存层:高频问法对存储在 Redis 中,使用
Sentence-BERT进行向量化,命中则直接返回,毫秒级响应。 -
L2 混合检索:采用
BGE-M3模型同时生成密集向量和稀疏向量。密集向量使用HNSW算法进行语义检索,稀疏向量使用BM25算法进行关键词检索,双路召回后进行倒数排名融合。 -
L3 精细化重排:使用
BGE-Reranker-v2-m3模型进行交叉编码重排。为进一步提升精度,我们基于领域标注数据对Reranker进行了领域自适应微调,最终将Hit Rate@3提升了11个百分点。
-
-
响应时间优化(综合2-3秒):
-
关键加速点在于:① 有效的语义缓存直接拦截了约35%的请求;② 元数据过滤大幅缩小了检索范围;③ 使用
vLLM等高性能推理框架对 7B 模型做了量化加速。
-
10. 你们的 RAG 准确率达到93%,是如何评估的?如何构建数据飞轮持续优化?
最优回答:
-
评估体系:绝不用单一的平均指标。我们构建了分层评估体系:
-
组件级:对召回和生成两个阶段分别评估,召回用
Recall@K、MRR,生成用Faithfulness(忠实度)和Answer Relevance(答案相关性)。 -
场景级:将测试集按问题复杂度分类,统计各场景的通过率。93% 是综合平均分,我们更关注复杂场景的“短板指标”。
-
自动化工具:使用
RAGAS框架,结合GPT-4等评判模型进行大规模自动评分。
-
-
数据飞轮:
-
Bad Case 驱动:线上收集用户“踩”或客服转人工的案例。
-
消融实验:针对每个 Bad Case,我们模拟复现,并隔离变量进行消融实验(如单独替换切片策略、检索策略或 Prompt),以最小粒度定位问题根因。避免了“大锅饭式”调优。
-
闭环迭代:定位到问题后,进行针对性修复,更新系统,观察该场景下的指标变化。这个循环让我们每次优化都有的放矢,收益可衡量。
-
11. 在 Agent 架构中,RAG 处于什么位置?和普通 RAG 有何不同?
最优回答:
在 Agent 架构中,RAG 被工具化和场景化了。
-
位置:RAG 不再是独立的问答系统,而是作为 Agent 可用的一个 知识检索工具(Retriever Tool)。Agent 根据任务目标,决定在何时、以何种查询策略调用它。
-
与普通 RAG 的区别:
-
被动 vs 主动:普通 RAG 是请求-响应式被动检索;Agent RAG 是目标驱动的主动探查,Agent 可能会分解问题、多次检索、变换关键词。
-
应用拓展:Agent RAG 不仅用于回答用户问题,还可以用于动态发现技能(Skills Discovery)。当 Agent 拥有成百上千个技能时,可以把所有技能的“名称和描述”向量化存入知识库,Agent 通过语义检索动态找到并激活所需技能,这解决了上下文爆炸和功能选择困难的问题。
-
四、 模型微调与工程化
12. 为什么会选择模型微调方案?解决了什么核心问题?
最优回答:
-
核心痛点:业务场景对时延极其敏感,复杂问题的多步 Agent 链路中,大模型 API 调用的累积延迟达到了 P95 30秒以上,用户体验不可接受。
-
方案选择:用“本地小模型微调替代云端大模型 API”。
-
解决方案:基于
Qwen2.5-7B基座,清洗出5万条高质量真实对话数据,并利用GPT-4生成边界案例进行数据增强。采用 QLoRA 方案,在rank=64下对模型的所有线性层进行低秩适配,并引入NEFTune噪声提升泛化能力。推理时使用vLLM框架部署,开启FlashAttention-2和连续批处理。 -
效果:端到端响应 P50 降至 3 秒内,P95 降至 10 秒内,推理成本大幅下降。通过严格的消融实验对比,微调后的 7B 模型在特定任务上成功率与线上大模型持平,实现了性能持平、延迟和成本大幅降低的目标。
13. 你们是如何推动企业内部的 AI Coding 工程化落地的?
最优回答:
我们的目标是用标准化的流程和工具,让 AI 成为高可靠性的开发伙伴。我主导推动了以下工作:
-
流程标准化:将“测试驱动开发(TDD)”和“文档驱动开发(DDD)”作为核心流程。任何功能开发,必须先生成测试用例和标准化的 PRD/UserCase 文档,上线前流水线强制校验。
-
上下文工程化:打造了大量内部
Skills。其设计原则是“渐进式披露”——平时只注入 Skill 名称和简介,需要时才展开完整知识文档和执行脚本,完美平衡了功能丰富度与上下文窗口限制。 -
知识沉淀:把所有组件的文档、最佳实践、开发规范都用结构化的 Markdown 文件 管理起来,使其成为 AI 的原生记忆。这不仅让AI写出符合规范的高质量代码,也使新人上手速度大幅提升。
-
流水线融合:我们将AI能力与CI/CD流水线深度融合,在PR创建前自动进行“AI Code Review”,检查代码规范、圈复杂度,并尝试生成单元测试,将质量卡口前移。
五、 NLP 与深度学习基础
14. LSTM 如何缓解梯度消失/爆炸问题?它比 RNN 擅长长距离依赖的原因是什么?
最优回答:
-
梯度消失/爆炸的缓解:LSTM 的核心是门控机制和细胞状态(Cell State)。细胞状态是一条贯穿时间的高速公路,梯度可以在其上相对无损地流动,缓解了连乘导致的指数级衰减或增长。三个门通过
Sigmoid函数输出 0-1 之间的值,控制信息的选择性通过,起到“梯度阀门”的作用。 -
长距离依赖的优势:普通 RNN 在每个时间步都会用当前输入和上一隐状态做一次全量计算,导致远期信息极易被近期输入“覆盖”。而 LSTM 的遗忘门可以选择性地“记住”重要的早期特征,遗忘无关的细节,从而让关键信息得以在细胞状态中长距离传递。这种有选择的读写机制,是它捕获长距离依赖的关键。
15. 什么是困惑度(Perplexity)?它是越低越好吗?
最优回答:
-
定义:困惑度是衡量语言模型预测能力的一个指标,可以理解为模型在预测下一个词时的“平均分支因子”。具体来说,它是语言模型给出的测试集上所有词的交叉熵的指数形式。
-
解释:PPL 越低,意味着模型对测试数据的概率建模越自信,不确定性越小,通常泛化能力越好。
-
使用场景与局限:PPL 适用于评估预训练基座模型的语言流畅度。但它绝不是一个任务导向的万能指标。对于特定的下游任务,更应关注 Accuracy、F1、BLEU、ROUGE 以及人类评估。一个 PPL 很低的模型,也可能在实际对话中产生大量废话或事实性错误。
16. 如何处理 OOV(Out of Vocabulary)问题?
最优回答:
在现代 NLP 中,这个问题已经从模型设计层面被根本性地解决了。
-
传统方法(Word-Level 分词):遇到未登录词只能标记为
<UNK>,导致信息丢失。 -
现代解决方案(Subword 分词):当前所有主流大模型都采用 BPE(Byte-Pair Encoding) 或 WordPiece 算法。它们将单词拆分为更小的、高频的子词单元,甚至字节。这意味着任何词汇,包括完全新创的词,都可以用已知的子词组合来表示,彻底消灭了 OOV 概念。这是 Transformer 模型成功的一大基石。
六、 综合与软技能
17. 领导安排一个项目,你有更好的方案但会增加工时,你会怎么处理?
最优回答:
用数据说话,看长期 ROI。
-
量化分析:我会快速把两种方案的投入(增加多少工时)和产出(对性能、可维护性、可扩展性的长期价值) 做成表格,用数据而非感觉对比。
-
风险与终局判断:如果我的方案能解决一个核心架构风险,或对系统终局形态至关重要,我会“据理力争”,因为这关系到团队的长期效率,不能为了短期工时而牺牲未来。
-
优先级对齐:如果改进不是核心路径,但确实有益,我会把它排入下一阶段的规划,在当前版本优先交付领导最关心的核心需求。
-
原则底线:如果原方案会将开发成本转嫁给用户,造成糟糕的用户体验,我绝不会妥协。技术人的职责之一就是坚守用户体验底线。
18. 你对未来企业 AI 落地有什么看法?最大的卡点是什么?
最优回答:
-
看法:当前企业 AI 正处于“降本增效-内部赋能”到“商业闭环-外部服务”的过渡期。未来的组织会演变成“人类决策+AI 执行”的超级个体或小团队模式,AI Native 的基建将是小而美的、可快速组装替换的微内核架构。
-
卡点:
-
基建缺位:缺乏全链路的可观测性、评估体系和数据飞轮,导致 AI 应用如同“黑盒”,效果不可控,优化无方向。
-
AI Native 人才错位:需要的是能“端到端”负责一个业务板块的复合型人才,而不是螺丝钉式的传统岗位分工。
-
商业落地的严苛性:内部应用可容忍 99% 的准确率,但面向 C 端用户时,1% 的差错就可能导致口碑崩塌和商业失败,这对稳定性、安全合规提出了质的飞跃要求。
-
更多推荐


所有评论(0)