面向大模型、Agent、RAG 与工程落地的面试复习清单

每道题都按“可直接口述的短答 + 技术展开 + 面试追问 + 避坑”组织。 题库按大类组织,新增问题会先合并同类项:重复主题补充到已有题,只有新主题才新增题卡。

61累计题卡
7大类:框架 / Memory / RAG / 评测 / 协议 / 工程 / 系统设计
2026-06-11当前版本日期
HTML单文件,可离线打开与打印

高频必学清单

Agent 框架与编排

Agent 框架、ReAct、规划执行、单/多 Agent、任务拆分和 OpenClaw。

1. 了解哪些 Agent 开发框架?各自的核心组件/能力是什么?

高频 Agent 框架 规划 工具调用 执行器
面试短答

常见框架我会按抽象层次来讲:LangChain 偏组件生态,LangGraph 偏有状态工作流和可控编排, LlamaIndex 偏数据/RAG,AutoGen 偏多 Agent 对话协作,CrewAI 偏角色化任务编排,Semantic Kernel 偏企业应用里的插件、规划与编排。核心组件一般包括模型适配、Prompt/状态、工具注册与调用、规划器、 执行器、Memory、观测与评估。

框架对比

  • LangChain:链、工具、Agent、模型适配、回调、向量库集成丰富,适合快速拼装。
  • LangGraph:把 Agent 建模成状态图,适合多步骤、可恢复、可人工介入的流程。
  • LlamaIndex:围绕数据连接、索引、检索、查询引擎和 RAG 编排展开。
  • AutoGen:强调多智能体对话、角色分工、代码执行和协作式求解。
  • CrewAI:Agent、Task、Crew、Process、Tool、Memory 的角色化任务协作抽象较清晰。
  • Semantic Kernel:插件、函数、Planner、Kernel Memory,更贴近企业系统集成。

答题抓手

  • 规划:任务拆解、路线选择、动态重规划。
  • 工具:函数描述、参数 schema、权限、超时、重试、结果校验。
  • 记忆:会话状态、用户画像、长期知识、外部数据库。
  • 执行器:调度工具、处理异常、汇总结果、控制循环次数。
  • 观测:trace、token、延迟、成本、命中率、失败原因。

容易被追问

生产环境里我不会只说“用了某框架”,而会说明为什么选择它:例如 LangGraph 适合强状态和流程可控, LlamaIndex 适合复杂数据接入和检索,AutoGen/CrewAI 适合多角色协作,但要额外控制成本、循环终止和权限边界。

2. 除 RAG 外还用过哪些 Agent 技术?

高频 规划 工具调用 反思 自检
面试短答

除 RAG 外,我会重点讲规划、工具调用、执行反馈、反思自检、多 Agent 协作和安全控制。 例如 ReAct 把推理和行动交替进行,Planner-Executor 把任务拆解和执行分离, reflection/evaluator 用于发现错误并迭代,guardrails 用于控制权限、格式和风险。

常见技术

  • Planning:任务拆分、依赖排序、动态重规划。
  • Tool Calling:函数调用、API 调度、参数校验、错误恢复。
  • ReAct:思考、行动、观察循环,适合信息查找和工具任务。
  • Reflection:生成后复盘,检查遗漏、矛盾和失败原因。
  • Self-check:格式检查、引用检查、单测/静态检查、事实核验。
  • Multi-agent:角色分工、评审者、执行者、协调者。

工程落地

  • 给工具设置白名单、速率限制、超时和幂等处理。
  • 限制 Agent 循环次数,避免无限反思和成本失控。
  • 关键动作做人审或二次确认。
  • 用 trace 记录每一步输入、输出、工具结果和错误。
  • 把评估器和执行器拆开,避免同一个模型自说自话。

3. 指令不遵循:模型输出偏离指令时如何处理?给出具体案例与对策

高频 指令遵循 Guardrail 自检
面试短答

指令不遵循要先定位是提示不清、上下文污染、工具结果误导、模型能力不足还是输出约束缺失。 工程上我会用结构化输出 schema、few-shot、显式禁止项、结果校验器、失败重试和人工兜底来处理。 例如要求“只基于文档回答并给引用”,模型却补充外部常识,就要检查引用覆盖,不满足则改为拒答或重新生成。

具体案例

  • 格式偏离:要求 JSON 却输出自然语言,用 schema 校验和修复重试。
  • 越界回答:文档无证据却回答,用引用校验和拒答策略拦截。
  • 工具乱选:需要查订单却调用知识库,加入工具路由器和参数校验。
  • 遗漏约束:忘记预算、时间、权限,把关键约束放入结构化 state。

对策

  • 把目标、边界、输出格式、失败条件写成显式 checklist。
  • 把模型输出交给 verifier 检查格式、引用、权限和业务规则。
  • 低置信度或校验失败时重试,重试仍失败则澄清或人工接管。
  • 收集失败样本,迭代 prompt、few-shot、工具描述或 SFT 数据。

4. Agent 架构、Agent vs 直接 LLM、单 Agent vs 多 Agent、任务拆分与停止条件怎么讲?

高频 Agent 架构 多 Agent LangGraph
面试短答

直接 LLM 更像一次性问答,Agent 是带目标、状态、工具、记忆、规划、执行反馈和终止条件的闭环系统。 单 Agent 简单、成本低、上下文一致;多 Agent 适合专家分工、评审制和复杂协作,但通信成本和失控风险更高。 任务拆分要按可验证产物和依赖边界来定,停止条件可以是任务完成、验证通过、达到最大步数或需要人工输入。

架构模块

  • 模型:负责理解、规划、生成和工具选择。
  • 状态:保存目标、约束、计划、工具结果和待办。
  • 工具:外部 API、数据库、代码执行、MCP 服务。
  • 记忆:短期上下文和长期可复用信息。
  • 评估器:检查结果是否满足目标和约束。

LangGraph 写法

  • 定义状态 schema:messages、plan、artifacts、errors。
  • 节点负责单一动作:规划、工具执行、评估、总结。
  • 边负责条件跳转:成功结束、失败重试、缺参澄清。
  • 循环必须有最大步数、失败计数和人工接管出口。

BDI 与自主规划

BDI 指 Belief、Desire、Intention:Belief 是 Agent 对环境和上下文的认知,Desire 是目标集合, Intention 是当前承诺执行的计划。落地到大模型 Agent,可以把 Belief 做成状态和检索证据, Desire 做成任务目标和约束,Intention 做成当前 plan、tool calls 和停止条件。

5. ReAct 相关:不同模式/变体的差异与适用场景

高频 ReAct 工具调用 反思 规划执行
面试短答

ReAct 的核心是把推理和行动交替起来:模型基于目标形成下一步动作,调用工具获得 observation, 再根据结果继续决策。标准 ReAct 适合搜索、排障、工具型任务;Plan-and-Execute 适合长任务; Reflexion/自检适合需要迭代修正的任务;ReAct + RAG 适合知识问答;多 Agent ReAct 适合角色分工。 生产中不一定暴露完整思维链,通常用结构化计划、动作、观察和结论记录。

常见模式

  • 标准 ReAct:Thought/Action/Observation 循环,边查边做。
  • ReAct + Function Calling:动作由函数 schema 约束,参数更稳定。
  • ReAct + RAG:把检索作为工具,适合外部知识问答。
  • Plan-and-Execute:先规划再执行,适合多步骤任务。
  • Reflexion:失败后总结经验并重试,适合可验证任务。
  • ReWOO:先生成工具调用计划,再批量执行和汇总,降低循环成本。

适用场景

  • 信息查找:标准 ReAct 或 ReAct + RAG。
  • 代码修复:Plan-and-Execute + 测试反馈 + 自检。
  • 客服/工单:工具调用 + 权限控制 + 人工兜底。
  • 长流程生成:计划、执行、评估、重试分离。
  • 高风险动作:ReAct 只做建议,最终动作需确认。
面试避坑:ReAct 不是“让模型无限思考”。落地时要限制最大步数、工具白名单、超时、重试次数和终止条件,并把可验证结果作为继续迭代的依据。

6. Coze 两种形态(编排 / Agent 化)区别是什么?实际用的是哪种?节点/流程如何设计?

Coze 工作流编排 Agent 化 节点设计
面试短答

Coze 可以按“确定性编排”和“Agent 化决策”两种思路理解。编排式更像可视化工作流: 用开始、LLM、知识库、插件/API、条件分支、代码、循环、结束等节点把路径固定下来,适合稳定业务流程。 Agent 化则把更多选择权交给模型,让它根据目标动态选择工具、知识和下一步动作,适合开放任务。 面试里建议如实说实际使用程度:生产上通常优先用编排保证稳定性,Agent 化用于探索、复杂问答或工具选择。

两种形态差异

  • 编排式:路径明确、节点可控、易测试、易审计,适合客服、表单处理、审批、内容流水线。
  • Agent 化:模型自主规划和选工具,灵活性高,但要控制循环、权限、成本和失败恢复。
  • 稳定性:编排式更稳定,Agent 化更依赖模型能力和工具描述质量。
  • 可观测性:编排式能逐节点定位问题,Agent 化要依赖 trace 和中间状态记录。

节点/流程设计模板

  • Start:接收用户输入、业务参数、会话 ID。
  • Normalize:用 LLM 或代码节点抽取意图、实体、约束。
  • Knowledge/RAG:按意图召回知识库,必要时做重排。
  • Tool/API:调用插件、HTTP API、数据库或 MCP 工具。
  • Condition:按置信度、权限、缺参情况分支。
  • Review/End:生成答案、引用证据、触发人工兜底或结束。

推荐回答口径

“我实际更倾向先用工作流编排把关键路径固化,保证可测、可回滚、可审计;对于意图不固定、 工具选择空间较大的环节,再引入 Agent 化节点。这样既有 Agent 的灵活性,也不会把生产系统完全交给黑盒循环。”

7. LangChain 和 LlamaIndex 的定位差异与适用场景?如果要缓解幻觉会怎么做?

高频 LangChain LlamaIndex 幻觉治理
面试短答

LangChain 更偏 LLM 应用编排和 Agent/工具生态,LangGraph 适合有状态流程; LlamaIndex 更偏数据框架,强项是数据连接、索引、检索、查询引擎和 RAG。 缓解幻觉不依赖某一个框架,而是要提高检索覆盖、强制引用、做答案一致性校验、 处理文档外问题、限制工具权限,并用评测集持续回归。

定位差异

  • LangChain:模型、Prompt、工具、Agent、链路编排。
  • LangGraph:状态图、循环、人工介入、可恢复 Agent。
  • LlamaIndex:文档接入、索引、retriever、query engine、RAG 数据层。
  • 选型:复杂 Agent 流程偏 LangGraph,复杂数据/RAG 偏 LlamaIndex。

幻觉缓解

  • 混合检索 + rerank + query rewrite。
  • 答案必须引用证据,引用不足时拒答。
  • 生成后做事实一致性和引用覆盖检查。
  • 高风险答案走人工审核或工具验证。
  • 评测集中加入文档外问题和相似干扰问题。

8. LangChain vs LangGraph vs LlamaIndex:多 Agent 在一个 Graph 还是多个 Graph?为什么不用 LangChain?是否考虑 ACT/workflow?

高频 框架选型 LangGraph 多 Agent
面试短答

LangChain 偏组件和工具生态,LlamaIndex 偏数据/RAG,LangGraph 偏状态图和可控循环。 多 Agent 可以在一个 Graph 里用不同节点表示角色,也可以多个 Graph 分别封装子流程;如果共享状态强、流程耦合强, 一个 Graph 更好观测和控制;如果子任务边界清晰、可复用、可独立部署,多个 Graph 更合适。 如果系统更像 workflow,就要承认它是“可控工作流 + 局部 Agent 决策”,不要硬包装成完全自主 Agent。

选型回答

  • LangChain:快速接模型、Prompt、Tool、Retriever。
  • LangGraph:有状态、多节点、循环、条件边、人工介入。
  • LlamaIndex:文档接入、索引、检索和数据层抽象。
  • 版本问题:如实说项目版本,并说明关注 Runnable/LCEL、包拆分和 LangGraph 独立化。

ACT / workflow 取舍

  • 确定性强的业务流程优先 workflow,便于测试和审计。
  • 需要动态选工具、动态补信息时再引入 Agent 循环。
  • ACT/ReAct 类方法适合边观察边行动,但要限制步数和权限。
  • OpenClaw/Harness 等前沿工具按任务成功率、可控性和接入成本评估。

LangGraph State 与代码创建

LangGraph 通常先定义一个 TypedDict/Pydantic 风格的 State,例如 messages、plan、current_agent、 artifacts、tool_results、errors、permissions。节点是普通函数或 runnable,读取 State 的一部分并返回增量更新; 条件边根据 State 中的状态码、置信度或错误类型跳转。多 Agent 共享公共 State,但私有推理和草稿应放在各自命名空间,避免互相污染。

9. LangChain 中常用组件/函数有哪些?在 RAG 和 Agent 项目里怎么用?

LangChain Runnable Retriever Agent
面试短答

LangChain 常用的不只是“Chain”,而是一组 LLM 应用组件:PromptTemplate/ChatPromptTemplate 组织提示词, Runnable 组合链路,OutputParser 约束输出,DocumentLoader 和 TextSplitter 做文档接入, Retriever 做检索,Tool 和 Agent 做工具调用,Callback/LangSmith 做观测。 新版本更推荐用 LCEL/Runnable 组合,而不是只记旧式链类名称。

RAG 常用

  • DocumentLoader:加载 PDF、网页、Markdown、数据库等数据源。
  • TextSplitter:按字符、token、递归规则或语义方式切 chunk。
  • Embeddings / VectorStore:向量化和向量库检索。
  • Retriever:封装 topK、过滤、multi-query、compression 等召回逻辑。
  • OutputParser:把回答约束成 JSON、Pydantic schema 或固定格式。

Agent 常用

  • Tool / StructuredTool:声明函数名、描述、参数 schema 和返回。
  • Runnable:把 prompt、model、parser、retriever、tool 组合成可观测链路。
  • MessagesPlaceholder:注入历史消息、scratchpad 或工具调用轨迹。
  • Callback:记录 token、耗时、工具调用和错误。
  • LangGraph:复杂 Agent 用状态图表达节点、循环、条件边和人工介入。

10. OpenClaw:是否用过?它的亮点/差异化在哪?

OpenClaw 调研型回答 差异化
面试短答

如果面试官问 OpenClaw,我会先确认他指的是哪个仓库或产品版本,因为公开语境里这个名字不像 LangChain、LangGraph、CrewAI、MCP 那样有统一行业标准口径。若我没有生产使用经验,会如实回答: “没有深度生产落地,做过调研/对比;我关注它的工具编排、浏览器/桌面自动化、Agent 执行闭环、 本地化部署和可观测能力,评估重点是稳定性、生态、权限边界和可维护性。”

可以这样展开

  • 先说清实际使用程度:生产、PoC、阅读源码、只了解概念。
  • 说明差异化维度:是否偏 GUI/浏览器自动化、是否内置任务规划、是否支持工具市场。
  • 说明工程评估:失败恢复、日志 trace、权限隔离、模型兼容、部署成本。
  • 对比主流方案:LangGraph 的流程控制、AutoGen 的多 Agent、MCP 的工具协议化。

推荐回答模板

“我不会把 OpenClaw 当作纯 RAG 框架理解,而会从 Agent runtime 看它: 是否能稳定完成感知、规划、工具执行、反馈校验和恢复。真正落地时,我更关心任务成功率、 可观测性、权限控制和能否接入现有系统,而不是 demo 能否跑通。”

面试避坑:不要编造“生产使用过”。如果不了解具体项目,先反问版本/仓库,再给出评估框架,会比硬背亮点更可信。

OpenClaw / Harness 类工具怎么答

对 OpenClaw、Harness 这类前沿 Agent/自动化平台,稳妥口径是先确认具体产品或仓库, 再按“任务建模、工具接入、状态管理、执行恢复、观测评估、权限治理”评估。 如果没有深度使用,不要硬说细节;可以说明自己会用 PoC 验证任务成功率、可控性、失败恢复和接入成本。

Memory 与上下文工程

记忆类型、上下文压缩、长上下文选型、会话关联和 AI IDE 上下文治理。

11. Memory 是什么?在 Agent 中解决什么问题?

高频 Memory 短期记忆 长期记忆 外部记忆
面试短答

Memory 是 Agent 对上下文、用户偏好、历史任务、外部知识和中间状态的保存与检索机制。 它解决的是模型本身无持久状态、上下文窗口有限、跨轮任务需要连续性的问题。 常见分为短期记忆、长期记忆和外部记忆。

分类

  • 短期记忆:当前对话、任务 scratchpad、工具调用结果、当前计划。
  • 长期记忆:用户偏好、项目背景、历史决策、沉淀经验。
  • 外部记忆:数据库、向量库、知识图谱、文件系统、业务 API。
  • 语义记忆:事实知识,例如“用户使用 FastAPI + PostgreSQL”。
  • 情景记忆:发生过的事件,例如“上次线上问题由索引缺失导致”。
  • 程序记忆:操作流程,例如“发布前必须跑哪些检查”。

工程实现

  • 写入前做筛选:只保存稳定、可复用、有业务价值的信息。
  • 检索时做召回与排序:按任务相关性、时间、可信度、权限过滤。
  • 设置过期和纠错:偏好可能变化,历史结论可能失效。
  • 敏感信息要脱敏、加密、授权访问,不能把 Memory 当无限日志。
面试避坑:不要把 Memory 简单等同于向量库。向量库只是长期/外部记忆的一种存储和召回方式,Memory 还包括写入策略、更新策略、权限、压缩和遗忘机制。

12. 上下文满了怎么压缩?如何区分有效信息与噪声并尽量不伤正确率?

高频 上下文工程 压缩 降噪
面试短答

我会先做结构化压缩,而不是简单截断。保留目标、约束、关键事实、用户偏好、未完成任务、 已验证结论和失败尝试;删除寒暄、重复内容、低置信度猜测、过期中间过程。 压缩后要把摘要变成可验证的状态,并在关键任务上保留原文证据或可回溯引用。

常用策略

  • 滑动窗口:保留最近 N 轮,适合短任务,但容易丢早期约束。
  • 摘要压缩:把历史对话变成状态摘要,适合长任务。
  • 分层摘要:轮次摘要、阶段摘要、项目摘要逐级合并。
  • 检索式上下文:历史入库,当前只召回相关片段。
  • 结构化状态:用 JSON/YAML 存目标、约束、决策、待办、证据。

有效信息判断

  • 是否影响最终答案或执行路径。
  • 是否是用户明确约束、偏好或纠错。
  • 是否是外部事实、代码结论、测试结果或错误信息。
  • 是否可复用到后续步骤。
  • 是否有时间敏感性和可信来源。

保证正确率的方法

给摘要加来源标记和置信度;对高风险事实保留原文片段;压缩后做一致性校验; 让模型区分“事实、推断、待确认”;执行前重新拉取关键上下文;对代码、法律、金融、医疗等场景避免只靠摘要决策。

13. 上下文管理怎么做?短期记忆/长期记忆如何设计与写入/检索?

高频 上下文管理 Memory 写入策略 检索策略
面试短答

我会把上下文分成会话态、任务态和长期态。短期记忆保存当前目标、约束、计划、工具结果和未完成事项; 长期记忆保存稳定偏好、历史决策、项目知识和可复用事实。写入时要做抽取、去重、打标签、权限校验和过期策略; 检索时结合语义相似度、关键词、时间、用户/项目范围、可信度和重排,把少量高价值信息注入提示词。

短期记忆设计

  • Conversation:最近对话、用户明确指令、纠错。
  • Task State:目标、子任务、当前步骤、阻塞点。
  • Tool Results:工具输入输出、错误、测试结果、外部证据。
  • Compression:上下文接近上限时压缩成结构化摘要。

长期记忆设计

  • Profile:用户偏好、技术栈、输出风格。
  • Project Memory:架构、接口约定、历史决策。
  • Knowledge:文档、FAQ、代码片段、经验库。
  • Metadata:来源、时间、权限、置信度、过期时间。

写入与检索流程

写入不是所有内容都存,而是先判断是否稳定、是否可复用、是否被用户确认、是否有权限保存; 再抽取成结构化事实并去重。检索时先根据当前任务生成查询,做向量 + 关键词 + 元数据过滤, 再重排和压缩,最后注入为“相关事实/约束/证据”,并明确哪些是事实、哪些是推断。

上下文与微调的区别

上下文是推理时临时给模型看的信息,适合注入当前任务、用户约束、检索证据和短期状态; 微调是改变模型参数或适配层,让模型长期学会某种格式、风格、领域表达或工具调用习惯。 面试中可以强调:知识频繁变化、需要可追溯时优先 RAG/上下文;稳定能力、格式遵循或领域语气不足时再考虑微调。

14. 短期/中期/长期记忆如何实现?会话关联、上下文注入隔离、偏好注入和开源方案怎么做?

高频 记忆工程 会话关联 上下文隔离
面试短答

短期记忆保存当前会话状态,中期记忆保存阶段性任务和未完成事项,长期记忆保存稳定偏好、事实和历史决策。 只靠向量搜索会在“那件事”这类模糊指代上串台,所以要结合会话线程、实体、时间、主题栈、用户意图和最近焦点。 注入上下文时要做权限、作用域、来源和置信度隔离,偏好注入只放稳定偏好,不把临时情绪或错误结论长期保存。

实现方案

  • 短期:messages、scratchpad、state store、LangGraph state。
  • 中期:任务清单、阶段摘要、topic stack、待办和约束。
  • 长期:关系库/文档库 + 向量库 + 元数据过滤。
  • 开源方案可参考 LangGraph persistence、MemGPT/Letta、Zep、LlamaIndex memory 等思路。

会话关联

  • 维护主题栈:A 买鞋、B 吃饭,用户说“前面那件事”时结合主题和时间回溯。
  • 对指代词先做 resolver,不确定就澄清,不直接用最近语义命中。
  • 检索时融合向量相似度、时间衰减、实体匹配、会话线程和用户显式指代。
  • 注入前去重、排序、截断,并标明“事实/偏好/推断/待确认”。

15. Claude Code memory 三层、AI 编程工具团队使用、Cursor 长上下文性能下降怎么理解?

高频 Claude Code AI IDE 上下文性能
面试短答

Claude Code memory 可以理解为分层记忆:全局用户偏好、项目级约定、当前会话/任务状态。 分层的原因是不同信息生命周期、作用域和权限不同。AI 编程工具在团队内应当用于检索、解释、生成草稿和辅助重构, 但要通过代码评审、测试、权限隔离和敏感信息控制规避风险。Cursor 这类 IDE 上下文过长会带来延迟、成本和注意力稀释。

三层职责

  • 用户层:语言偏好、输出风格、常用工具,跨项目复用。
  • 项目层:架构约定、命令、测试方式、代码规范。
  • 会话层:当前目标、已读文件、计划、错误和验证结果。
  • 写入要区分稳定事实和临时状态,避免污染长期记忆。

团队使用与监控

  • 规定哪些代码、日志、密钥不能上传或进入上下文。
  • 要求 AI 产出必须过测试、review 和安全扫描。
  • 监控延迟、上下文 token、失败率、误改率和回滚率。
  • 长上下文下降时用检索、摘要、任务拆分和文件白名单缓解。

16. 主流模型上下文长度与差异:选型时如何考虑?窗口不够时优先保留什么?

高频 模型选型 长上下文
面试短答

上下文长度不是越大越好,选型要看任务复杂度、长文档能力、成本、延迟、工具调用、结构化输出和部署方式。 窗口不够时优先保留用户目标、硬约束、当前计划、关键证据、工具结果、错误信息和未完成事项; 对寒暄、重复过程、低置信度推断和过期中间状态做摘要或丢弃。

选型维度

  • 长上下文实际有效利用率,而不只看标称窗口。
  • 工具调用稳定性、JSON 遵循、推理能力和多模态能力。
  • 吞吐、首 token 延迟、总成本、限流和私有化需求。
  • 是否支持缓存、批处理、流式输出和审计。

保留策略

  • 事实证据优先于模型推断。
  • 用户显式约束优先于默认偏好。
  • 最新纠错优先于历史结论。
  • 可恢复状态优先于完整聊天记录。

RAG / 多模态文档 / 幻觉治理

RAG、Chunking、检索、重排、多跳推理、多模态文档、PDF/OCR 和幻觉兜底。

17. RAG 流程是什么?常见实现路径有哪些?

高频 RAG 索引 召回 重排
面试短答

RAG 是先从外部知识库检索相关证据,再让模型基于证据生成答案。 典型链路是数据接入、清洗切分、embedding、建索引、查询改写、多路召回、重排、 上下文组装、生成、引用与评估。实现上常见有向量检索、BM25、混合检索、知识图谱、 多查询融合、HyDE、reranker 和 query routing。

离线索引

  • 数据源:文档、网页、数据库、工单、代码仓库。
  • 清洗:去噪、去重、权限字段、时间字段、元数据。
  • 切分:按语义、标题、段落、代码结构切 chunk。
  • 索引:向量索引、倒排索引、稀疏向量、图索引。

在线查询

  • 查询理解:意图识别、实体抽取、query rewrite。
  • 召回:dense、sparse、hybrid、多路召回。
  • 重排:cross-encoder、LLM rerank、规则加权。
  • 融合:RRF、按来源可信度加权、去重合并。
  • 生成:带引用回答,无法回答时明确说明。

评估指标

检索侧看 Recall@K、MRR、NDCG、命中率;生成侧看忠实度、引用覆盖、答案正确率、幻觉率; 系统侧看延迟、成本、权限隔离、增量索引时效。

18. 知识库向量数据从哪里来?Chunking 怎么切?父子分块和最佳实践如何落地?

高频 RAG 构建 Chunking 父子分块 元数据
面试短答

知识库向量数据来自原始文档、结构化表、日志、工单、代码、FAQ、网页和业务系统记录。 进入向量库前要先解析、清洗、去重、切分、补元数据,再对 chunk 做 embedding。 Chunking 不能只按固定长度硬切,通常优先按文档结构和语义边界切,再用窗口大小和重叠控制召回效果。 长文档可以用父子分块:小块负责精准召回,大块负责提供完整上下文。

向量数据来源

  • 原始文档:PDF、Word、Markdown、网页、产品手册、制度文档。
  • 结构化表:数据库表、Excel、指标表、配置表,可转成行级或主题级文本。
  • 日志/工单:故障日志、客服记录、历史处理方案,需脱敏和时间标注。
  • 代码/接口:代码片段、API schema、注释、README、变更记录。
  • 多模态产物:OCR 文本、图片 caption、表格 JSON、图表摘要。

具体切分策略

  • 先按标题、章节、段落、列表、表格、代码块等结构切。
  • 再按 token 窗口控制长度,常见候选从 300-800 tokens 起测。
  • 重叠一般从 10%-20% 或 50-150 tokens 起测,避免跨段信息断裂。
  • 每个 chunk 记录文档 ID、章节路径、页码、坐标、时间、权限、来源版本。
  • 表格按行、列、主题或整表摘要多粒度索引,避免单元格脱离表头。

父子分块落地

  • 父块:按章节、页面、完整小节或业务主题切,保留完整语境。
  • 子块:从父块中按段落/窗口切小块,用于 embedding 和召回。
  • 对齐:子块保存 parent_id、offset、页码、标题路径和原文范围。
  • 召回:先召回子块,再回填父块或相邻窗口给生成模型。
  • 去重:多个子块命中同一父块时合并证据,控制上下文长度。

减少语义割裂

  • 固定长度切分前先识别标题、句子、段落和列表边界。
  • 不要把定义和解释、表头和数据、问题和答案切开。
  • 对跨段依赖加重叠窗口或相邻 chunk 拼接。
  • 给 chunk 前置章节标题和必要上下文摘要。
  • 用评测集调参,不迷信固定窗口大小;看 Recall@K、忠实度和上下文噪声。
面试避坑:Chunk 大小没有通用最优值。短 chunk 召回准但上下文不足,长 chunk 信息完整但噪声和成本高;工程上要按文档类型、问题类型和评测指标迭代。

项目里的语义切割答法

可以回答为“结构优先 + 语义兜底”:先用标题层级、段落、表格、列表、页码和版面块做粗切; 对长段再用句子边界、embedding 相似度或 LLM 判断语义断点;最后按 token 窗口做长度约束。 如果是 PDF 场景,chunk 元数据要带页码、bbox、表格 ID、图片 ID、章节路径和原文 offset,方便后续引用和定位问题。

19. 向量检索与关键词检索有什么差异?多维查询改写、并行意图识别和召回流程怎么设计?

高频 检索 Query 改写 意图识别
面试短答

关键词检索适合精确词、编号、错误码、专有名词;向量检索适合语义相近但表达不同的问题。 生产 RAG 常用 hybrid retrieval:query 先做意图识别、实体抽取、改写和扩展,再并行走 BM25、向量、 结构化过滤和历史工单召回,最后做融合、去重、重排和上下文组装。

多维查询改写

  • 补全实体、时间、产品、版本、故障码等维度。
  • 生成同义问法、关键词版、语义版和结构化过滤条件。
  • 缺关键槽位时先澄清,而不是盲目检索。
  • 改写要保留原问题,避免改错用户意图。

并行与融合

  • 并行意图识别可降低总延迟,也能覆盖多个候选意图。
  • 汇总时按置信度、业务优先级和证据命中决策。
  • 融合可用 RRF、加权分数、来源可信度和去重规则。
  • 最终 trace 要能解释每条证据来自哪一路召回。

BM25 在哪里体现

BM25 体现为关键词检索链路,常用于错误码、产品型号、接口名、专有名词、表格字段等精确匹配。 实现上可以用 Elasticsearch/OpenSearch、Lucene、PostgreSQL 全文索引或本地 BM25 库。 线上常把 BM25 与向量检索并行召回,再用 RRF 或 rerank 融合,避免纯向量检索漏掉精确词。

20. 向量检索单次耗时、是否引入 rerank、如何评估召回内容与问题匹配度?

高频 Rerank 性能评估
面试短答

检索耗时要拆成 query 改写、embedding、向量库查询、BM25 查询、rerank 和上下文组装。 是否引入 rerank 看收益是否覆盖延迟成本:如果 topK 噪声高、相似文档多、答案忠实度差,rerank 通常有价值。 评估匹配度要离线看 Recall@K、MRR、NDCG,线上看点击/采纳、无答案率、人工接管和用户反馈。

性能优化

  • 缓存热门 query embedding 和重排结果。
  • 限制 topK 与 rerank 候选数,按场景调参。
  • 向量召回、关键词召回和结构化过滤并行执行。
  • 慢查询记录 query、过滤条件、索引、候选数和耗时。

收益评估

  • A/B 对比 rerank 前后的命中率、正确率和延迟。
  • 用 gold evidence 判断 topK 是否覆盖答案依据。
  • 看答案引用是否更集中、更相关、更少幻觉。
  • 成本超预算时可只对低置信度 query rerank。

21. RAG 如何解决多跳推理?Agentic RAG 与传统 RAG 怎么对比,如何控制延迟?

高频 多跳推理 Agentic RAG 延迟优化
面试短答

多跳问题不能只靠一次 topK 召回。常见做法是先把问题拆成子问题,按实体、时间、关系逐步检索, 每一步把中间结论写入状态,再决定下一跳 query。传统 RAG 是“检索一次 + 生成一次”,Agentic RAG 会动态规划、改写 query、调用工具、验证证据并迭代检索。代价是延迟和成本更高,所以要限制步数、并行召回、缓存和早停。

多跳链路

  • 问题分解:抽取实体、关系、约束和缺失槽位。
  • 逐跳检索:第一跳找实体背景,第二跳找关系或证据。
  • 状态维护:记录已证实事实、来源和下一步待查问题。
  • 证据融合:按时间、来源、置信度和引用覆盖合并。
  • 最终校验:答案每个关键结论都能回到证据。

延迟控制

  • 只对复杂问题启用 Agentic RAG,简单问题走普通 RAG。
  • 多路召回并行,rerank 只处理候选 topN。
  • 缓存 query rewrite、embedding、热门证据和中间结论。
  • 设置最大跳数、最大工具调用数和低收益早停条件。

22. RAG 项目如何运行部署?只能回答专业问题还是能闲聊?脏数据、数据集和 embedding 微调怎么处理?

高频 RAG 部署 意图识别 数据治理
面试短答

RAG 服务通常拆成文档解析/索引构建离线链路和在线问答服务。在线服务可以容器化部署, FastAPI/网关接收请求,调用意图识别、检索、rerank、LLM 生成和日志监控。是否允许闲聊取决于产品定位: 如果是专业知识库,应先判断是闲聊、专业问题还是越界问题;闲聊可轻量回复,专业问题走 RAG,越界则拒答或澄清。

运行与更新

  • 离线:上传文件、解析、清洗、切块、embedding、写索引。
  • 在线:意图识别、召回、重排、生成、引用校验、日志。
  • 部署:Docker 镜像、环境变量、模型/API 配置、向量库连接。
  • 更新:增量索引、版本化索引、灰度切换和回滚。

数据治理

  • 游戏用户多时,先做脏词、广告、重复、灌水、敏感信息过滤。
  • 训练/评测数据来自真实问答日志、人工标注、失败样本和业务知识库。
  • embedding 微调适合术语、缩写、黑话多且通用 embedding 召回差的场景。
  • 如果新 embedding 已能覆盖业务,优先评估替换或混合检索,不一定继续微调。

高并发个人知识库设计

每个用户都能上传文件时,要把上传请求和解析索引解耦:前台只保存文件、生成任务和状态, 后台队列按文件复杂度、页数、OCR 需求和用户优先级调度。简单文档走快速解析,复杂 PDF/扫描件异步处理, 索引按用户/租户隔离并做版本号,查询时只命中当前用户授权的索引分片。解析慢的文件要有进度、失败原因、重试和降级文本抽取。

23. 向量数据库、Milvus、HNSW 参数、HyDE、RRF 和 rerank 顺序怎么回答?

高频 向量数据库 Milvus HNSW
面试短答

向量数据库负责存储 embedding、元数据和 ANN 索引,支持相似度检索、过滤、分区和扩展。 Milvus 常见索引包括 HNSW、IVF、DiskANN 等;HNSW 是图索引,M 控制每个节点连接宽度, efConstruction 控制建图搜索宽度,efSearch 控制查询搜索宽度。参数越大通常召回越好但内存和延迟更高。

参数与部署

  • HNSW 参数不能背死值,要基于数据量、维度、召回率、延迟和内存压测。
  • Milvus 部署要考虑 standalone/cluster、对象存储、元数据、分片、分区和备份。
  • 多租户知识库可按用户/行业分区,元数据过滤权限。
  • 上线看 p95/p99 延迟、召回率、索引构建耗时和内存占用。

HyDE / RRF / rerank

  • HyDE 先生成假想答案再检索,适合短 query 或语义缺失,但生成偏了会带偏召回。
  • RRF 用于多路召回结果融合,通常在 rerank 前合并候选。
  • rerank 通常放在融合后,对较小候选集精排,节省成本。
  • 不直接全量 rerank 是因为成本高、延迟高,且 rerank 需要候选召回先覆盖答案。

24. 文档有图片、表格、图表等异构数据时,从解析到可检索的链路怎么做?只返回文本会不会丢信息?

多模态 RAG 文档解析 图像增强 可检索表示
面试短答

异构文档不能只按纯文本切块。完整链路一般是文档解析、版面分析、OCR、表格结构化、 图片/图表 caption、图文位置关系绑定、生成多粒度 chunk、建立文本索引和多模态索引, 查询时按问题类型召回文本、表格、图片描述或原图证据。只返回文本可能会丢掉位置、图例、 坐标、视觉趋势、流程图关系和截图中的关键信息,所以答案最好带证据引用和原始区域回链。

处理链路

  • 解析:PDF/Word/图片转结构化页面,保留页码、坐标、标题层级。
  • OCR:识别截图、扫描件、图中标注,记录置信度。
  • 表格:抽取单元格、表头、合并单元格和单位,必要时转 Markdown/JSON。
  • 图片:生成 caption、实体、关系、图例说明,并保存原图引用。
  • 索引:文本向量、BM25、表格索引、图片 caption 向量、多模态 embedding。
  • 召回:按问题路由到文本、表格、图片或混合召回,再重排。

多模态增强

  • 图表转摘要:趋势、峰值、异常点、坐标轴和单位。
  • 图片转结构化事实:对象、位置、数量、状态、操作步骤。
  • 版面增强:同页标题、脚注、图注、相邻段落一起入上下文。
  • 答案约束:引用文档页码、图片 ID、表格行列,避免文档外扩写。
面试避坑:不要说“图片 OCR 成文字就行”。OCR 只能覆盖文字,很多图像信息是空间关系、趋势和视觉状态,需要 caption、layout 和原始证据共同保留。

25. PDF / MinerU / OCR 处理:扫描件图片、分页表格、缺失表格后处理怎么做?

PDF 解析 MinerU OCR 表格修复
面试短答

PDF 处理要先区分文本型、扫描型和混合型。文本型优先用解析器抽取结构;扫描件需要 OCR 或视觉模型; 表格要保留页码、bbox、表头、行列和跨页关系。项目里可以说 OCR/版面理解调用千问等多模态 API, DeepSeek 更适合文本推理和后处理;如果场景验证千问效果更好,就把它作为主链路,失败再降级。 MinerU 解析出的跨页表格如果有相同表格 ID,可以据此合并不同页的表格片段。

扫描件图片处理

  • 先做页面分类:可抽文本、扫描图、表格密集、图文混排。
  • 扫描件走 OCR/多模态 API,保存识别文本、坐标、置信度和原图引用。
  • 低置信度区域可裁图重试,或用更强视觉模型做二次识别。
  • 识别结果不要直接当事实,要带页码和 bbox 进入后续校验。

分页表格与缺失修复

  • 跨页表格用 table_id、表头相似度、列数、列名、页序和 bbox 对齐。
  • 第一页保留表头,后续页缺表头时继承父表头并记录来源。
  • 缺失单元格用邻近行列、单位、格式规则和原图复核,不能凭模型编值。
  • 最终同时保存 Markdown、JSON、原始截图和表格元数据,方便检索与溯源。
面试避坑:不要只说“PDF 转文本”。PDF-RAG 的关键是结构恢复、跨页对齐、OCR 置信度、原文定位和错误可回溯。

26. 图文对齐怎么建立?人工标注/弱监督怎么选?量大时如何控制成本?

图文对齐 弱监督 成本控制
面试短答

图文对齐要把图片、图注、附近段落、标题、页码、坐标和文档结构绑定起来。 少量高价值数据可以人工标注做 gold set;大规模数据通常用版面规则、图注匹配、 相邻文本、视觉模型 caption、OCR 和弱监督标签自动构建,再抽样人工复核。 成本控制靠分层处理:低风险走规则和弱监督,高风险或低置信度样本进入人工或强模型复核。

对齐信号

  • 版面坐标:图片 bbox 与段落 bbox 的距离。
  • 结构信号:标题、章节、图编号、表编号、caption。
  • 语义信号:图片 caption 与相邻文本 embedding 相似度。
  • OCR 信号:图中关键词与正文实体是否重合。
  • 人工 gold set:用于校准规则、评估召回和训练对齐模型。

降成本方法

  • 先用规则解决明显样本,只把模糊样本交给模型。
  • 按置信度分桶,低置信度抽样人工审核。
  • 用小模型做初筛,大模型只处理难例。
  • 构建主动学习闭环,把错误样本回流到规则和训练集。
  • 缓存 caption、OCR 和 embedding,避免重复计算。

27. 用户问到文档外问题或模型可能幻觉时,怎么 fallback、澄清和约束回答?

高频 文档外问题 幻觉缓解 Fallback
面试短答

我会先判断问题是否在知识边界内:看检索命中、证据覆盖、相似度、重排分和答案引用。 如果证据不足,不能硬答;应提示“当前文档未覆盖”,再选择澄清问题、扩展检索范围、 调外部工具或转人工。缓解幻觉的核心不是某个 LangChain 组件,而是检索质量、引用约束、 答案校验、拒答策略和可观测评估。

处理策略

  • 拒答:证据不足时明确说明,不编造。
  • 澄清:问题含糊、实体不明、时间范围不明时追问。
  • 检索扩展:query rewrite、多路召回、同义词、跨库检索。
  • 工具 fallback:调用搜索、业务 API、工单系统或人工知识库。
  • 人工兜底:高风险业务、低置信度答案进入人工审核。

幻觉控制

  • Prompt 明确“只能基于证据回答”。
  • 答案必须附引用,引用覆盖核心结论。
  • 生成后做 entailment/一致性检查。
  • 对数字、时间、地点、表格字段做规则校验。
  • 记录无答案率、误答率、引用缺失率。

RAG 幻觉治理链路

RAG 幻觉通常来自检索没命中、证据不相关、上下文拼接污染、模型过度补全或引用缺失。 处理链路是:提高召回覆盖,rerank 降噪,生成时强制基于证据回答,答案后做引用覆盖和事实一致性校验。 如果校验失败,要触发 Query2Query/query rewrite 重新检索,或明确拒答、澄清、扩展检索范围,而不是让模型继续编。

28. 设备故障叙述这类复杂文本,模型如何理解?术语解释/信息抽取怎么做?

复杂文本理解 信息抽取 领域术语
面试短答

设备故障文本通常有口语化、术语、缩写、因果链和时间顺序。处理上先做领域词典和术语标准化, 再抽取设备、部件、现象、告警、时间、操作、环境、故障码、影响范围和已尝试措施, 最后结合知识库或规则做诊断候选和追问。模型负责语义理解,规则和知识库负责约束边界。

抽取字段

  • 设备型号、部件、位置、版本、运行环境。
  • 故障现象、错误码、日志片段、出现频率。
  • 时间线:何时开始、是否复现、触发条件。
  • 用户操作:重启、替换、升级、回滚、清理。
  • 影响:是否停机、影响范围、严重等级。

工程做法

  • 术语表 + 同义词表,把口语映射到标准实体。
  • NER/关系抽取生成结构化 JSON。
  • RAG 召回维修手册、历史工单和知识库。
  • 低置信度字段主动追问,不猜设备或坐标。
  • 用案例库验证诊断建议,输出证据和下一步检查。

29. CLIP、以图搜图、实时多模态/CV 和数字人交互场景怎么设计?

多模态 CLIP 图搜图 数字人
面试短答

CLIP 的核心是把图像和文本编码到同一向量空间,用对比学习让匹配图文更近、不匹配更远。 以图搜图就是提取图片 embedding,和图库向量做相似度检索,再结合元数据、rerank 和业务规则过滤。 实时数字人或摄像头场景不能把每帧都交给大模型,应采用轻量 CV/ASR/VAD 前置过滤,关键帧或低置信度再调用多模态模型。

图搜图

  • 图片预处理、特征提取、向量归一化、ANN 检索。
  • 相似度可用 cosine、dot product 或欧氏距离,关键是同一 embedding 空间。
  • 结合分类、时间、地点、质量分过滤,避免只看向量相似。
  • 评估 Recall@K、mAP、误召回和延迟。

实时交互

  • 数字人用 VAD 判断用户是否说完,支持打断和流式 ASR。
  • 用户停顿时不急着回答,可设置短等待窗口和增量理解。
  • 摄像头场景用传统 CV 做实时检测,多模态模型做复杂理解和复核。
  • 架构上分流式采集、事件检测、模型推理、TTS/渲染和低延迟缓存。

评测、指标与质量保障

Prompt 迭代、RAG 指标、LLM-as-judge、系统测试、代码单测质量和覆盖率。

30. Prompt 模板如何搭建与持续迭代?怎么判断真的变好?

高频 Prompt 评测
面试短答

Prompt 模板要分角色、任务、输入、约束、输出格式、工具说明、拒答规则和示例。 迭代不能靠主观感觉,要用固定评测集比较正确率、格式遵循、引用覆盖、拒答准确率、延迟和成本。 线上再看用户采纳率、人工接管率、失败样本和回滚指标。

模板结构

  • 明确任务边界和不可做事项。
  • 把输入字段结构化,避免无关信息污染。
  • 输出用 JSON/schema 或固定段落结构。
  • 加入正反例,覆盖常见失败模式。

迭代方法

  • 每次只改一个变量,保留版本和变更原因。
  • 用离线集跑自动评测和人工抽检。
  • 对线上失败样本归因,进入回归集。
  • 指标变好但成本/延迟恶化时要做取舍。

提示词维度

常见维度包括角色定位、业务目标、输入字段、上下文证据、工具列表、推理约束、输出格式、失败处理、 安全边界、示例和评测口径。优化时不要只堆长提示词,而要看哪一维导致失败:是信息缺失、约束冲突、 格式不稳定、工具说明不清,还是召回证据本身不可靠。

31. Harness Engineering 是什么?它和 Prompt Engineering、Context Engineering 是什么关系?

高频 Harness Engineering Prompt Engineering Context Engineering
面试短答

Harness Engineering 可以理解为给大模型应用搭建“工程化运行外壳”:不只写 prompt, 还要把上下文选择、工具调用、工作流、记忆、评测、权限、回退、监控和版本管理串起来, 让模型能力能稳定地在业务系统里运行。Prompt Engineering 主要解决“怎么问模型”, Context Engineering 解决“给模型看什么信息”,Harness Engineering 解决“如何把模型、上下文、工具和评测组织成可控系统”。 它更像从提示词技巧到工程体系的外延扩展,不是简单替代关系。

三者区别

  • Prompt Engineering:设计角色、任务、约束、输出格式、示例和拒答规则。
  • Context Engineering:选择、压缩、排序和隔离上下文,包括 RAG 证据、历史、用户偏好和工具结果。
  • Harness Engineering:把 prompt/context/model/tools/eval/guardrails 组合成稳定可运行的应用框架。
  • 面试中可以说:prompt 是指令层,context 是信息层,harness 是系统运行层。

Harness 包含什么

  • 模型路由、参数配置、结构化输出解析和重试。
  • 工具注册、权限控制、超时、幂等、审计和失败回退。
  • 上下文预算管理、检索、摘要、去噪和来源引用。
  • 离线评测、线上监控、A/B 实验、版本回滚和回归样本沉淀。
  • 安全护栏:越权拦截、敏感信息过滤、幻觉检测和人工接管。

是不是进化迭代

  • 可以看成工程复杂度提升后的演进:从调 prompt,到管上下文,再到搭建完整运行体系。
  • 但不是线性替代。简单任务仍然只需要 prompt;知识密集任务需要 context;生产系统需要 harness。
  • Context Engineering 是 Harness Engineering 的关键组成部分,而不是被替代。
  • Prompt Engineering 仍然重要,只是从单个提示词优化,变成系统中可版本化、可评测的组件。

项目表达示例

  • RAG 问答:harness 负责检索链路、上下文拼接、引用校验、拒答和质量评测。
  • Agent 系统:harness 负责工具 schema、调用顺序、观察结果、停止条件和异常恢复。
  • 代码生成:harness 负责仓库上下文、测试执行、diff 审查、失败重试和回滚。
  • 企业落地:harness 负责权限、日志、监控、成本预算和灰度发布。
面试避坑:不要把 Harness Engineering 讲成“更高级的提示词”。它强调的是大模型应用的工程控制面, 核心价值是让模型输出可复现、可评测、可治理、可回滚。

32. 异构数据解析后如何保障回答准确?检索召回率/忠实度等指标怎么定义?用另一个大模型评测怎么做?

高频 质量保障 RAG 指标 LLM 评测
面试短答

我会把质量保障拆成解析质量、检索质量和生成质量。解析侧看 OCR/表格/图文对齐是否正确; 检索侧用 Recall@K、MRR、NDCG、覆盖率;生成侧用忠实度、答案正确率、引用覆盖率和拒答准确率。 用大模型评测时要构造带标准答案和证据的问题集,对齐评分口径,输出结构化分数,并做人审抽样校准一致性。

指标定义

  • Recall@K:分子是 top K 命中 gold evidence 的问题数,分母是可回答问题总数。
  • 忠实度:分子是答案中可被证据支持的断言数,分母是答案全部关键断言数。
  • 引用覆盖率:分子是有有效引用的关键结论数,分母是全部关键结论数。
  • 拒答准确率:文档外问题中正确拒答的比例。
  • 解析准确率:表格单元格、OCR 文本、图文关系与人工标注一致的比例。

LLM-as-judge 方案

  • 问题集覆盖事实问答、表格计算、图表理解、文档外问题和边界问题。
  • 给评测模型提供问题、答案、检索证据、标准答案和评分 rubric。
  • 要求输出 JSON:正确性、忠实度、引用、遗漏、错误原因。
  • 用人工 gold set 校准模型评分,计算与人工的一致率或 Cohen's kappa。
  • 不同模型评测时固定 prompt、证据、温度和评分维度,避免口径漂移。

错误发现与定位

发现错误后按链路回溯:是解析错、切分错、图文对齐错、召回没命中、重排错、上下文拼接错, 还是生成时越界。每个阶段保存 trace、chunk ID、页码坐标、工具输入输出和模型评分,才能定位到可修复环节。

33. 怎么测试这类 AI 系统?评测数据集如何构建、测试分哪些层次、验证哪些能力?

高频 AI 测试 评测集 回归
面试短答

AI 系统测试要分层:组件测试、链路测试、端到端测试、回归测试和线上监控。 评测集要覆盖高频问题、长尾问题、负样本、文档外问题、权限场景、多轮追问和失败恢复。 验证能力包括意图理解、召回、工具调用、事实一致性、拒答、格式、延迟、成本和安全。

测试层次

  • 单元:解析器、切分器、检索器、工具 schema、权限过滤。
  • 集成:RAG 链路、Agent 工具调用、memory 写入和检索。
  • E2E:从用户问题到答案、引用、操作结果全链路验证。
  • 回归:每次 prompt、模型、索引、工具变更后跑固定集。
  • 对抗:提示注入、越权请求、模糊实体、缺参、脏数据。

数据集构建

  • 从真实日志抽样,去除隐私后人工标注。
  • 按业务场景和难度分桶,避免只测简单题。
  • 为每个问题标注 gold answer、gold evidence、允许拒答条件。
  • 保留错误样本,形成 regression set。
  • 线上监控无答案率、低分率、重试率和人工接管率。

34. 代码理解与单测生成:AST/LSP 如何融入?哪些代码不适合自动生成?Mock 与质量控制怎么做?

高频 代码理解 单测生成 Mock
面试短答

代码生成单测前要做前置分析:AST、符号表、调用图、依赖注入、函数副作用和现有测试风格。 AST/LSP 能提供结构化上下文,但救不了强外部依赖、全局状态混乱、隐式时序、随机性和不可控 IO。 好单测不只看覆盖率,还要看断言质量、边界覆盖、稳定性、变异测试和缺陷发现率。

不适合自动生成的代码

  • 强依赖真实 DB/RPC/文件系统且无接口抽象。
  • 大量时间、随机、并发、全局状态和单例副作用。
  • 业务规则藏在配置、反射、动态执行或运行时上下文。
  • 函数过长、职责混杂、输入输出不可观测。

Mock 边界

  • 外部不可控依赖必须 mock 或 contract test。
  • 核心业务逻辑不要过度 mock,否则掩盖真实集成问题。
  • DB/RPC 用测试容器、桩服务、契约数据和事务回滚保证稳定。
  • 质量指标包括断言密度、变异分数、flake rate 和缺陷发现率。

35. 分支覆盖率怎么统计?代码插桩原理与实现思路是什么?

高频 覆盖率 插桩
面试短答

分支覆盖率统计的是条件分支的各个出口是否被执行,例如 if 的 true/false、switch case、异常路径。 插桩是在源码、AST、字节码或运行时 trace 中插入计数器,测试执行后收集命中信息,再映射回源码行和分支。 覆盖率高不等于测试好,还要看断言是否有效、是否覆盖边界和是否能杀死变异。

实现思路

  • 源码/AST 插桩:可读性强,但要处理语法映射。
  • 字节码插桩:语言运行时友好,常见于 JVM。
  • 运行时 trace:侵入低,但映射和精度要校准。
  • 计数器按文件、函数、行、分支 ID 聚合。

指标优化

  • 优先提高关键业务分支,而非追求无意义覆盖。
  • 关注异常、空值、边界、权限和并发路径。
  • 结合 mutation testing 判断断言是否真的有效。
  • 对生成测试设最低断言质量和稳定性门槛。

36. 机器学习预测值和传统方法计算值如何比较偏差?SFT 单任务/多任务策略怎么选?

预测评估 偏差分析 SFT
面试短答

机器学习预测值和传统方法计算值要放在同一口径下比较:输入数据、时间窗口、单位、过滤规则和评价指标必须一致。 先看 MAE、RMSE、MAPE、相关性和分桶误差,再分析哪些场景模型优于规则、哪些场景规则更稳。 SFT 策略上,多任务适合通用指令能力,单任务适合垂直场景极致效果,选择依据是业务目标和评测集。

偏差分析

  • 按时间、用户群、地区、设备、数值区间分桶比较误差。
  • 看模型是否在长尾、异常值、冷启动样本上失真。
  • 保留传统方法作为 baseline、兜底或校验器。
  • 上线前做回放测试,上线后监控漂移和误差分布。

SFT 决策

  • 多任务 SFT:泛化好,适合通用助手和多能力模型。
  • 单任务 SFT:上限高,适合医疗、法律、函数调用等垂直任务。
  • 任务冲突时分 adapter、分路由或分阶段训练。
  • 评估要看任务指标、格式遵循、幻觉、拒答和泛化能力。

协议与工具生态

MCP、Function Calling、Skill、A2A、工具接口和权限治理。

37. MCP:了解/使用过吗?协议/实现思路与工程价值是什么?

MCP 协议 工具生态
面试短答

MCP 是 Model Context Protocol,用来标准化模型应用和外部工具、数据源之间的连接。 典型结构是 Host、Client、Server:Host 是 Claude Desktop、IDE 或 Agent 应用; Client 维护一条到 Server 的连接;Server 暴露 tools、resources、prompts 等能力。 工程价值是把工具接入从“每个应用单独适配”变成协议化、可复用、可治理的生态。

协议抽象

  • Tools:模型可请求执行的动作,例如查库、发工单、读文件。
  • Resources:可读取的上下文数据,例如文档、schema、日志。
  • Prompts:服务端提供的可复用提示模板或工作流入口。
  • Transport:常见为 stdio 或 HTTP/SSE 等传输方式。
  • 消息:基于 JSON-RPC 风格请求、响应与通知。

工程价值

  • 统一工具描述、参数 schema、返回格式和错误处理。
  • 降低模型应用接入数据库、代码仓库、内部系统的重复成本。
  • 便于权限控制、审计、隔离和观测。
  • 让工具服务可以独立部署、测试和复用。
  • 适合企业把内部能力封装为可控的模型上下文服务。
面试避坑:MCP 不是新的模型,也不等于 Agent 框架。它更像连接层协议,解决模型应用和外部上下文/工具之间的标准化问题。

38. 介绍你写过的 MCP 工具:功能、接口形态、权限/安全、失败重试等

高频 MCP Tool 接口设计 安全 重试
面试短答

可以用一个具体工具来讲,例如“内部知识检索 + 工单查询 MCP Server”。 Server 暴露 search_docsget_ticketsummarize_ticket 等 tools, 每个 tool 都有 JSON Schema 参数、结构化返回、错误码、权限校验和审计日志。 安全上默认只读、按用户身份透传权限、做输入校验和结果脱敏;失败时按错误类型做超时、重试、降级和人工兜底。

接口形态

  • Tool 名称:动词 + 业务对象,例如 search_docscreate_ticket
  • 参数 schema:明确类型、必填字段、枚举值、分页、时间范围。
  • 返回结构:状态、数据、引用来源、置信度、错误码。
  • 资源:把文档、schema、日志作为 resources 暴露给模型读取。
  • 提示模板:用 prompts 固化常见排障、摘要、检索工作流。

安全与可靠性

  • 鉴权用 OAuth、PAT、服务账号或会话身份透传。
  • 工具按最小权限设计,写操作需要显式确认或审批。
  • 输入做 schema 校验、SQL/命令注入防护、路径白名单。
  • 输出做脱敏、权限过滤和敏感字段裁剪。
  • 网络失败可指数退避重试,业务失败不盲目重试。
  • 记录 trace、调用人、参数摘要、结果状态和耗时。
面试避坑:不要只说“我把 API 包成 MCP”。要讲清 tool schema、权限边界、审计、幂等、超时、重试和失败兜底,这些才是工程落地重点。

如何确保只能查询不能修改

从账号、接口和执行三层做约束:服务账号只授予只读权限;MCP 只注册 searchgetlist 这类只读 tool,不暴露写接口;数据库侧使用只读账号、视图和行列级权限;工具执行前校验操作类型, 对 SQL 做 allowlist/AST 检查,拒绝 insertupdatedeletedrop 等语句。

39. Skill:了解/使用过吗?如何封装、注册、选择与调用?

Skill 能力封装 选择调用
面试短答

Skill 可以理解为把某类任务的说明、工具、脚本、模板、示例和约束打包成一个可被 Agent 选择的能力单元。 封装时要写清触发条件、输入输出、执行步骤、可用工具和失败处理;注册时让运行时能发现它的元数据; 调用时由模型或调度器根据任务意图、描述匹配、权限和上下文决定是否加载。

封装内容

  • 元数据:名称、描述、适用场景、版本、权限需求。
  • 说明:执行流程、边界条件、质量标准。
  • 资源:模板、示例、参考文档、脚本、资产。
  • 工具:可调用 API、命令、MCP server、浏览器或文件能力。

选择与调用

  • 先用短描述做候选召回,避免把全部说明塞进上下文。
  • 匹配任务意图、输入类型、输出格式和权限边界。
  • 命中后按需加载详细说明、脚本或模板。
  • 执行时记录 trace,并在失败时给出可恢复路径。

面试表达

可以把 Skill 类比为“带说明书和工具箱的插件化工作流”。它比单个 tool 更高层, 因为 tool 只是一个动作,而 Skill 通常包含何时用、怎么用、如何验证和如何处理异常。

实现思路

Skill 通常由元数据、触发描述、详细说明、脚本/模板/资产和验证方法组成。 运行时先用短描述做路由,命中后再加载完整说明;执行时把 Skill 作为上下文能力注入, 但工具权限、文件访问和外部调用仍由宿主系统控制。评估时看触发准确率、任务成功率、误触发率和执行成本。

40. Skill 的“渐进式披露”大概原理是什么?

渐进式披露 上下文效率 信息分层
面试短答

渐进式披露就是把 Skill 信息分层:先暴露很短的名称和描述用于选择, 只有命中后才加载详细操作说明;只有执行到具体步骤时才读取示例、模板、脚本或参考资料。 这样既节省上下文窗口,又减少无关技能说明对模型决策的干扰。

信息分层

  • 第一层:名称、描述、触发条件,用于候选召回。
  • 第二层:Skill 主说明,包含核心流程和约束。
  • 第三层:按需读取的参考文档、脚本、模板、样例。
  • 第四层:执行产物、日志、验证结果。

为什么有效

  • 降低 token 消耗。
  • 减少无关指令干扰。
  • 让模型先做“是否需要”的选择,再做“如何执行”。
  • 复杂能力可维护为模块,不必塞进系统提示词。
面试追问:如果 Skill 选择错了怎么办?可以用更精确的描述、负例、评估集、调用日志和人工反馈改进路由,也可以让执行器在低置信度时不加载或请求澄清。

41. A2A 协议:是否了解?

A2A Agent-to-Agent 协作通信
面试短答

A2A 是 Agent-to-Agent 协议方向,目标是让不同厂商、不同框架实现的 Agent 能发现彼此能力、 交换任务、传递上下文并协作完成工作。核心概念通常包括 Agent Card/能力描述、任务生命周期、 消息通信、输入输出 artifact、流式状态更新和认证授权。它解决的是多 Agent 跨系统协作的互操作问题。

核心思路

  • 发现:通过 Agent Card 描述名称、能力、端点、认证和交互方式。
  • 通信:使用标准消息和任务协议传递请求、状态和结果。
  • 任务:创建、执行、取消、查询状态,支持长任务和异步更新。
  • 产物:返回文档、结构化数据、链接、文件等 artifact。
  • 治理:鉴权、审计、权限、速率限制和可信边界。

与 MCP 的区别

MCP 更偏“模型应用连接工具和数据源”,A2A 更偏“Agent 之间互相发现、委派任务和协作”。 一个 Agent 可以通过 MCP 调工具,也可以通过 A2A 把任务交给另一个专业 Agent。

落地关注点

需要考虑 Agent 身份、能力描述是否可信、上下文泄露、任务边界、错误恢复、SLA、审计和成本控制。 多 Agent 协作不一定天然更好,只有在专业能力分工、跨系统协同或组织边界清晰时才有明显收益。

模型微调与工程基础

LoRA/QLoRA、后训练、模型选型、LSTM/Transformer、数据库、并发、网络、部署和基础算法。

42. LoRA 除了省参数/显存外还有什么收益?你做的 LoRA 工作是否落地过?

LoRA 微调 落地
面试短答

LoRA 的收益不只是省显存。它还让不同任务可以维护独立 adapter,便于版本管理、快速回滚、 多租户定制和 A/B 测试;训练成本低,适合领域术语、输出格式、风格和工具调用模式的适配。 是否落地要如实回答:如果只是实验,要说明数据、指标、离线效果和未上线原因;如果上线,要说明收益、监控和回滚策略。

额外收益

  • 低成本适配领域表达、格式和分类边界。
  • 多个 adapter 可按客户、任务、语言或场景切换。
  • 不改基座模型,部署和回滚更轻。
  • 训练更快,适合频繁迭代和小样本验证。
  • 可与 RAG 互补:RAG 补知识,LoRA 补行为和风格。

落地评估

  • 离线:准确率、格式遵循、拒答、幻觉率。
  • 线上:人工接管率、用户满意度、延迟、成本。
  • 风险:过拟合、灾难性遗忘、数据泄露、评测集污染。
  • 回滚:adapter 版本可切换,保留基座模型路径。

QLoRA 影响因子怎么设

LoRA 注入到原始权重时通常是 W + alpha / r * BA,其中 r 是低秩维度, alpha 控制 adapter 对原模型的影响强度。QLoRA 是量化基座模型后训练 LoRA adapter, scaling 逻辑仍然要控制“适配强度”。实践上从常见配置开始,用验证集观察任务收益、格式遵循、 幻觉率和过拟合;alpha 太小学不到任务,太大可能破坏基座能力或导致输出风格过拟合。

43. 模型后训接触过吗?微调参数一般根据什么去调?

高频 模型后训 微调参数 SFT
面试短答

模型后训我会按几个层次理解:继续预训练用于补领域语料,SFT 用高质量指令数据学习任务格式和回答方式, 偏好优化/RLHF/DPO/GRPO 用反馈信号对齐偏好,LoRA/QLoRA 是常用的参数高效微调方式。 微调参数不是拍脑袋调,一般根据数据规模、任务复杂度、基座模型大小、显存预算、过拟合情况和验证集指标来定。

后训接触怎么答

  • 数据:原始数据可能是文档、工单、日志、对话,但训练前整理成 JSONL/messages 等结构化样本。
  • SFT:让模型学习垂直领域问答、格式遵循、工具调用或拒答边界。
  • LoRA/QLoRA:只训练 adapter,适合资源有限、快速试验和多版本切换。
  • 偏好优化:当答案风格、拒答、安全性或工具选择需要对齐时再考虑 DPO/RLHF/GRPO。

参数怎么调

  • 学习率:先小范围网格搜索;loss 震荡就降,收敛太慢可适当升。
  • epoch:看验证集,不看训练集;验证集下降后变差说明过拟合。
  • batch / grad accumulation:受显存限制,目标是稳定梯度和可接受吞吐。
  • LoRA r/alpha/dropout:r 控制容量,alpha 控制 adapter 影响强度,dropout 抑制过拟合。
  • target modules:常从 attention 的 q/k/v/o 或 MLP 模块试起,按任务收益和成本选择。
面试避坑:不要只说“调 learning rate”。更完整的回答是:先固定数据和评测集,再看 loss、验证集任务指标、格式遵循、幻觉率、过拟合和线上成本,按证据调参。

44. 微调在什么场景做?数据结构、完整流程、过拟合/显存不足和 20 行业 PDF 微调方案怎么讲?

高频 微调流程 数据结构 过拟合
面试短答

微调适合模型需要稳定学习某类输出格式、业务话术、工具调用、拒答边界或垂直领域表达时使用。 原始数据可以是 PDF、工单、日志、问答、表格等非结构化或半结构化数据,但进入训练前一定要整理成结构化样本, 例如 messagesinstruction/input/output 或 query-positive-negative。完整流程是数据清洗、 标注/构造样本、划分训练验证集、选择 SFT/LoRA/QLoRA、训练、评估、灰度和回滚。

为什么不全量微调

  • 全量微调显存、算力、训练时间和回滚成本高。
  • 小数据场景容易过拟合,也更容易破坏基座通用能力。
  • LoRA/QLoRA 只训练 adapter,适合快速试错、多行业多版本隔离。
  • 只有数据量大、任务强绑定、预算足、需要深度改模型行为时才考虑全量。

大规模数据与行业 PDF 方案

  • 几百万样本不一定更好,关键看去重、质量、覆盖、标签一致性和噪声率。
  • 20 个行业 PDF 先解析、脱敏、切块、抽取术语/问答/拒答样本,再分行业采样。
  • 优先做 RAG + 少量 SFT/LoRA;事实知识尽量放知识库,模型学习回答方式和边界。
  • 评估按行业分桶,看准确率、幻觉率、拒答、格式遵循和行业间负迁移。

避免过拟合

  • 训练/验证/测试严格隔离,保留线上真实回归集。
  • 控制 epoch、学习率、LoRA rank/alpha,必要时加 dropout 和 early stopping。
  • 清洗重复样本、模板化样本和低质量答案,避免模型背题。
  • 同时看训练 loss、验证集指标、人工抽检和泛化样本。

显存不足

  • 常见原因:模型太大、序列太长、batch 太大、optimizer state 和 KV/activation 占用高。
  • 解决:QLoRA/量化、gradient checkpointing、梯度累积、降低 batch/seq length。
  • 使用 ZeRO/FSDP、混合精度、CPU/NVMe offload 或多卡切分。
  • 训练前估算显存,训练中监控 OOM、吞吐和显存峰值。

45. DPO/PPO/RLHF 怎么讲?奖励函数和奖励值怎么定?为什么 SFT 容易灾难性遗忘?

高频 DPO PPO 奖励函数
面试短答

SFT 是模仿标准答案,容易把模型推向训练数据分布,数据窄或训练过度时会遗忘基座能力。 DPO 直接用偏好对优化“好回答相对坏回答”的概率,不需要显式训练 reward model;PPO/RLHF 通常用 reward model 给回答打分,再用 critic 估计价值降低方差。奖励函数要围绕业务目标设计,既看最终结果,也看格式、引用、工具调用和安全边界。

DPO 与 PPO

  • DPO 输入偏好对:prompt、chosen、rejected,训练稳定、工程简单。
  • DPO 损失可表述为让模型相对参考模型提高 chosen 相对 rejected 的 log prob 差。
  • PPO 更灵活,可在线采样和多目标奖励,但训练复杂、稳定性要求高。
  • PPO 优势是可优化不可微或组合奖励,例如工具执行成功、用户反馈。

奖励设计

  • 结果奖励:答案正确、SQL 执行成功、工具返回满足目标。
  • 过程奖励:工具顺序、参数合法、引用覆盖、无越权。
  • 惩罚项:幻觉、格式错、越权、长回答、无效调用和重复调用。
  • 奖励值先规则化、归一化,再用人工样本校准,避免 reward hacking。

46. Qwen vs 其他模型、DeepSeek-R1-Distill-Qwen、LLM-Embedding vs BGE 怎么比较?

模型选型 Qwen DeepSeek Embedding
面试短答

Qwen 系列通常优势在中文、工具调用、多模态和开源生态;DeepSeek-R1 方向强调推理能力, 其 Distill-Qwen 是把 R1 推理能力蒸馏到 Qwen 基座上,不等同于原版 Qwen。 选型不能只看榜单,要看业务评测:正确率、幻觉率、工具调用、OCR/多模态、延迟、成本和私有化。 新的 LLM-Embedding 通常语义理解更强,BGE 这类传统 embedding 胜在成熟、便宜、稳定、部署简单。

模型对比维度

  • 中文专业术语、长文档、数学/推理、代码、函数调用。
  • 多模态 OCR/图表理解能力和结构化输出稳定性。
  • 部署方式:API、私有化、量化、显存、吞吐和限流。
  • 业务集 A/B:不要用单个 demo 决定模型。

Embedding 取舍

  • LLM embedding 对长语义、跨语言、复杂 query 可能更好。
  • BGE/M3 类模型工程成熟,适合本地化和高并发低成本。
  • 专有名词、错误码、型号仍要配 BM25,不要只靠 embedding。
  • 最终看 Recall@K、NDCG、延迟、成本和线上采纳率。

47. LSTM 模型、权重共享、训练/预测数据差异,以及 Transformer 基础怎么回答?

高频 LSTM Transformer 基础原理
面试短答

LSTM 是 RNN 的改进,通过输入门、遗忘门、输出门和候选状态缓解长期依赖中的梯度消失。 同一层 LSTM 在不同时间步共享同一套权重矩阵,这是它能处理变长序列的关键。 Transformer 相比 LSTM 可并行训练,长距离依赖路径更短,靠自注意力建模全局关系;位置编码用于补充序列顺序信息。

LSTM 细节

  • 训练时输入通常是历史序列和标签,可能用 teacher forcing。
  • 预测时只能用已知历史和模型上一步输出,容易误差累积。
  • 权重在时间维共享,但不同层、不同方向的 LSTM 有各自参数。
  • 预测值要和传统公式/规则值比较偏差,分析系统性误差和极端样本。

Transformer 基础

  • 位置编码包括绝对位置、相对位置、RoPE、ALiBi 等。
  • Encoder 偏理解输入,Decoder 偏自回归生成,Encoder-Decoder 适合翻译等任务。
  • Dropout 训练时随机丢弃部分激活,降低共适应和过拟合;预测时关闭。
  • Temperature 调整 logits 分布,越高越随机,越低越确定。

48. 语言栈:主要用 Python 还是 Java?是否了解 Java 多线程/类加载等基础?

语言栈 Python Java
面试短答

AI 应用层我主要会强调 Python,因为模型调用、RAG、数据处理、FastAPI、向量库和评测生态更成熟。 Java 更常用于企业后端、网关、订单、权限、工作流和高并发服务。Java 基础要能讲清线程池、 synchronized/Lock、volatile、CAS、CompletableFuture、JVM 内存模型和双亲委派类加载。

Python 侧

  • FastAPI/Flask 提供模型服务和 Agent API。
  • Pandas、PyMuPDF、OCR、向量库 SDK 做文档处理。
  • asyncio/httpx 处理并发模型调用和工具调用。
  • pytest + 评测脚本做离线测试。

Java 侧

  • 线程池参数、队列、拒绝策略和上下文传递。
  • 类加载机制、双亲委派、SPI、热加载风险。
  • JVM 内存、GC、锁、并发容器和异步编排。
  • Spring Boot 对接 AI 服务、权限、审计和业务系统。

49. MySQL 核心基础:慢查询、事务隔离、覆盖索引、MVCC 和索引类型怎么回答?

高频 MySQL 索引 事务
面试短答

慢查询定位先看慢日志、执行计划、索引命中、扫描行数、锁等待和 SQL 写法。 事务核心是 ACID,隔离级别包括读未提交、读已提交、可重复读、串行化;MySQL InnoDB 通过 MVCC、 undo log、read view 和锁解决一致性读与并发写。覆盖索引是查询字段都在索引里,避免回表。

慢查询优化

  • 用 EXPLAIN 看 type、key、rows、Extra。
  • 检查是否全表扫描、回表过多、排序临时表、索引失效。
  • 优化 where/order by/group by、分页和 join 顺序。
  • 必要时加联合索引、覆盖索引或拆分冷热数据。

索引与 MVCC

  • B+ 树适合范围查询和排序;Hash 适合等值但不适合范围。
  • 全文索引用于文本匹配,空间索引用于 GIS。
  • MVCC 通过版本链和 read view 支持非锁定一致性读。
  • 覆盖索引生效前提是查询列都来自同一索引且条件可利用。

50. 并发、锁、HTTPS、SSE/WebSocket/HTTP、JVM、Hash 与长链接系统怎么准备?

高频 并发 协议 后端基础
面试短答

这类基础题要用“概念 + 适用场景 + 风险”回答。Python GIL 限制同一进程多线程并行执行字节码, 但 IO 密集仍可用线程;Go goroutine 由 GMP 调度,栈可增长,适合高并发 IO。 SSE 适合服务端单向推流,WebSocket 适合双向实时通信,HTTP 适合普通请求响应。

并发与锁

  • Lock 互斥,RLock 可重入,Semaphore 控制并发许可数。
  • 锁解决共享资源竞争,风险是死锁、饥饿、优先级反转。
  • 多机用分布式锁,需考虑过期、续租、时钟、幂等和 fencing token。
  • 协程是用户态调度的轻量执行单元,线程由 OS 调度,进程资源隔离更强。

网络与运行时

  • HTTPS 通过证书验证身份,握手协商密钥,后续对称加密传输。
  • JVM 内存包括堆、栈、方法区/元空间、程序计数器和本地方法栈。
  • Hash 要关注函数分布、冲突处理、扩容和一致性哈希。
  • 长链接/短链系统用短码映射长 URL,存储映射、过期、风控和跳转统计。

51. LLM 输入、Self-Attention/QKV/Multi-head、长上下文优化,以及 SFT/RL/GRPO 提升工具调用怎么讲?

高频 LLM 基础 Attention RL
面试短答

LLM 输入先被 tokenizer 切成 token ID,再查 embedding,加上位置编码后进入 Transformer。 Self-Attention 用 Q/K 计算相关性,用权重加权 V;Q/K/V 来自同一 token 表示的不同投影,所以同一 token 在不同层、 不同阶段的向量会变化。提升工具调用可用 SFT 学格式和示例,RL/GRPO 用奖励约束结果正确、参数合法和过程稳定。

Attention 基础

  • Q 表示“我要找什么”,K 表示“我是什么索引”,V 表示“我提供什么信息”。
  • Multi-head 让模型从不同子空间关注语法、实体、位置和关系。
  • 长上下文瓶颈是 attention 复杂度高、成本高和有效注意力下降。
  • 优化手段包括稀疏注意力、滑窗、KV cache、检索增强、摘要和分块。

SFT / RL 切入

  • SFT 用高质量函数调用样本学习工具选择、参数和输出格式。
  • PPO 常见 Reward Model 评分,Critic 估计价值函数降低方差。
  • GRPO 可用组内相对奖励,减少单独 value model 依赖。
  • Function Call 奖励包含结果奖励、参数合法、工具顺序和过程惩罚。

SFT 策略选择

多任务 SFT 适合训练通用指令遵循能力,把问答、摘要、工具调用、格式化输出等任务混合,泛化更好但任务间可能冲突。 单任务 SFT 适合垂直场景,例如医疗问答、法律生成、函数调用格式,性能上限更高但更容易偏科。 决策时看目标:做通用助手优先多任务,解决明确业务痛点优先单任务;无论哪种都要留验证集监控过拟合、幻觉和格式遵循。

52. 大模型怎么部署?推理速度怎么优化?vLLM 有什么特点,部署后监控哪些指标?

高频 模型部署 vLLM 监控
面试短答

大模型部署通常用容器化服务,前面接网关和鉴权,后面是推理服务、模型权重、GPU 资源、日志监控和灰度发布。 推理优化包括量化、KV cache、连续批处理、并发调度、流式输出、prompt cache、模型裁剪/蒸馏和合理 max tokens。 vLLM 的代表特点是 PagedAttention、连续批处理和 OpenAI 兼容接口,适合高并发推理服务。

部署方式

  • Docker 镜像固定依赖,K8s/裸机按 GPU 资源调度。
  • 配置模型路径、tokenizer、量化方式、并发数、显存利用率。
  • 灰度发布新模型,保留旧版本回滚。
  • RAG 服务和模型服务解耦,方便单独扩容。

监控指标

  • 请求量、成功率、错误码、首 token 延迟、总延迟、吞吐。
  • 输入/输出 token、队列等待、GPU 利用率、显存、OOM。
  • 模型质量:采纳率、拒答率、幻觉率、人工接管率。
  • 成本:每请求 token 成本、GPU 小时成本和缓存命中率。

53. 梯度下降、Adam、中文分词和常用 Linux 指令这些基础题怎么回答?

基础知识 优化算法 中文分词 Linux
面试短答

梯度下降是沿损失函数负梯度方向更新参数,目标是让 loss 变小;常见变体有 SGD、Momentum、RMSProp、Adam、AdamW。 Adam 结合一阶动量和二阶动量,自适应调整学习率,工程上常用但也要配合 weight decay、warmup 和学习率调度。 中文分词可用词典、统计模型、CRF/HMM、BPE/WordPiece/SentencePiece;LLM 通常使用子词 tokenizer。

优化算法

  • SGD 简单但震荡;Momentum 加速并抑制震荡。
  • RMSProp 根据梯度平方滑动平均调整步长。
  • Adam 同时用动量和自适应学习率,AdamW 解耦 weight decay。
  • 调参重点看学习率、batch、warmup、梯度裁剪和验证集。

Linux 高频命令

  • 文件:lsfinddutarchmod
  • 文本:grepawksedheadtail
  • 进程:pstopkillnohup
  • 网络:curlnetstat/sslsofping

54. FastAPI 常用组件/包的理解与使用场景

FastAPI Pydantic 依赖注入 异步
面试短答

FastAPI 常用能力包括 APIRouter 做模块化路由,Pydantic 做请求/响应模型和校验, Depends 做依赖注入,Middleware 做跨请求处理,BackgroundTasks 做轻量后台任务, lifespan 管理启动关闭资源,Exception Handler 统一异常,OpenAPI 自动生成文档。 部署上常配 Uvicorn/Gunicorn,数据库常配 SQLAlchemy/SQLModel,认证常用 OAuth2/JWT。

核心组件

  • APIRouter:按业务域拆路由,便于版本化和模块管理。
  • Pydantic:类型校验、默认值、嵌套模型、响应过滤。
  • Depends:数据库 session、鉴权、配置、分页参数复用。
  • Middleware:CORS、日志、请求 ID、耗时统计、限流。
  • BackgroundTasks:发邮件、写审计、异步通知等轻任务。
  • Lifespan:初始化连接池、模型、缓存,关闭时释放资源。

相关包

  • uvicorn:ASGI server,本地开发和生产常用。
  • sqlalchemy / sqlmodel:ORM、事务、数据库模型。
  • alembic:数据库迁移。
  • httpx:异步 HTTP 客户端和测试客户端。
  • python-jose / pyjwt:JWT 处理。
  • pytest:接口测试、依赖覆盖、异步测试。

Agent/RAG 服务中的用法

FastAPI 适合作为 Agent API 层:接收任务、做鉴权和限流、提交异步任务、暴露 SSE/WebSocket 流式输出、 对接向量库和模型服务。要注意长任务不能阻塞请求线程,生产中应接 Celery、RQ、Arq、Kafka 或工作流系统。

系统设计与项目复盘

NL2SQL、AI 漫剧、天气、点奶茶、多服务联动、HTML 报告转换、项目复盘和前沿判断。

55. NL2SQL 系统如何结合大模型?Schema 不匹配、Supervisor、多 Agent 状态共享和 SQL 安全怎么做?

高频 NL2SQL SQL 安全 Supervisor
面试短答

NL2SQL 的核心链路是自然语言理解、业务指标识别、schema linking、SQL 生成、SQL 校验、权限过滤和执行结果解释。 大模型负责理解用户意图和生成候选 SQL,但不能直接裸执行;必须有表/字段白名单、语法校验、只读权限、limit、 超时、SQL 解释和人工/规则兜底。复杂系统可以用 Supervisor 调度意图识别、schema 检索、SQL 生成、校验和解释子 Agent。

完整流程

  • 解析问题:时间、指标、维度、过滤条件、排序和聚合。
  • schema linking:把业务词映射到表、字段、指标口径和枚举值。
  • 生成 SQL:结合示例、库表说明、字段约束和 SQL 方言。
  • 校验执行:AST/SQL parser 检查,只允许 SELECT,补 limit,阻断越权表字段。
  • 结果解释:把查询结果转成业务语言,必要时提示口径限制。

多 Agent 状态设计

  • 共享状态只放 query、候选 schema、约束、候选 SQL、校验结果和错误。
  • 每个子 Agent 有私有 scratchpad,避免互相污染推理过程。
  • Supervisor 只读取结构化产物做路由,不共享敏感中间链路。
  • schema 不匹配时走澄清、同义词、指标字典或人工维护的指标层。

56. 系统设计:做一个“全自动 AI 漫剧创作 Agent”,从场景输入到自我反馈迭代,如何拆解与编排?

系统设计 内容生成 Agent 多模态 自我反馈
面试短答

我会把它设计成状态图或工作流,而不是一个大 Prompt。输入场景后,先做需求解析和风格设定, 再生成剧情大纲、分镜、角色设定、台词、画面提示词、图片/视频/配音素材,随后进入一致性检查、 内容安全检查、质量评估和自动迭代。核心是拆成 Planner、Script Writer、Storyboard、Asset Generator、 Composer、Evaluator、Revision Agent,并用 artifact store 和 memory 保持角色、场景、风格一致。

模块拆解

  • Input Analyzer:解析题材、受众、时长、画风、平台规格。
  • World/Character Bible:沉淀角色外貌、性格、关系、场景设定。
  • Plot Planner:生成起承转合、冲突、反转和节奏。
  • Storyboard Agent:拆镜头、景别、动作、对白和旁白。
  • Prompt Builder:生成图像、视频、TTS、音乐提示词。
  • Asset Generator:调用图像、视频、语音、字幕工具。
  • Composer:合成画面、字幕、配音、转场和封面。
  • Evaluator:检查剧情、角色一致性、画面质量、安全和平台规范。

编排流程

  • 场景输入 → 需求解析 → 风格/角色设定。
  • 剧情大纲 → 分集/分镜 → 台词和旁白。
  • 分镜提示词 → 素材生成 → 素材一致性检查。
  • 视频合成 → 自动评分 → 生成修改建议。
  • 低分片段局部重生成,高分片段锁定,直到达到阈值或触发人工审核。

关键工程点

状态管理要记录每个镜头的脚本、提示词、素材 URL、版本、评分和修改原因; 长期记忆保存角色 bible 和风格规范,短期记忆保存当前 episode 状态。 评估器要拆成文本质量、视觉一致性、音画同步、安全合规和平台规格。 失败恢复上,素材生成失败可重试或换模型;角色崩坏要回到提示词/参考图层;剧情问题回到大纲层修。

57. 做一个“查询天气”的对话 AI:顶层设计、端到端步骤、地理知识和天气 API 怎么处理?

天气 Agent 地理解析 API 对接
面试短答

天气对话 AI 可以拆成意图识别、槽位抽取、地理解析、天气 API 调用、结果解释和多轮补全。 用户说“明天上海会下雨吗”,系统要抽取地点、日期、天气维度,先用地理服务把城市映射到标准地区和经纬度, 再调用天气 API,最后按用户问题生成简洁答案。模型不能自己编坐标或天气,要由工具返回。

端到端步骤

  • 识别意图:天气查询、穿衣建议、出行建议。
  • 抽取槽位:地点、时间、天气类型、单位。
  • 缺参追问:地点或日期缺失时询问。
  • 地理编码:城市-国家-行政区-经纬度标准化。
  • 调用 API:当前天气、小时级、未来预报、空气质量。
  • 生成答案:附时间、地点、数据来源和不确定性。

地理知识处理

  • 用地理编码服务处理同名城市和别名。
  • 保留国家、省、市、经纬度、时区和语言。
  • 歧义地点要追问,例如“Springfield”。
  • 缓存热门城市映射,但定期更新。
  • 不要让模型自由生成经纬度作为事实。

58. 查询后继续推荐/下游服务联动时,如何让模型按顺序调用多个服务?服务多时怎么工程化?

服务编排 顺序调用 工程化
面试短答

多服务联动不要只靠模型自由发挥,应该用工作流或状态图定义顺序、依赖、失败处理和权限。 例如天气查询后推荐雨具、打车或周边服务,流程是天气 API -> 风险判断 -> 推荐服务 -> 库存/门店查询 -> 用户确认 -> 下单。 模型负责理解意图和生成解释,确定性编排负责调用顺序、参数传递和事务边界。

编排方式

  • 简单链路用工作流节点和条件分支。
  • 复杂链路用 LangGraph/状态机保存状态。
  • 工具统一注册 schema、权限、超时和重试策略。
  • 每步输出结构化 JSON,作为下一步输入。
  • 写操作前必须用户确认。

服务多时工程化

  • 服务目录:名称、能力、参数、返回、权限、SLA。
  • 路由器:按意图、领域、权限选择工具。
  • 编排层:状态、依赖、并发、补偿、回滚。
  • 观测层:trace、耗时、错误码、调用成本。
  • 评估层:工具选择准确率、任务成功率、人工接管率。

59. 设计“公司周边点奶茶”的 Agent:定位/门店查询/下单 API 如何串联?坐标被模型编错怎么办?

业务 Agent 定位 下单 可恢复处理
面试短答

这个 Agent 要按“定位 -> 门店 -> 菜单 -> 选择 -> 确认 -> 下单”串联。 位置必须来自用户授权、企业地址库或地图 API,不能让模型编坐标。 如果坐标不确定,要展示候选地址让用户确认;如果找店错误,要能回退到地理解析步骤, 重新定位或扩大范围。下单属于外部副作用,必须在提交前让用户确认商品、门店、价格和地址。

流程设计

  • 获取位置:公司地址库、用户选择、地图定位。
  • 门店查询:按品牌、距离、营业状态、配送范围过滤。
  • 菜单查询:规格、库存、价格、优惠、配送费。
  • 偏好匹配:口味、温度、糖度、预算、过敏源。
  • 确认下单:订单摘要、支付方式、收货信息。
  • 售后状态:订单查询、取消、异常反馈。

失败点与纠正

  • 坐标歧义:返回多个候选地址,要求用户确认。
  • 模型编造:所有坐标、价格、库存必须来自工具。
  • 门店不可配送:扩大范围、换门店、提示原因。
  • 库存变更:下单前重新校验菜单和价格。
  • API 失败:重试、降级、保留当前购物车状态。
  • 不确定性:明确说“不确定”,不要假装已定位。

60. 如何把包含图片和文字的 HTML 报告转换为内容保持不变的 Word 或 PDF?

文档转换 HTML Word/PDF
面试短答

HTML 转 PDF 更适合保持视觉一致性,可以用浏览器渲染引擎如 Playwright/Chromium 打印 PDF; HTML 转 Word 更关注可编辑性,可以用 Pandoc、python-docx 或服务端模板,但复杂 CSS 和浮动布局可能丢失。 如果要求有图有文且内容不变,关键是先固定资源路径、内联或打包图片、统一字体、分页规则和渲染尺寸,再做视觉回归检查。

PDF 路线

  • 用 Chromium 渲染 HTML,等待图片、字体、图表加载完成。
  • 设置 page size、margin、print CSS、分页和页眉页脚。
  • 适合交付归档、排版一致、不要求二次编辑的报告。

Word 路线

  • 结构化抽取标题、段落、表格、图片,再生成 docx。
  • 图片要下载或转 base64,保留尺寸、标题和引用关系。
  • 复杂 HTML 建议用模板化组件,不要直接转换任意 CSS。

61. AI 工具团队使用、项目瓶颈/复盘、模型选型、前沿跟踪与新工具判断怎么表达?

高频 项目复盘 AI 工具 前沿判断
面试短答

团队使用 AI 工具要讲清边界:适合代码解释、草稿生成、测试补全、文档总结和检索,不适合无审查直接提交。 项目复盘要从目标、架构、瓶颈、成本、失败案例、可复现性和监控指标讲。 跟进前沿要有信息源和筛选机制:看论文/官方文档/开源实现/真实 benchmark,再用小 PoC 判断是否解决实际问题。

项目表达

  • 用户量增长时先定位瓶颈:模型调用、检索、数据库、队列、上传解析或前端推流。
  • 模型选型看能力、成本、延迟、上下文、多模态、私有化和稳定性。
  • 失败复盘看需求是否真实、数据是否足够、链路是否可测、指标是否闭环。
  • 可复现性靠环境锁定、依赖清单、样例数据、启动脚本和回归测试。

前沿判断

  • 关注官方文档、论文、GitHub、技术博客、产品更新和真实用户反馈。
  • OpenClaw 这类 Agent 产品要看感知、规划、工具执行、恢复和观测能力。
  • 新工具先问:是否降低成本、提升成功率、改善可控性或缩短交付周期。
  • 工程师核心竞争力会转向问题定义、系统设计、验证能力和复杂工程落地。