【面试真题】美团Agent 方向面经整理(思路引导 + 推荐回答)

Agent / LLM 方向面经整理(思路引导 + 推荐回答)

每章开头有一小段本章思路引导(这类题整体上在考什么、怎么组织话)。每道题下先有一行思路(答题时先想什么),再是推荐回答(可参考的表述骨架)。请把里面的名词、数字换成你项目里的真实情况,别整段背。

一、写在前面

如果投的岗位对后端技术栈有一两条要求,你没有相关经历但业务还是放了简历进来,最好针对 JD 里那两条单独准备一下。其实就算 JD 没写死,HTTP、流式、异步这类也算互联网底座,有时间还是摸一遍皮毛,面试里至少能接住话头、显得你是主动补过的人。

没正经后端经历的(比如我),体感是面试官一般不会往死里抠实现细节,更在意知识广度和积极性:你有没有针对他们的栈新学东西、工作之余有没有继续啃。忙成狗还得学,这事没得商量,只能认。

下面从「项目深挖」按模块往下写;项目主线(Agent、LangGraph、上下文、工具、评测)通常是追问最深的,RAG 和训练会顺着简历二选一挖到底,后端更像扫一圈广度。

二、项目深挖(Agent)

本章思路引导

这块考的是项目是不是你亲手推过:能不能画白板(输入→编排→工具→观测)、状态放哪、失败怎么回滚,以及每个技术选型背后的取舍,而不是堆名词。习惯用「总览一句 → 分三层展开 → 主动说一个代价或没做的点」;和 Claude Code / 中台对比的题,考的是边界感(数据域、合规、集成成本),别答成「我们更强」这种空话。

Q1 整个 Agent 的设计思路、架构?

思路:
先想白板上四条线:编排谁调谁、state 放哪、工具与观测、失败怎么回滚;对方在看你能不能拆模块讲验收。

推荐回答:
我们整体是「编排层 + 模型层 + 工具层 + 观测层」。用户任务进来先归一成内部任务协议,编排层用状态机/图决定下一步是规划、调工具还是直接回复;状态(对话、计划、工具中间结果)集中放在可序列化的 state 里,方便断点续跑。模型负责理解与生成,工具负责和外部世界交互,日志与 trace 单独打,失败走重试或降级路径。这样拆的好处是:换模型、加工具、改流程时边界清楚,评测也能按模块拆开看瓶颈。

Q2 为什么用 LangGraph?有什么缺点?是不是过度设计?

思路:
技术选型题必答 trade-off:LangGraph 的收益是显式状态与可恢复,代价是复杂度;再答「什么业务不需要图」。

推荐回答:
选 LangGraph 主要是因为流程不是一条直线:有多分支、人机确认、需要 checkpoint 恢复。它把「状态 + 边」写清楚,比 while 循环里塞 if-else 好维护。缺点是团队要接受图的心智模型,小改动有时要动边和 reducer,样板代码偏多;若业务只是「分类 → 单次检索 → 回答」,用简单 ReAct 循环就够,上图确实偏重。是否过度设计看三点:有没有真实的中断恢复需求、流程会不会频繁改、团队能不能 hold 住这套抽象。

Q3 为什么要自研,不直接用 Claude Code 或公司内部 Agent?

思路:
考你是否理解现成产品的边界:数据域、集成、审计、评测指标;自研要落到「薄编排 + 自有工具」这类可执行形象。

推荐回答:
现成产品解决的是通用问题,我们这边要的是和内部系统、权限、数据域深度耦合,以及可审计、可灰度、成本可控。CC 或内部平台若能满足八成,我们也不会重复造轮子;实际上往往是接口粒度、记忆策略、评测指标和业务不一致,自研一层「薄编排 + 自有工具」更划算。若公司已有统一 Agent 中台,也可以答:我们在中台上做领域适配层,而不是从零造引擎。

Q4 如果项目要基于 CC 直接改造,你具体会怎么做?

思路:
改造题考路径感:先协议与数据边界,再工具/RAG/评测/监控,别一上来换大模型。

推荐回答:
先不动核心对话能力,做四件事:一是任务与上下文协议对齐(哪些进 CC、哪些留在外层服务);二是把敏感数据与工具执行放在内网网关后,CC 只拿脱敏后的摘要或检索块;三是补评测与回归(固定用例 + 沙箱执行);四是监控与配额(token、工具错误率、延迟)。改造顺序上先接工具与 RAG,再迭代记忆与多步任务,最后才考虑是否替换底层模型,降低一次性风险。

Q5 项目里的工具链能不能 Skill 化?

思路:
考粒度与治理:哪些链路值得 Skill 化、版本与示例怎么维护;别全肯定或全否定。

推荐回答:
能,但要挑路径。高频、参数模式稳定、有明确成功失败判据的工具调用链,适合收成 Skill:带说明、示例、边界和默认参数。强依赖本地环境、一次性脚本、或每次参数差异很大的,保留为裸 Tool 更省事。Skill 化之后要做版本号和兼容策略,否则模型读到旧说明会乱调。我们项目里可以举例:例如「查库 → 格式化 → 写报告」这类流水线_skill 化,单次 grep 类仍当 Tool。

Q6 项目能持续演进吗?是否还有演进价值?

思路:
用指标和 roadmap 说话,避免空喊「有价值」;可说 plateau 之后转成本或沉淀组件。

推荐回答:
有价值的前提是能量化:准确率、成本、延迟、覆盖场景是否在变好。演进方向一般是:评测集扩大与难例覆盖、工具稳定性、记忆与上下文策略、多模态或更深业务集成。若指标已经 plateau,就转向维护与成本优化,或把能力沉淀成公司内部组件。这样答比空喊「有」更可信。

Q7 项目怎么评测?数据集自建吗?能沙箱吗?怎么监控?

思路:
闭环题:离线集怎么建、沙箱隔离什么、线上监控什么指标;各举一类即可串起来。

推荐回答:
离线用自建 + 抽样真实日志脱敏:按任务类型分层,包含成功路径和故意设计的失败路径。能沙箱的话,工具执行在隔离容器或受限 API 代理里跑,避免评测污染生产。在线看 A/B 或灰度桶的完成率、重试率、用户显式纠正率。监控上打全链路 trace:每步模型耗时、工具错误码、token 用量、幻觉类规则命中(如未引用却断言),异常进告警和 badcase 池。

Q8 准确率还有什么优化方案?

思路:
分层答优化(检索/生成/工具/数据/模型),体现你量过瓶颈;忌只答换大模型。

推荐回答:
分层说:检索侧(改写、混合检索、rerank、chunk 策略)、生成侧(约束输出格式、强制引用、拒答策略)、工具侧(参数校验、超时与重试)、数据侧(badcase 回流改 prompt 或改文档)、必要时换模型或做小域 SFT。避免只答「换更大的模型」,面试官更希望听到你从哪一层量到了收益。

Q9(对比 CC)有了 Claude Code,为什么还要做类似项目?

思路:
差异化 + 诚实:没差异化就不该做;合规与嵌入业务系统是比「又一个聊天」更硬的点。

推荐回答:
CC 面向通用编码与开源生态,我们面对的是特定数据域、合规和内部工具链,需要可控的发布节奏和定制记忆/评测。重复的不是「聊天写代码」这一件事,而是把能力嵌进现有工单、权限和 SLA 里。若完全没有差异化,确实不该做,这点可以主动承认,再强调我们的差异化落点。

Q10 和 Claude Code 相比,核心差异?哪里更好、哪里不如?

思路:
对比题各举一条具体优劣,忌一边倒吹牛或贬低业界产品。

推荐回答:
更好的一般在:领域工具齐全、内部知识接入深、成本和数据可控、能按业务改评测标准。不如的常见在:通用代码能力、生态插件、产品化体验。答的时候各举一条具体的,避免一边倒吹牛或一边倒贬低。

Q11 分层上下文管理,每一层管的是什么?

思路:
分层不是背名词:每层谁写谁读何时淘汰,比罗列层名重要。

推荐回答:
常见分法:系统/安全层(角色、禁止项)、会话短期(最近几轮原文或滑动窗口)、任务 working memory(当前子目标、计划步骤)、长期记忆(跨会话摘要、用户偏好、可检索事实)、工具层缓存(大工具结果折叠或存引用)。关键是每层谁写、谁读、何时淘汰要说清,否则分层只是名词堆砌。

Q12 摘要生成用什么模型?摘要质量怎么保证?

思路:
模型档位 + 模板约束 + 抽检/自动指标 + 涉敏闸门,四块凑齐就完整。

推荐回答:
模型选小一点的专用摘要模型或主模型的低温度调用即可,看成本与延迟;关键在模板:要求保留实体、数字、约束、未决问题,避免「总结成空话」。质量上用抽检 + 自动指标(如与原文的实体重叠率、关键句是否被删)、badcase 回灌改模板。摘要写进长期记忆前要可加人工或规则闸门(涉敏字段不落摘要)。

Q13 有没有试过 subagent?多个 agent 起什么作用?

思路:
分工与代价:为何拆 subagent、没上生产的原因(协调/延迟)可以说实话。

推荐回答:
试过或规划过都可以诚实说。作用主要是分工:例如检索 Agent、执行 Agent、评审 Agent 拆开,减轻单上下文压力,也方便单独限步和重试。没上生产可以说原因:协调成本、一致性、延迟,以及当前任务复杂度是否值得。

Q14 主 agent 和子 agent 怎么通信?

思路:
通信三种形态选一种你熟悉的展开,必提超时与失败冒泡。

推荐回答:
实现上常见三种:编排器下发子任务并收结果(像 RPC);共享 checkpoint / 黑板状态(读写约定 schema);消息队列/事件总线(解耦但调试难)。要提超时、子任务失败如何冒泡到主任务、以及如何避免两个 agent 同时写乱状态。

Q15 有没有遇到 agent 死循环?怎么解决?

思路:
工程手段优先于 prompt:步数、重复检测、无进展终止、state 里计数。

推荐回答:
遇到过或预防性做过都可以。手段包括:全局最大步数、同一 (tool, args) 重复检测、连续无进展(observation 不变)则强制停止或换策略、计划节点要求显式「完成」标记、必要时人机介入。实现上把「步数与重复计数」放在 state 里,图里单独做条件边,比只靠 prompt 稳。

三、LangGraph 专项

本章思路引导

对方想确认你真用过图编排:checkpoint 与 thread、state schema、幂等与异常边,而不是只看过文档。答的时候尽量落到「我们 thread_id 怎么映射」「工具非幂等怎么摆中断点」这种可追问细节;说不清就诚实说没上生产,别编 API。

Q16 LangGraph 的中断恢复具体是怎么做的?

思路:
checkpoint + thread + 幂等;中断点别落在非幂等工具中间除非有补偿。

推荐回答:
依赖 checkpoint:每个节点前后把完整 state(含 channel 合并结果)持久化到配置的 saver(内存/Redis/SQLite 等)。中断后用 thread_id 加载最新 checkpoint,从下一节点或失败节点重放。要注意工具副作用是否幂等;非幂等工具要么用事务/补偿,要么中断点设计在「纯推理」之后。

Q17 节点间复杂数据怎么传递?

思路:
schema、reducer、大对象外置与版本兼容;这是「真做过图」才会碰到的点。

推荐回答:
靠 TypedDict 或 Pydantic 定义的 state schema,大字段用「引用 ID + 外存」避免把巨型工具输出塞进每次 checkpoint。列表类字段用 reducer(如 append、merge dict)控制并发写入。复杂结构要版本化字段名,避免后续加节点时反序列化失败。

Q18 要用 LangGraph 做 A2A(Agent 到 Agent)怎么做?

思路:
对端当外部节点或 tool;协议、鉴权、超时、多实例一致性提一句。

推荐回答:
把对端当「外部节点」:本图里一个节点负责发请求(HTTP/gRPC/消息队列),对端返回结构化结果再写回 state;或把对端封装成 tool,由模型决定何时调用。协议层要约定消息格式、鉴权、超时与幂等。多实例部署时 thread_id 与 checkpoint 存储要一致,避免两个 worker 各写各的。

Q19 checkpoint 怎么存?怎么恢复?

思路:
checkpointer 选型、thread 映射、合规保留周期;开发/生产分开说。

推荐回答:
LangGraph 侧用 checkpointer 接口,开发常用 MemorySaver,上线用 PostgresSaver、Redis 等。存的是序列化后的 state snapshot + metadata(thread_id、checkpoint_ns)。恢复时 graph.get_state(config) 或从指定 checkpoint_id 继续 invoke。要和业务上的「会话 id」映射好,并考虑加密与保留周期合规。

Q20 长期运行 checkpoint 越来越多、上下文越来越长怎么办?

思路:
checkpoint 与 context 两条线都要裁剪:TTL、摘要、拆 thread,和业务对齐恢复粒度。

推荐回答:
checkpoint 按策略裁剪:只保留最近 N 个或按时间 TTL,或合并为「里程碑 checkpoint」。上下文侧做摘要压缩、工具输出折叠、只保留任务相关字段进模型窗口。长期任务可拆 thread 或子图,避免单 thread 无限增长。和业务对齐「最坏情况下能恢复到什么粒度」。

Q21 节点执行异常怎么处理?

思路:
分类异常:可重试 vs 不可重试,错误边与观测别吞。

推荐回答:
节点内 try/except,区分可重试(网络抖动)与不可重试(参数非法):可重试走退避重试边,不可重试写错误 state 并走错误边或交给「修复」节点。不要让异常吞掉;关键路径打日志和指标。对 LLM 调用单独处理 rate limit 与空响应。

Q22 在现有 LangGraph agent 上新加功能,怎么做?好扩展吗?

思路:
扩展性实话实说:新节点新边、state 契约向后兼容、工具注册表。

推荐回答:
加功能优先加节点与新边,尽量不改已有字段语义;若必须改 state,做向后兼容(默认值、迁移函数)。工具用注册表动态挂接,减少改核心图。扩展性实话实说:流程稳定时扩展性好;若早期 state 设计随意,后期会痛,可以举自己一次重构例子。

四、上下文与记忆

本章思路引导

考的是上下文工程而不是背「长期记忆」四个字:窗口、成本、指代、工具大段输出怎么挤占有效 token。重点讲谁写谁读谁删、规则与模型怎么分工;项目题没有标准答案,用你真实存储与触发条件答,比模板安全。

Q23 长对话系统会遇到哪些问题?怎么解决?

思路:
窗口、成本、遗忘、工具输出占位;对策和场景一一对应。

推荐回答:
问题主要是窗口溢出导致早期指令被遗忘、指代消解变差、成本上升、长工具输出挤占有效 token。对策:滑动窗口 + 周期性摘要、结构化记忆(键值表)、任务分片开新会话、工具结果摘要写回、必要时用子 agent 分担上下文。

Q24 长期记忆和短期记忆怎么区分?长期记忆保存策略?怎么判断、怎么执行?

思路:
定义短/长期生命周期 + 写入触发 + 执行流水线;忌「什么都进长期」。

推荐回答:
短期:当前任务几轮对话和临时变量,生命周期随会话结束可丢。长期:用户偏好、跨会话事实、项目背景,需显式写入策略(例如用户确认「记住这个」、或系统检测到重复出现的高置信事实)。判断可用规则(实体类型、是否涉敏)+ 小模型打分是否值得记。执行上是「写入队列 → 去重合并 → 存储(向量库/表)→ 检索时注入」。

Q25 哪些上下文可以删?哪些不能删?为什么?怎么判断?

思路:
安全与任务关键信息慎删;大段重复工具输出可折叠;规则为主模型为辅。

推荐回答:
不能删:系统安全约束、用户明确约束、未完成任务的关键条件、最近一次工具错误信息(除非已解决)。可以删或折叠:重复的工具大段输出、已进摘要的原文、过期轮次。判断用优先级规则为主,模型为辅;删除前可做「若删则无法回答某类问题」的探测(可选)。

Q26 除了上下文压缩还有哪些方案?

思路:
外置记忆、拆会话、结构化计划、多 agent 分上下文,任选两条讲清适用条件。

推荐回答:
外置记忆(RAG/知识库)、子会话拆分、把状态存在数据库只传摘要进模型、用结构化计划代替全文历史、多 agent 各持一部分上下文、对工具输出只保留结论字段。

Q27 项目里长期记忆是怎么设计的?(结合真实项目)

思路:
这里必须接你真实项目:存储、触发、冲突策略;没有就答规划与 trade-off。

推荐回答:
按你实际写:存储用 Postgres + 向量库或仅表结构;写入触发条件;是否分层(事实层/偏好层);冲突时新覆盖旧还是保留多版本;读取时 top-k 与相关性阈值。没有完美方案,诚实说 trade-off 即可。

Q28 项目在上下文工程上做了哪些工作?

思路:
挑 2~3 个落地动作说透:模板、裁剪、工具折叠、评测对齐上下文等。

推荐回答:
可答:Prompt 模板与变量治理、动态裁剪策略、工具返回的 max token 截断与二次摘要、多模态对齐(图文顺序)、调试时可视化 state、与评测集对齐的「标准上下文」构造。挑 2~3 个最有量的说透。

五、Agent 架构通识

本章思路引导

这里偏范式与权衡:ReAct vs Plan&Execute、多 Agent 通信、评测与 harness。面试官希望听到适用场景各举一反例,以及你对 benchmark 是否真读过题设;harness 能说清「可重复环境 + 自动打分 + 日志」就够用。

Q29 ReAct 循环怎么限制?怎么保证稳定性?

思路:
硬预算 + 软约束(白名单、重复、无进展); observation 质量影响稳定性。

推荐回答:
硬限制:最大步数、最大工具调用次数、时间预算、token 预算。软限制:工具白名单、计划校验节点、重复调用检测、无进展则终止或请求澄清。稳定性还依赖工具幂等与清晰 observation,避免模型被噪声带偏。

Q30 Plan & Execute 和 ReAct 的应用场景和区别?

思路:
探索 vs 可审计流水线各举一例;可补一句混合架构。

推荐回答:
ReAct 是边想边做,适合环境反馈密、路径不确定的探索任务。Plan & Execute 先出完整或阶段性计划再执行,适合步骤可预估、需要可审计流程的任务(如固定流水线)。P&E 缺点是计划可能一开始就不对;ReAct 缺点是步数多、成本高。很多系统两者混用:粗计划 + 细 ReAct。

Q31 多智能体架构都有哪些?

思路:
列 2~3 种架构 + 工业界常见「编排器+专家」即可,忌空泛多 agent。

推荐回答:
层级(主管拆任务给工人)、流水线(A 输出给 B)、对等协商、黑板/共享内存、市场拍卖式任务分配。工业里常见的是「编排器 + 若干专家 agent」,不要太迷信「很多个聊天机器人」。

Q32 多 agent 怎么通信?

思路:
消息、共享状态、编排器中转 + 死锁与 schema 版本。

推荐回答:
直接消息、共享状态、通过编排器中转。要考虑顺序、锁、死锁(两个 agent 互相等)、以及消息 schema 版本。简单场景用编排器最省心。

Q33 怎么让 Agent 越用越聪明?

思路:
飞轮:日志、badcase、评测、工具库;别只答微调。

推荐回答:
靠数据飞轮:badcase 回流、工具与 prompt 迭代、评测驱动改检索与约束;有预算可做偏好学习或小域微调。产品侧收集「用户纠正」比单纯堆对话更有用。强调评测与日志,别只答「微调」。

Q34 了解过 CC 的架构设计吗?主要流程是什么?

思路:
知道就说主链路,不知道别编内部细节。

推荐回答:
若了解:可概括为用户意图 → 上下文与文件状态管理 → 模型规划 → 工具/终端执行 → 结果写回上下文,循环直到任务结束。若不了解:直说只用过产品、没读内部架构,避免编细节。

Q35 Agent 有哪些评测标准?了解哪些 benchmark?

思路:
维度 + 1~2 个熟 benchmark 的题设,忌罗列名字。

推荐回答:
维度:任务成功率、平均步数、工具错误率、成本、人工评分。benchmark 可提 SWE-bench(代码修复)、AgentBench、WebArena、工具调用类榜单、GAIA 等,选熟悉的讲一两条评测设置,别罗列十几个名字。

Q36 harness 工程了解吗?主要内容?项目里怎么用?还能补什么?

思路:
harness = 可重复环境 + 打分 + 日志;再补一条业务向可增强点。

推荐回答:
Harness 一般指可重复实验环境:固定镜像/依赖、标准输入输出、自动打分、日志采集。我们项目里用于回归固定用例、对比 prompt/模型版本。可补充:更接近真实业务的「半合成」环境、对抗性用例、性能压测与成本统计。

六、Tool

本章思路引导

工具链考工程稳定性:超时、重试、熔断、错误怎么回灌给模型、怎么防死循环和乱序并行。大 tool 集设计考的是治理(动态子集、schema、监控),不是把 100 个 API 名字塞进 prompt。

Q37 工具调用失败怎么办?怎么保证稳定性?

思路:
分类错误、结构化返回、重试与熔断;忌把 stack 全扔给模型。

推荐回答:
分类处理:超时重试(指数退避)、4xx 参数错误反馈给模型自纠、5xx 与熔断后降级(缓存结果或换工具)。稳定性还要 schema 校验、超时上限、并发限制、幂等 key。把错误信息结构化返回给模型,比返回一大段 stack trace 更安全。

Q38 工具循环调用怎么办?

思路:
与限步、重复检测、任务完成信号联动;可点根因是任务定义或 observation。

推荐回答:
与全局步数限制配合;检测「相同工具+相同参数」连续出现;要求模型在 observation 里看到「已完成」信号才能结束;图里可加「无新信息则中断」边。根本原因是任务定义不清或工具返回值没有推进状态,可从产品侧收紧。

Q39 Tool 和 Skill 区别?哪个更适合 agent 演进方向?

思路:
Tool 原子、Skill 编排;演进答分层不是二选一。

推荐回答:
Tool 是原子能力,偏 API;Skill 是带说明与步骤的可复用工作流,往往组合多个 Tool。演进方向通常是「底层 Tool/MCP 稳定 + 上层 Skill 沉淀最佳实践」,不是二选一,而是分层。

Q40 设计有 100 个 Tool 的 Agent,你会怎么设计?

思路:
动态子集、治理、监控、meta-tool;忌 100 个全塞 system prompt。

推荐回答:
不会把 100 个全塞进 system prompt。做法:按域分组、动态检索当前任务相关的子集(tool retrieval)、统一命名与 schema 治理、版本与弃用标记、监控每个 tool 的成功率与延迟、文档自动生成给模型看摘要。复杂工具链用 meta-tool 或 Skill 收口。

Q41 多个工具怎么并行执行?顺序怎么确定?

思路:
依赖图拓扑 + 执行器校验;无依赖才并行。

推荐回答:
无依赖的可并行(asyncio、线程池或 LangGraph 并行边);有读写依赖的拓扑排序定序。让模型先出「依赖图」或简单标注顺序码,再由执行器校验,避免模型乱序导致竞态。

七、Skill

本章思路引导

把 Skill 当成可复用的业务 playbook + 版本,MCP 当成协议层,分层说清楚就不会和 Tool 混成一团。演进方向题适合答「底层协议/工具标准化,上层 Skill 沉淀」,显得务实。

Q42 Skill 是什么?怎么理解?

思路:
用 playbook 比喻:目标、步骤、工具、示例、失败处理。

推荐回答:
Skill 可以理解成「带说明书的小 playbook」:目标、前置条件、推荐步骤、可调用的工具列表、输入输出示例、失败时怎么处理。它比裸 Tool 更贴近业务语言,减少模型试错的次数。

Q43 Skill 和 MCP 的区别?

思路:
协议层 vs 应用层;举例 Skill 编排多个 MCP。

推荐回答:
MCP 是连接模型与外部资源/工具的协议与传输层;Skill 是应用层封装,往往内部会调用 MCP 或 HTTP。一个 Skill 可以编排多个 MCP 资源;MCP 本身不负责「怎么做这件事」的业务步骤。

Q44 你的项目能不能 skill 化?会怎么设计?

思路:
高频路径、版本、评测用例、CI;结合项目举一条流水线。

推荐回答:
按高频路径拆 Skill 目录:每个 Skill 一个 markdown/spec + 可选脚本入口,版本化;评测集中为每个 Skill 建最小用例;与 CI 联动防破坏。结合你项目举 1~2 条真实流水线。

Q45 你觉得 Agent 演进方向是 skill 还是工具?

思路:
底层工具/协议标准化,上层 Skill 厚;一句定调即可。

推荐回答:
底层长期还是工具与协议(如 MCP)标准化;上层演进是 Skill/工作流库越来越厚,把组织知识固化下来。对用户表现为「更会干活」,对工程表现为「更好测、更好管」。

八、MCP

本章思路引导

知道 MCP 解决什么问题、怎么接、代价是什么即可;传输层能对应到 stdio / SSE 场景选型,说明你真的跑通过,不是背定义。

Q46 MCP 是什么?怎么使用?优缺点?

思路:
是什么、怎么用、优缺点、运维成本;忌只吹优点。

推荐回答:
MCP(Model Context Protocol)是 Anthropic 推动的开放协议,用来让模型以统一方式发现资源、读文件、调工具。使用上就是起一个 MCP server,在客户端配置连接,模型通过协议拉 tools/list 再调用。优点是生态互通、接入清晰;缺点是多一跳延迟、部署与鉴权运维成本、调试链路变长。

Q47 MCP 传输层了解吗?

思路:
stdio 本地、SSE 远程流式,对应你部署场景。

推荐回答:
常见有 stdio(本地进程)、HTTP+SSE(远程流式)、部分场景 WebSocket。stdio 适合本地开发;远程多用 SSE 长连接传事件。选型看部署形态与安全域。

九、RAG

本章思路引导

整条链路从解析 chunk 到拒答要能串起来;向量库 vs 普通库、rerank vs LLM 裁判都是成本与效果 trade-off。行业文档、Code-RAG、关系型文档考的是索引设计意识,不必扯玄学。

Q48 用的什么向量库?数据量?为什么不用普通数据库检索?

思路:
量级真实答;语义检索为何用向量 + 小数据 hybrid 的诚实边界。

推荐回答:
按实际答库名与量级。理由:语义检索需要向量与 ANN 索引,普通 B-tree 不适合高维相似度;但小数据也可用 pgvector 或「全文 + 向量」混合,不是非黑即白。大体量时向量库的索引结构与量化策略更成熟。

Q49 用了哪些检索方式?为什么?

思路:
按数据特点选稠密/稀疏/混合;用线上指标收口。

推荐回答:
可答:稠密向量、BM25 稀疏、混合检索(RRF 或加权)、查询改写、HyDE。选型理由按数据特点:专有名词多可加强稀疏;语义泛化强用稠密;线上效果靠 A/B 和 nDCG/命中率说话。

Q50 为什么要单独 rerank,不用大模型直接选片段?

思路:
成本延迟 vs 精度;两阶段裁判可作为补充。

推荐回答:
大模型当裁判要对每个候选读一遍,候选多时成本高、延迟大;专用 cross-encoder reranker 在小候选集上更省且相关性更稳。也可以两阶段:rerank 缩小后再让大模型精读。小候选集直接用 LLM 排序有时可行,要说明 trade-off。

Q51 构建 RAG 的流程是什么?

思路:
从采集到拒答串流程;体现你做过一整条 pipeline。

推荐回答:
采集与清洗 → 解析(PDF/HTML/表格)→ 切 chunk(大小、重叠、按标题/结构)→ 打元数据 → 向量化与建索引 → 在线检索(可能多路)→ rerank → 拼 prompt 生成 → 引用与拒答策略 → 日志与 badcase 回流改 chunk 或 metadata。

Q52 召回不到数据怎么处理?

思路:
先扩召再诚实无资料;忌硬编。

推荐回答:
放宽 top-k、换改写 query、稀疏通道补召、扩大 chunk 或父文档扩展;仍没有则明确告诉用户「知识库无依据」并禁止编造。同时把该 query 记入队列优化索引或同义词表。

Q53 如果做 Code-RAG,应该怎么做?

思路:
chunk 粒度、调用图、分层索引;大仓库要粗精结合。

推荐回答:
按函数/类切分优于纯固定 token 切;保留 import、调用关系做图或边索引;检索命中后给模型看完整函数上下文;可接 linter/类型检查或「检索+执行反馈」闭环。大仓库要分层索引(文件级粗召 + 符号级精召)。

Q54 有关联关系的文档怎么做 RAG?

思路:
实体/父子 chunk/二次查询;图库可选。

推荐回答:
建实体关系或目录层级:先召实体再沿边扩展 chunk;或 chunk 带 parent_id 检索时一并拉回父节;图数据库可选但成本高,很多团队用 metadata + 二次查询解决。

Q55 行业黑话或内部术语文档怎么做 RAG?

思路:
术语表、query 扩展、embedding 适配、prompt 注入。

推荐回答:
维护术语表与同义词映射;query 扩展阶段注入;embedding 可在术语语料上继续训练或适配;生成前把术语表片段塞进 prompt;严重依赖行话时用小域微调检索模型。

十、后端与软件基础

本章思路引导

互联网底座广度题:能描述全链路、知道往哪查日志就行。流式、SSE、asyncio 和 Agent 网关场景挂钩答,比纯背定义分高。*args / **kwargs 题面常写错,答时顺带点一句。

Q56 接收一个大文件,全流程与关键技术、优化?

思路:
分片、流式、队列、背压;Agent 场景提安全扫描。

推荐回答:
客户端分片上传 + 服务端合并,校验 hash;落盘或直传对象存储;大文件解析用流式读、异步队列削峰;背压与限流防 OOM。优化:零拷贝、分块处理、并行解析可并部分、失败断点续传。Agent 场景还要注意病毒扫描与类型白名单。

Q57 HTTP 请求流程、状态码、故障一般出在哪?

思路:
DNS→TCP→TLS→请求→响应;状态码 + 排障工具链。

推荐回答:
DNS 解析 → TCP 握手 → TLS(HTTPS)→ 发请求行/头/体 → 服务端处理 → 响应。状态码:2xx 成功,3xx 重定向,4xx 客户端问题,5xx 服务端问题。故障可能在 DNS、证书、防火墙、超时、上游应用或数据库;用 curl、抓包、链路追踪和日志关联定位。

Q58 流式响应的过程?

思路:
chunked、代理缓冲、首字节;可挂 LLM 网关。

推荐回答:
服务端边生成边写 chunk(如 chunked transfer),客户端边读边渲染。LLM 场景是上游 token 流 → 网关 → SSE 或 WebSocket → 前端逐字展示。要注意中间代理缓冲关闭、心跳与超时。

Q59 SSE、WebSocket、asyncio 是什么?

思路:
SSE 单向、WS 双工、asyncio 协作式与阻塞坑。

推荐回答:
SSE 是 HTTP 上的单向服务器推送,基于长连接文本流,适合模型 token 流。WebSocket 全双工,适合强交互、二进制多。asyncio 是 Python 单线程协作式并发模型,用 await 挂起 IO,要避免在协程里跑阻塞 CPU 或阻塞 IO。

Q60 Python 装饰器、迭代器、怎么搞流式响应?*args**kwargs(题里若写 **args 按 kwargs 理解)?

思路:
装饰器/生成器/StreamingResponse;顺带 kwargs 笔误。

推荐回答:
装饰器是高阶函数,在函数外加一层横切逻辑(日志、鉴权),记得 functools.wraps 保留元数据。迭代器实现 __iter__/__next__,生成器用 yield 适合流式一块块吐数据。流式响应在 FastAPI/Starlette 里用 StreamingResponse 包异步生成器。*args 收位置参数元组,**kwargs 收关键字参数字典。

Q61 C/C++ 从代码到执行全流程?和 Python 有什么不同?

思路:
编译链接 vs 解释字节码;各说一个工程差异即可。

推荐回答:
C/C++:预处理 → 编译成目标文件 → 链接成可执行文件 → 加载运行。Python:源码编译成字节码,解释器(或 VM)执行,类型多在运行时解析。C/C++ 更贴近内存与性能,无 GC(C++ 对象生命周期手动/RAII);Python 开发效率高但有 GIL 等限制(IO 多时 asyncio 仍可并发)。

十一、训练相关(GRPO / PPO / LoRA)

本章思路引导

顺着简历里的训练项目挖:KL、rank、调参要有和曲线的关系,梯度检查点说清换显存还是换时间。公式以你读的论文为准,面试里宁可说「这块我回去再核对论文」也别硬编系数。

Q62 GRPO 和 PPO 的区别?

思路:
PPO 有 critic、GRPO 组内相对优势/弱 critic;公式以论文为准。

推荐回答:
PPO 是经典 actor-critic:用价值网络估计优势,clip 约束策略更新。GRPO(Group Relative Policy Optimization)一类方法常在一组采样内算相对优势、弱化或去掉独立 critic,适合奖励稀疏或希望实现更简单的 RLHF 流程。具体公式以你读的论文为准,面试里能说清「组内归一、少一个网络、和 PPO clip 的异同」即可。

Q63 KL 散度具体怎么加?太大或太小有什么问题?

思路:
KL 约束参考模型;大小学不动 vs 跑偏,结合曲线。

推荐回答:
在目标函数里对当前策略相对参考模型(SFT)加 KL 惩罚项,或把 KL 当约束用自适应系数。KL 太大:策略几乎不动,学不到奖励信号。KL 太小:策略偏离参考模型过快,可能模式崩塌、胡言或灾难性遗忘。实际会看 KL 曲线与 reward 曲线一起调系数。

Q64 QLoRA 的 rank 怎么设置?

思路:
r 与显存、效果的折中 + 消融意识。

推荐回答:
r 控制低秩矩阵容量,常见 8、16、32、64;显存紧用偏小,效果不够再加大或增加 target module。最好有消融:同一数据子集上对比 loss/下游指标与训练稳定性,而不是拍脑袋。

Q65 训练参数怎么选?有没有调参测试?

思路:
先复现再小网格;诚实说最敏感的超参。

推荐回答:
学习率、batch、accumulation、warmup、max length、KL coef、clip range、生成温度与 top-p 等都会影响。可以说:先参考论文与开源 run,再在小规模上做网格或贝叶斯搜索,固定随机种子对比验证集。诚实说「调过哪几个、哪个最敏感」比报一堆假数字好。

Q66 LoRA 和 QLoRA 区别?

思路:
冻结+adapter vs 4bit 基座+adapter;显存与精度 trade-off。

推荐回答:
LoRA 在冻结的权重旁加低秩适配器训练。QLoRA 把基座权重量化到 4bit(如 NF4),adapter 仍高精度,用分页优化器等稳定训练,显存大幅下降,有时略损精度,适合单卡大模型微调。

Q67 量化之后对训练效果影响?

思路:
噪声与梯度近似;定性 + 若有实测更好。

推荐回答:
4bit 量化引入噪声,梯度通过适配器与反量化近似传回;多数场景 QLoRA 能逼近全精度 LoRA,极端小数据或极难任务可能掉点。可答:我们观测到某指标变化在 x% 内,或「定性上收敛略慢」。

Q68 梯度检查点原理?对训练速度大概减缓多少?

思路:
重算换显存;减缓给区间或诚实说未测。

推荐回答:
前向时不存所有中间激活,反向时重新算一遍前向拿激活,用算力换显存。减缓比例依赖模型层数与实现,常见文献说 20%~40% 量级,你若有实测报自己的数,没有就说「有减缓、和层数正相关,需按卡和业务权衡」。

十二、随机提问(开放题)

本章思路引导

没有标准答案,考表达是否具体、有没有反思习惯。用真实例子和小故事;涉及源码泄露的题守住底线,不传播未授权细节。踩坑题用 STAR 短答即可。

Q69 平时用过哪些 AI agent 工具?

思路:
列真实工具 + 主要用途一句。

推荐回答:
按真实列举即可:Cursor、Copilot、Claude Code、ChatGPT、各类自动化编排等。顺带一句主要用来写代码、查文档、辅助重构还是任务自动化,别空洞。

Q70 你觉得 AI 工具最大的帮助场景是什么?

思路:
具体场景 + 边界在人。

推荐回答:
个人化举例: boilerplate 生成、跨语言 API 查用法、长日志归纳、单测草稿;强调「省掉重复劳动」而不是「替代思考」。可提边界:架构决策与安全仍要人把关。

Q71 有没有遇到过 AI 应用或工具无法解决的场景?

思路:
真实反例 + 人怎么兜底。

推荐回答:
举真实例子:缺乏上下文的长尾 bug、需要现场权限的操作、强合规不能出域的数据、或需要多轮业务扯皮的需求澄清。说明当时怎么用人兜底。

Q72 平时写的代码有多少是 AI 生成的?

思路:
诚实比例 + review 责任。

推荐回答:
诚实区间即可,例如「脚手架和单测多,核心逻辑自己写和 review」。强调 review、测试与责任在自己,符合团队规范。

Q73 OpenClaw 用过吗?架构上有什么优势?

思路:
用过说体验,没用别编架构优势。

推荐回答:
用过就如实说体验;没用过就说未深度使用,只了解定位为 agent 运行时/编排的一类方案,避免编造「优势列表」。若略知:可谈模块化、工具生态或开源社区(仍要谨慎,不确定就说不知道)。

Q74 OpenClaw 或 Claude Code 还有哪些可改进之处?

思路:
建设性列短板,忌攻击性。

推荐回答:
可谈:长任务可控性、企业级权限与审计、本地与混合部署体验、评测与回归工具链、多模态与垂直领域适配。避免攻击性语气,保持建设性。

Q75 Claude Code 源码泄露有没有了解?有什么创新点?

思路:
合规与职业道德:不展开非法泄露细节。

推荐回答:
若没看:直说未跟进泄露内容,只从公开产品体验谈理解。若看了:点 1~2 个技术点(如上下文组织、工具协议),不要传播未授权源码细节,面试里也不建议展开非法来源。

Q76 从开发者角度,做 agent 最难的部分是什么?

思路:
选一个能接自己项目的难点展开。

推荐回答:
可答:评测与对齐(不知道何时算「对」)、长链路错误放大、工具与环境的不确定性、以及产品预期与模型能力不匹配。选一个能接自己项目故事的。

Q77 自己做 agent 踩过最大的坑?

思路:
STAR 短故事,忌空话。

推荐回答:
用 STAR 简短说:现象(死循环/成本爆/幻觉)→ 根因(缺限步、工具返回不洁、prompt 冲突)→ 修复(状态机、摘要、校验)→ 规范(评测用例 + 代码 review)。必须真实或合理虚构,别太空。

Q78 好的 prompt 和差的 prompt 区别?

思路:
可测、可边界、与 system 一致;对比一句差的。

推荐回答:
好的:目标单一明确、约束与输出格式写清、给反例或边界、与 system 不冲突、可测(能写断言)。差的:含糊任务、让模型猜、和工具说明矛盾、没有失败时行为。可举一个小对比例子。

Q79 除了 Qwen3-VL,还用过哪些多模态大模型?

思路:
按实际列模型 + 场景。

推荐回答:
按实际:GPT-4o、Gemini、InternVL、LLaVA 等。说一个使用场景:图表理解、截图 debug、OCR 等。

Q80 有没有了解端侧部署的模型?

思路:
端侧约束:量化、NPU、延迟功耗;了解有限就说有限。

推荐回答:
可提 llama.cpp、ONNX、TensorRT、手机 NPU、小模型量化(INT8/INT4);点出约束:延迟、内存、功耗与效果 trade-off。没做过就说了解有限,只读过资料。

十三、Python 八股

本章思路引导

答到点上即可:浅/深拷贝举嵌套 list、装饰器提 wraps、字典提哈希与 3.6+ 顺序、死锁四条件背全。别展开成教材。

Q81 深拷贝和浅拷贝的区别?

思路:
嵌套可变对象 + deepcopy 注意点。

推荐回答:
赋值和浅拷贝对嵌套可变对象(如 list 里套 list)共享内层引用,改内层会互相影响。copy.deepcopy 递归复制独立对象,注意循环引用与自定义类的 __deepcopy__。不可变对象如 tuple 里若有可变元素同样要小心浅层行为。

Q82 Python 修饰器知道吗?

思路:
语法糖 + wraps + 带参装饰器多一层。

推荐回答:
装饰器是接收函数返回函数的语法糖,用于日志、缓存、鉴权等横切关注点。带参数的装饰器是多一层嵌套。用 functools.wraps 保留原函数的 __name__ 和 docstring,便于调试与 introspection。

Q83 Python 字典的底层原理?

思路:
哈希表 + 有序 + 均摊复杂度。

推荐回答:
CPython 字典是哈希表,键必须可哈希;开放寻址或类似策略处理冲突(实现细节以版本为准)。3.6+ 字典保持插入顺序(有序作为语言特性)。扩容会 rehash,均摊 O(1) 查找;最坏哈希冲突下退化需注意。

Q84 死锁的条件是什么?

思路:
四条件 + 打破其一的工程手段。

推荐回答:
四个必要条件:互斥、占有且等待、不可抢占、循环等待。预防思路是打破其一:如统一加锁顺序、超时释放、银行家算法(理论)、尽量减小锁粒度。实际工程里还要配超时与监控。

十四、面试后的一点感受(收尾)

这份清单里,项目主线(Agent 架构、LangGraph、上下文、工具与评测)是追问最深的;RAG 和训练线会顺着简历项目二选一挖到底。后端与网络更像扫盲,证明你没有完全活在模型 API 里。

准备时建议:每个大块练一段「2~3 分钟口述版」——结论一句、展开两点、诚实边界一句(哪里没上生产、哪里只读过文档)。比背一百条定义更能扛住追问。推荐回答只是骨架,一定要换成你项目里的真名词和真数字,面试官一听就能追问下去,才像真的做过。

个人整理;思路引导与推荐回答仅供组织语言与技术方向参考,公式与框架细节以论文与官方文档为准。

全部评论

相关推荐

05-04 01:25
门头沟学院 Java
攒攒人品!有面试过同岗的朋友欢迎评论区交流1. 拷打实习2. 并发搜索场景下,主线程起了多个子线程后,怎么和它们通信以知道任务全都做完了?3. 为了提速引入了 Kafka,但 Kafka 本身是异步组件,会不会反而导致任务流转变得更慢?4. 流量变大后,每个任务拆解并发大量消息,Kafka 会不会变成系统的性能瓶颈?(答了限流桶策略、结合业务使用频次限制)5. 扫表和用消息中间件(如 Kafka 双 Topic)管理长时任务状态,各自的优缺点是啥?6. 详细介绍一下你项目里的多智能体协同策略,三层 Agent(Root、Main/Fallback、Sub-Agent)是怎么互相配合流转的?7. 如果主 Agent 决定越过第二层直接调底层的子 Agent,上下文信息是怎么跨层传过去的?(答了通过解析 JSON 传递意图,并共用主线程/连接)8. 补充检索是如何评估数据质量并触发的?你怎么保证二次检索能搜到之前没搜到的内容?9. 怎么避免大模型检索到网上被 AI 批量生成的虚假垃圾数据(防止 GU 投毒)?10. 短期对话记忆和长期记忆分别是怎么提取和存储的?11. 怎么判断当前用户的提问需不需要去 RAG 里检索长期记忆?12. 为什么底层选用了 pgvector 做向量数据库,而不是其他的?13. 为什么在向量检索的基础上还要加 BM25 精确检索?具体解决了什么 bad case?14. 重排序(Rerank)是怎么做的?有没有设置低分阈值做提前过滤操作?15. 传统 CNN 有什么痛点?ResNet 让你印象深刻的核心思想是什么?16. 介绍你最近读过的五篇论文17. 平时拿到一个项目任务,你用 AI 辅助编程的工作流是怎么拆解的?18. 你的AIcoding提示词策略是怎么操作的?人工一般在哪个环节介入审核?
查看17道真题和解析
点赞 评论 收藏
分享
评论
8
48
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务