afj;afja;j; nnmjk — title: 牛客 Agent 面试真题精选 date: 2026-06-02T00:00:00+08:00 draft: true tags:
- agent
- 面试
- 牛客
- langgraph
- rag
- mcp categories:
- Agent summary: 整理自牛客平台的 Agent 开发方向面试真题,涵盖 Agent 核心组件、工具调用、RAG、记忆机制、多 Agent 协作等高频考点,每题附答题思路。 description: 牛客 Agent 面试真题汇总,按模块分类整理:Agent 架构与工具调用、RAG 检索增强、大模型基础,每题提供关键答题思路,适合 Agent 开发实习岗位备考。 comments: true
1、Agent / 工具调用
- 介绍一下 Agent 的核心组件
- 思路:LLM(规划+推理) + Memory(短/长期) + Tools(外部能力) + Planner + Executor + Reflection;关键区别是「循环执行」而非一次调用。
- ReAct 的执行流程是什么
- 思路:Thought → Action(选工具+参数) → Observation(工具结果) → Thought 循环,直到 Final Answer 或达步数上限。
- Function Calling 和 MCP 的区别
- 思路:FC 是模型↔工具的协议(OpenAI 起源);MCP 是工具/数据源标准协议(Anthropic),目标让工具跨模型/跨 Agent 复用。
- 多 Agent 系统怎么协作?常见架构有哪些
- 思路:中心化(Orchestrator+Worker) / 去中心化(消息总线) / 分层(Manager→Specialist);讲清「分配/避免循环/聚合」。
- Agent 的规划能力怎么实现
- 思路:显式规划(先输出 plan 再执行) vs 隐式(边想边做);常用 ReAct/Plan-and-Execute/ToT;复杂任务先 plan 后 reflection。
- Agent 的记忆机制有哪些(短期 / 工作 / 长期)
- 思路:短期=对话上下文;工作=本任务中间状态;长期=向量库存历史/偏好。要会答「各自适合什么场景+数据结构」。
- Agent 工具调用失败怎么处理
- 思路:重试(指数退避) + 工具替换/降级 + Reflection 改参数 + 兜底回复;强调「不要无限循环」,设 max_retry。
- 怎么评估 Agent 的效果
- 思路:任务完成率 + 步数效率 + 工具调用正确率 + Token 成本 + 人工评分;端到端 + 单步双轨。
- LangChain 和 LangGraph 的区别
- 思路:LangChain 链式抽象适简单工作流;LangGraph 显式 DAG/图,适复杂分支+循环+多 Agent。
- Agent 多轮执行出错怎么定位
- 思路:全链路 trace(每步输入/工具/输出) + LangSmith/LangFuse 可观测平台;按步看哪一步偏离预期。
- ReAct 比单纯 LLM 强在哪
- 思路:能调外部工具拿事实,多步推理时能校验中间步骤;适合需要现场查/算的任务。
- Agent 框架你用过哪些?各自优缺点
- 思路:LangChain/LangGraph/AutoGPT/CrewAI/Coze/Dify 中至少讲 2 个,按「上手成本/扩展性/可观测性/适合场景」对比。
- 你做的 Agent demo 用了几个工具
- 思路:不必多,3-5 个就够(搜索+DB+代码执行+计算);重点讲「为什么选这些」。
- Agent 怎么决定调哪个工具
- 思路:LLM 根据 prompt 中的 tool 描述 + 当前上下文 + few-shot 例子决策;好的 tool 描述 = 决策关键。
- Reflection 失败 3 次后怎么处理
- 思路:切换工具/降级到固定回复/转人工/给错误说明 + 重新提问引导;设 max retry 防死循环。
- Coze / 扣子是 Agent 平台还是工作流平台
- 思路:字节出品的 Agent 工作流平台,本质低代码可视化编排 + LLM 节点;和 Dify 同类,介于纯 Agent 和 BPM 之间。
- 流式返回时,如何插入非文本事件(工具调用标记、思考过程、错误提示、分段标识),且不影响前端渲染?
- 思路:用结构化事件流(event: text|tool_call|thinking|error),前端按 event type 分别渲染。
- ReAct框架在实际开发中,如何避免“思考与行动脱节”?
- 思路:tool 描述要精准 + Few-shot 示范 + 必要时让模型先规划再 act + Reflection 校验上一步是否真做到。
- Agent工具调用的Schema设计核心是什么?
- 思路:名字精准(动宾)、描述说清「何时调」、参数 schema 严格、加 example、避免歧义和重叠。
2、RAG / 检索
- 介绍一下 RAG 的整体流程
- 思路:Query → 改写(可选) → Embed → 检索(向量+BM25 混合) → Rerank → 组装 context → LLM 生成。强调「检索是为生成服务」。
- RAG 解决了大模型的什么核心问题
- 思路:幻觉、知识过时、私有数据无法访问;本质是把「事实」从模型权重里拆出来变成可更新的外部知识。
- 文档切片粒度怎么定?切大切小各有什么风险
- 思路:太大→噪声多+context 浪费;太小→语义不全。500-1500 字常用,按语义边界(段/小节)切,加 overlap。
- 向量召回和 BM25 关键词召回各自适合什么场景?为什么要混合
- 思路:向量懂语义/同义改写;BM25 对术语/精确匹配强。常做 hybrid + Rerank 取长补短。
- Embedding 模型怎么选?有哪些主流方案
- 思路:看场景(中英/通用/领域)、维度(算力)、最大输入、benchmark(MTEB);中文常用 BGE/M3E/E5。
- Rerank 在 RAG 链路里起什么作用?什么时候必须加
- 思路:召回阶段牺牲精度换召回,Rerank 用 cross-encoder 精排 Top N;文档质量参差或召回噪声多时必加。
- 如何评估 RAG 的检索质量?常用指标有哪些
- 思路:Recall@K / Precision@K / MRR / NDCG;可加 LLM-as-judge 评忠实度。
- RAG 的幻觉怎么治理
- 思路:提高召回质量 + Prompt 约束「基于上下文回答」 + 校验生成是否能在 context 找到依据 + cite 来源。
- 如何处理长文档?切片 / 摘要 / 父子文档怎么选
- 思路:短问题→直接切片;信息分散→摘要+索引;语义连贯重要→父子块。常常组合用。
- 多模态 RAG 怎么做?有什么坑
- 思路:文/图/表分别 embed → 统一/分库召回 → LLM 多模态理解;坑: 模态对齐、混合排序、上下文长度。
- 知识图谱和 RAG 怎么结合
- 思路:实体识别后查图谱拿关系 + 向量检索拿描述;适合金融/医疗强关系场景,弥补纯文本 RAG 关系缺失。
- RAG 召回率低怎么排查
- 思路:看 query 改写质量 → 切片粒度 → embedding 模型适配度 → 索引参数 → 数据覆盖度;逐层定位。
- Top K 怎么定?太大太小各有什么问题
- 思路:太小漏召回;太大噪声+token 浪费。常 K=5-10,配合 Rerank 取 Top 3-5 送 LLM。
- RAG 上下文压缩有哪些方法
- 思路:LLMLingua 类 token 压缩 + 句子级抽取 + Rerank+截断 + Map-Reduce 归纳。
- 与直接对 LLM 进行微调相比,RAG 主要解决了什么问题?
- 思路:知识更新成本低 + 可解释(给来源) + 私有数据不入权重 + 动态可控。
- 一个完整的 RAG 流水线包含哪些关键步骤?
- 思路:见 RAG 整体流程;补一句「每步都要单独评估和监控」。
- 评估一个 Embedding 模型的好坏有哪些指标?
- 思路:MTEB 各任务平均 + 目标场景 Recall@K/MRR + 推理速度 + 维度 + 最大输入长度。
- 除了基础的向量检索,你还知道哪些可以提升 RAG 检索质量的技术?
- 思路:Query 改写/扩展、HyDE、混合检索、Rerank、父子块、压缩、自适应 K、查询路由。
- 在什么场景下,你会选择使用图数据库或知识图谱来增强或替代传统的向量数据库检索?
- 思路:强关系/多跳查询(金融关联交易/医疗用药关系/法律案例引用),纯文本召回不出关系时用。
- 如何全面地评估一个 RAG 系统的性能?
- 思路:检索 + 生成 + 端到端三层 + 时延 + token 成本 + 用户满意度。
3、Prompt / 思维链
- CoT 的原理和效果来源
- 思路:让模型显式输出中间步骤(「Let’s think step by step」)激活推理能力;本质是用更多 token 换更好 reasoning。
- Few-shot vs Zero-shot 怎么选
- 思路:任务复杂/格式严格用 Few-shot 给样例;任务清晰、模型能力强用 Zero-shot 省 token。
- Prompt 注入怎么防范
- 思路:分隔符 + 角色绑定 + 输入过滤 + 输出审计 + 不让用户控指令边界 + 关键操作二次确认。
- 一个好的 Prompt 模板包含哪些要素
- 思路:角色 + 任务 + 输入 + 输出格式 + 约束 + Few-shot 例子;结构化分段。
- 怎么评估 Prompt 的优劣
- 思路:离线评估集 + 业务指标 + A/B 对比 + LLM-as-judge;要有客观标准。
- 思维链失败怎么调整
- 思路:更详细的 Few-shot CoT 示例 + 拆任务 + 加 Reflection + 换更强模型 + 降低 Temperature。
- 多轮对话的 Prompt 怎么设计
- 思路:system prompt 锚定角色 + 历史摘要压缩 + 关键信息槽位提取 + 防 prompt 漂移。
- Prompt Chaining 是什么
- 思路:把复杂任务拆成多个 prompt 串行(前一步输出当后一步输入),比单个超长 prompt 稳定可调试。
- 结构化输出怎么保证
- 思路:JSON schema + Few-shot + Function Call/Tool Schema + 输出后 JSON 解析重试 + 严格模式(structured output)。
- Prompt注入攻击如何防御?
- 思路:见 Prompt 注入怎么防范。
- 上下文工程和提示词工程有什么区别?
- 思路:Prompt 工程偏单次指令优化;上下文工程偏「喂给模型的所有 context」组织(系统 prompt+ 历史+RAG 召回+工具描述)。
- 如何做自动化 Prompt 优化(A/B test / eval)?
- 思路:评估集 + 候选 prompt → 跑分对比 → 自动迭代(用 LLM 改 prompt);要防过拟合到评估集。
4、项目深挖 / 简历
- 介绍一下你做过的最有挑战的 AI 项目
- 思路:选 1 个有 AI 含量(不是套壳)、有指标、有踩坑的项目;按「业务背景→技术方案→关键难点→指标」4 段讲,控制 2-3 分钟。
- 这个项目的核心难点是什么
- 思路:抓「非确定性」难点(评估难/数据难/对齐难/部署难),不要泛泛说「工程量大」。
- 选型为什么是这个方案?对比过哪些
- 思路:至少列 2 个候选方案 + 比较维度(成本/性能/可维护性/数据需求),证明做过 trade-off。
- 项目踩了哪些坑?怎么解决的
- 思路:选 2-3 个具体坑(幻觉/召回低/推理慢/上下文超长),每个讲「现象→根因→方案→效果」。
- 关键指标有哪些?北极星指标是什么
- 思路:北极星 = 真实业务指标(留存/转化/任务完成率),配代理指标(召回率/CTR);两者要能解释因果。
- 上线后效果怎么衡量
- 思路:A/B 实验 + 离线指标 + 用户反馈三件套;不要只说「反馈好」,要给数。
- 如果重做你会怎么做
- 思路:体现学习能力;选 1-2 个「现在视角看会做不同」的点(技术选型/数据策略)。
- 你在团队里的角色是什么
- 思路:STAR 法说清「我具体做了什么、对成果有什么影响」,别说「参与」。
- 和业务方怎么对齐的
- 思路:PRD → 关键指标对齐 → 双周 demo → 灰度;强调「提前对齐预期避免上线后扯皮」。
- 项目最后真的上线了吗
- 思路:诚实回答;没上线就讲「为什么没上线 + 学到什么」,别硬撑。
- 在构建数据集的过程中,遇到了哪些挑战?
- 思路:数据清洗、标注一致性、长尾覆盖、版权/隐私、合成数据质量评估,挑 2-3 个深入。
- 你做过的 AI 项目中最困难的技术挑战是什么,你是如何解决的?
- 思路:和「核心难点」同框,加一句「我用了 XX 方法量化解决了 XX 问题」,有数字最好。
- 在项目中是如何进行 LLM 模型选择的?
- 思路:需求(能力/上下文/中英文)→候选(GPT/Claude/Qwen/DeepSeek)→评估(自有评估集)→trade-off(成本/合规/SLA)。
- 简历上的AI项目,面试官到底想看什么?
- 思路:有 AI 含量(不是套壳) + 真问题 + 有指标 + 你做了关键决策。要能讲清「我」做了什么不是「团队」做了什么。
5、工程 / 部署 / Infra
- vLLM 的核心优化是什么
- 思路:PagedAttention(分页 KV cache) + Continuous batching(动态合批) + 量化 + prefix cache;吞吐比 HF 高数倍。
- 模型量化 / 蒸馏的区别
- 思路:量化: 降精度(FP16→INT8/INT4),结构不变;蒸馏: 教师→学生,结构变了;可叠加。
- 端侧部署的挑战
- 思路:算力/显存/电耗受限;要小模型(SLM 1-7B) + 量化 + 推理引擎(MLC LLM/llama.cpp/ONNX Runtime)。
- 分布式训练的常见策略
- 思路:DDP(数据并行) + Tensor 并行(切矩阵) + Pipeline 并行(切层) + ZeRO(优化器分片);大模型常组合用。
- GPU 显存怎么优化
- 思路:量化 + KV cache 分页 + 梯度检查点 + 混合精度 + ZeRO + offload 到 CPU/NVMe。
- 推理服务的限流和兜底
- 思路:令牌桶限流 + 优先级队列 + 排队 + 降级到小模型/缓存/规则回复。
- 私有化部署的取舍
- 思路:数据安全 vs 维护成本 + 模型迭代速度;金融/政务/医疗强合规必须,中小企用 API 更经济。
- 模型缓存怎么设计
- 思路:输入归一化 hash → 命中直接返回;语义近似可用 embedding 相似度;可降 30-70% 调用成本。
- 推理框架你用过哪些
- 思路:vLLM/TGI/TensorRT-LLM/SGLang/llama.cpp/MLC LLM;按部署场景(云端/边缘)和模型大小选。
- 模型量化(INT8/INT4/FP8)的原理?
- 思路:把权重/激活从 FP16/32 降到 INT/FP8,体积/算力小数倍;精度损失靠校准/QAT 控制。
- 量化后的坑如何规避?
- 思路:校准集要代表性 + 关键层(attention)保留高精度 + 对比量化前后效果 + 不在长上下文盲量化。
6、评估 / 幻觉 / 安全
- 幻觉的根本原因
- 思路:模型本质是概率生成,没事实校验机制;预训练数据噪声 + 缺乏知识 + 外推超出能力。
- 幻觉怎么治理
- 思路:RAG 拿事实 + Prompt 约束 + 自检 reflection + 关键输出人工/规则校验 + cite 来源。
- 大模型评测有哪些标准
- 思路:MMLU/HumanEval/GSM8K/HellaSwag 等公共基准 + 业务任务自评 + LLM-as-judge + 红队测试。
- AI bias 怎么处理
- 思路:数据均衡 + 对齐阶段加 fairness 约束 + 上线后偏见监控 + 关键决策保留人工。
- 越狱攻击怎么防
- 思路:Prompt 加防御指令 + 输入分类器 + 输出审核 + RLHF 对齐安全场景 + 持续红队迭代。
- 可解释性 AI 在什么场景必须
- 思路:金融信贷/医疗诊断/司法/招聘等高风险高合规场景,决策需可追溯可解释。
- AIGC 水印是什么
- 思路:在生成内容中嵌入不可见可检测的标记,用于溯源/反伪造/版权。
- AI 偏见在招聘 / 信贷场景的风险
- 思路:历史数据偏见放大 → 歧视性决策 → 合规风险(GDPR/反歧视法) + 品牌风险。
- 各自的成本、稳定性、安全性对比?
- 思路:结合上文方案对比;按「成本/SLA/合规/数据出境」维度展开,给量级数字最好。
- 如何做输出内容审核、毒性检测?
- 思路:关键词 + 分类器(toxic/violent/political) + LLM judge + 灰度策略 + 反馈迭代。
- 怎么规避大模型的幻觉?
- 思路:见幻觉怎么治理。
- 如何解决幻觉问题?
- 思路:见幻觉怎么治理。
- 如何降低模型幻觉?
- 思路:见幻觉怎么治理。
7、Coding / 手撕 / 算法题
- 手撕 Transformer 简化版
- 思路:实现 Multi-Head Attention + LayerNorm + FFN 一个 block;KV 投影、scale、mask、softmax 关键。
- 实现简易的 self-attention
- 思路:softmax(QK^T/√d)·V,三个线性层 + scaled dot-product;要能讲清 mask、numerical stability。
- 实现一个 BPE 分词
- 思路:统计 byte-pair 频率 → 迭代合并最高频对 → 构建词表;重点 merge rule + encode/decode。
- 实现一个简易 RAG 流程
- 思路:load docs → chunk → embed → 存向量库 → query embed → top-K 检索 → 拼 prompt 调 LLM。
- 实现 ReAct Agent 框架
- 思路➿ LLM 生成 thought+action → 解析 → 调 tool → 拿 observation → 喂回 LLM;终止条件 + max steps。
- LeetCode 二分 / 滑动窗口 / DP
- 思路:三大基础算法,准 hot 100;二分注意边界,滑窗注意收缩条件,DP 注意状态定义+转移。
- 链表 / 二叉树常见题
- 思路:反转/合并/环检测;遍历/层序/最近公共祖先/序列化;递归 + 双指针。
- 实现一个简单的工具调用
- 思路:定义 tool schema → LLM 输出 JSON 调用 → 解析参数调函数 → 返回结果给 LLM。
- 滑动窗口算法是怎么实现的?
- 思路:双指针维护窗口 [l,r],扩 r 加入元素,触发条件后收 l;时间 O(n)。
- 如果使用滑动窗口,结构体中会包含哪些字段?
- 思路:l/r 指针 + 窗口统计(map/sum) + 当前最优解 + 边界判断标志。