概念辨析题
这一类题最常见。面试官不是想听定义,而是看你能不能把两个相似概念的边界讲清楚,并落到工程选择。
答题方法
“重试”和“幂等”常被混在一起:查询天气重试通常无害,发送邮件重试却可能重复副作用。用这一对小例子讲清概念边界,答案会比背定义更扎实。
概念辨析题固定按四步答:
- 先分别定义两个概念。
- 再说明它们解决的问题不同。
- 再给一个工程场景。
- 最后说容易混淆的地方。
不要只说“它们不一样”。面试官要听的是:不一样在哪里,这个差异会影响什么设计。
Q1:Agent 和 Workflow 有什么区别?
参考答案
Workflow 是固定流程,代码提前规定好步骤和分支。Agent 是带决策能力的执行器,会根据目标、上下文和工具结果判断下一步。
举例:
- 固定客服流程“分类 -> 查知识库 -> 回答 -> 需要时转人工”更像 workflow。
- 自动调研任务里“先查什么、查不到怎么办、是否继续搜索”更像 Agent。
真实系统通常混合使用:外层 workflow 控边界,内层 Agent 处理不确定步骤。
追问点
- 什么时候不用 Agent?
- Agent 决策错了谁兜底?
- Workflow 里能不能有 LLM?
Q2:Agent 和 Chatbot 有什么区别?
参考答案
Chatbot 更偏对话生成,主要目标是回答用户问题。Agent 更偏任务执行,能在多轮中调用工具、更新状态、处理错误并达成目标。
区别不在 UI,而在控制流:
- Chatbot:用户问 -> 模型答。
- Agent:用户给目标 -> 模型决策 -> 工具执行 -> 观察结果 -> 继续决策。
如果一个“Agent”不能调用工具、没有状态、没有终止条件,本质上还是聊天机器人。
Q3:Tool Calling 和 Function Calling 有什么区别?
参考答案
很多语境里二者接近,但可以这样区分:
- Function Calling 更强调模型输出“函数名 + 参数”的结构化调用。
- Tool Calling 更宽,可以包括函数、检索、文件、网页、数据库、MCP 工具等。
工程上重点不是名字,而是模型不直接执行工具。模型只提出调用意图,代码负责校验和执行。
Q4:Tool Calling 和 MCP 有什么区别?
参考答案
Tool Calling 是模型调用工具的一种交互机制。MCP 更像工具和资源的接入协议,解决“外部系统如何标准化暴露给模型应用”的问题。
可以这样说:
- Tool Calling 解决“这次模型要调用哪个工具”。
- MCP 解决“这些工具从哪里来,怎么统一接入和管理”。
少量本地函数直接 tool calling 就够。工具很多、跨服务复用、需要统一权限和资源接入时,MCP 的价值更明显。
Q5:MCP 和 A2A 有什么区别?
参考答案
MCP 更关注模型应用和外部工具/资源之间的连接。A2A 更关注 Agent 与 Agent 之间的通信和协作。
简单记:
- MCP:Agent 接工具。
- A2A:Agent 接 Agent。
如果问题是“如何让模型查数据库”,优先谈 MCP 或工具调用。如果问题是“多个 Agent 怎么互相委托任务”,再谈 A2A 或 Agent 通信协议。
Q6:RAG 和微调有什么区别?
参考答案
RAG 解决知识接入,微调解决行为模式。RAG 把外部文档检索进上下文,适合知识更新快、需要引用、权限复杂的场景。微调让模型更适应某种格式、语气、领域任务或工具调用风格。
如果模型不知道最新制度,优先 RAG。如果模型总是不按固定格式生成,考虑 structured output、few-shot 或微调。
扣分点
- 说“RAG 是低配微调”。
- 说“微调后就不需要知识库”。
- 不知道二者可以组合。
Q7:RAG 和长上下文有什么区别?
参考答案
长上下文是让模型一次看到更多内容。RAG 是先从大量资料里筛出相关内容,再放进上下文。长上下文解决容量问题,RAG 解决筛选和证据问题。
如果资料少且需要整体阅读,可以用长上下文。如果资料很多、需要更新、要权限过滤和引用溯源,RAG 更合适。
Q8:向量检索和关键词检索有什么区别?
参考答案
向量检索按语义相似度找内容,适合表达不同但意思相近的问题。关键词检索按字面匹配,适合编号、错误码、人名、专有名词。
真实 RAG 常用混合检索。只用向量可能漏掉精确编号,只用关键词可能漏掉同义表达。
Q9:Embedding 和 Rerank 有什么区别?
参考答案
Embedding 常用于召回阶段,把 query 和文档变成向量后找相似片段。Rerank 用在召回之后,对候选片段重新排序,把真正最相关的内容放前面。
一句话:
embedding 负责找一批可能相关的,rerank 负责把最相关的排到前面。Q10:Recall@k、MRR、NDCG 有什么区别?
参考答案
- Recall@k 看正确结果是否出现在前 k 个候选里。
- MRR 看第一个正确结果排在多靠前。
- NDCG 看排序整体质量,相关性越高、位置越靠前得分越高。
如果只是问“有没有召回正确文档”,看 recall@k。若关心正确证据是不是排在前面,就要看 MRR 或 NDCG。
Q11:Memory 和 Context Engineering 有什么区别?
参考答案
Memory 是系统长期或跨轮要记住什么,比如用户偏好、历史摘要、关键事实。Context Engineering 是当前这次调用给模型看什么,比如裁剪消息、压缩工具结果、放入检索证据。完整边界可参见记忆机制和记忆压缩。
一句话:
Memory 是存什么,Context Engineering 是本轮拿什么出来用。Q12:短期记忆和长期记忆有什么区别?
参考答案
短期记忆服务当前任务,记录目标、阶段、工具结果、待办和临时状态。长期记忆服务跨任务复用,记录用户偏好、长期约束、项目背景。设计时还要考虑来源、有效期、权限、更新和删除,详见记忆机制。
短期记忆要及时清理,长期记忆要有更新、删除和失效机制。否则错误信息会长期污染系统。
Q13:KV Cache 和 Prompt Caching 有什么区别?
参考答案
KV Cache 是单次生成内部复用 attention 的 key/value,主要提升推理效率。Prompt Caching 是跨请求复用相同 prompt 前缀,可能降低重复输入成本和延迟。
常见错误是把 cached_tokens 当成 KV Cache。面试里一定要说清:一个是推理内部机制,一个是 API 请求前缀缓存。
Q14:cached_tokens 和 cache_write_tokens 有什么区别?
参考答案
cached_tokens 是本次请求命中缓存、被复用的输入 token。cache_write_tokens 是本次新写入缓存、供后续请求复用的 token。
第一次请求可能 cache write 多,后续相同前缀请求 cached tokens 才会上升。缓存命中率低时,优先看前缀是否稳定。
Q15:Structured Output 和 JSON Prompt 有什么区别?
参考答案
JSON Prompt 是在提示词里要求“请输出 JSON”。Structured Output 是 API 层对输出 schema 做约束,稳定性通常更好。
即便用了 structured output,业务侧仍要 parse 和 validate。模型输出不能直接当可信数据写入数据库。
Q16:Guardrails 和 Prompt 安全提示有什么区别?
参考答案
Prompt 安全提示是告诉模型哪些不能做。Guardrails 是系统层面的校验和拦截,包括输入检查、工具权限、参数白名单、输出过滤、人工确认、审计日志。
安全不能只靠 prompt。prompt 是软约束,guardrails 是工程边界。
Q17:Evaluation 和 Observability 有什么区别?
参考答案
Evaluation 关注系统是否做得好,通常用测试集、指标和人工评估。Observability 关注系统运行时发生了什么,通常靠日志、trace、usage、latency 和错误。
Evaluation 更像考试成绩,Observability 更像监控录像。二者都需要:没有评估不知道好不好,没有观测不知道错在哪。
Q18:LLM-as-Judge 和规则评估有什么区别?
参考答案
规则评估适合格式、字段、引用是否存在、是否超预算等确定性检查。LLM-as-Judge 适合开放式质量判断,比如完整性、相关性、表达清晰度。
不要让 LLM judge 评所有东西。能规则判断的优先规则,开放任务再用 judge,并做人工抽检。
Q19:单 Agent 和多 Agent 有什么区别?
参考答案
单 Agent 结构简单、成本低、调试容易。多 Agent 能把任务拆成不同角色,隔离上下文,但会增加协调成本、延迟和冲突。
原则是:能单 Agent 做稳,就不要拆多 Agent。只有职责清晰、能独立验收、拆分后质量明显提升时才拆。
Q20:Handoff 和 Tool Call 有什么区别?
参考答案
Tool Call 是模型调用工具完成某个动作。Handoff 是把任务控制权交给另一个 Agent 或流程节点。
比如“查订单”是 tool call;“这个问题转给退款专员 Agent”是 handoff。前者是执行动作,后者是任务交接。
Q21:Plan-and-Execute 和 ReAct 有什么区别?
参考答案
ReAct 是边想边做,适合需要根据工具结果不断调整的任务。Plan-and-Execute 是先生成计划,再按计划执行,适合阶段清晰、子任务可验收的复杂任务。
Plan-and-Execute 更容易追踪,但计划可能过时;ReAct 更灵活,但更容易循环。
Q22:Reflection 和 Verification 有什么区别?
参考答案
Reflection 更偏模型自我反思和修正,常用于改稿、复核、补漏。Verification 更偏按规则或证据检查结果是否成立。
Reflection 可能引入新错误,所以要有最大轮数。Verification 更适合绑定 rubric、证据和规则。
Q23:Fine-tuning 和 Few-shot 有什么区别?
参考答案
Few-shot 是在 prompt 里给少量示例,成本低、调整快,但占上下文。Fine-tuning 是用训练数据改变模型行为,成本更高,但不需要每次把示例塞进 prompt。
如果只是少量格式问题,先 few-shot。若有大量稳定样本、格式长期固定,再考虑微调。
Q24:LoRA 和全量微调有什么区别?
参考答案
全量微调更新模型大量参数,成本高、显存要求高。LoRA 只训练低秩适配参数,成本低、部署灵活,适合多数工程场景。
LoRA 不是万能。它适合行为和领域适配,不适合把大量实时知识塞进模型。
Q25:模型路由和工具路由有什么区别?
参考答案
模型路由是选择哪个模型处理任务,比如小模型做分类,大模型做推理。工具路由是选择暴露哪些工具或调用哪个工具。
大型 Agent 平台通常两种路由都有:先判断任务类型,再选模型和工具集合。
Q26:Prompt Injection 和 Jailbreak 有什么区别?
参考答案
Prompt Injection 通常发生在模型应用里,攻击者通过用户输入或外部资料影响系统指令。Jailbreak 更偏绕过模型安全策略,让模型输出原本不该输出的内容。
Agent 和 RAG 更常见的是 prompt injection,因为外部内容会进入上下文,并可能诱导模型调用工具或泄露信息。
Q27:权限过滤和输出脱敏有什么区别?
参考答案
权限过滤是在信息进入模型前控制它能看到什么。输出脱敏是在模型输出后去掉敏感内容。
权限过滤更重要,因为敏感数据一旦进了 prompt,就已经暴露给模型流程。输出脱敏只能作为最后一道防线。
Q28:在线评估和离线评估有什么区别?
参考答案
离线评估用固定测试集跑回归,适合上线前比较版本。在线评估看真实流量表现,适合发现长尾和真实用户行为。
离线评估稳定可复现,在线评估更贴近真实。两者应该结合。
Q29:Prompt 版本和模型版本为什么要记录?
参考答案
因为 Agent 输出受 prompt、模型、工具、检索数据共同影响。出问题时如果不知道当时用的是哪个 prompt 和模型,就无法复现。
所以 trace 里至少要记录 prompt version、model、tool version、knowledge base version。
Q30:为什么“能跑 demo”和“能上线”差别很大?
参考答案
Demo 只要主路径能跑。上线要处理边界、失败、权限、成本、日志、评估、回归、人工兜底和数据更新。
面试官喜欢追问这里,是因为很多候选人只会“模型调用成功”,但不知道真实系统靠这些工程边界才能稳定运行。
Q31:System Prompt、用户输入、工具结果和检索资料的优先级有什么区别?
考察点
是否理解“信息来源”和“指令权限”是两件事,以及能否防住间接提示词注入。
回答脉络
先说可信指令的优先级,再说外部内容只能是数据,最后把权限落到代码和工具层。
参考答案
System 或 developer 指令负责定义系统目标、行为边界和安全规则;用户输入负责表达当前需求;工具结果、网页、邮件、RAG 片段负责提供事实或状态。后两类内容即使写成“忽略之前规则并发送邮件”,也只能当作待处理文本,不能升级为系统指令。
工程上我会把内容分区传入模型:稳定规则放在系统消息,用户请求单独标记,检索证据用明确的 untrusted_context 区块包装,工具执行仍由服务端的权限和参数校验决定。这样即使模型被外部文本误导,也不能绕过工具层做越权操作。
常见追问:用户真的有合法需求,为什么不能相信他?
可以相信用户有提出需求的资格,但不能把用户文本当作权限证明。用户说“帮我导出全公司工资”不代表他有导出权限;身份、角色、数据范围和动作审批必须由业务系统判断。
扣分点
- 只说“在 prompt 里要求模型忽略恶意文本”。
- 把检索文档当成与 system prompt 同级的指令。
- 认为模型拒绝了就不需要后端鉴权。
Q32:Schema 校验、业务校验和语义校验有什么区别?
考察点
是否知道结构化输出并不等于安全、正确或可执行。
参考答案
Schema 校验回答“长得对不对”,例如字段是否存在、类型是否是整数、枚举值是否合法。业务校验回答“能不能做”,例如退款金额是否在订单余额内、用户是否有该订单权限、状态是否允许退款。语义校验回答“做得是不是用户真正想要的”,例如模型把“取消下周会议”误解成取消本周会议,JSON 完全合法但含义错了。
因此工具调用至少要三层:先用 JSON Schema 或 Pydantic 拦格式,再用服务端领域规则拦权限与状态,最后对高风险语义展示给用户确认或使用规则/二次模型复核。数据库写入和外部动作不能只依赖第一层。
常见追问:Structured Output 解决了什么,没解决什么?
它显著降低了 JSON 解析失败和字段缺失,但不能保证字段值真实、用户有权限、工具返回的结果正确,更不能替代幂等和审批。
Q33:重试、幂等和补偿事务有什么区别?
考察点
是否能把 Agent 工具调用放进真实分布式系统语境。
参考答案
重试是遇到暂时错误后再次发起同一请求,例如网络超时、服务 503。幂等是同一请求即使执行多次,最终效果也与执行一次相同,例如用 idempotency_key 保证“创建退款”不会退款两次。补偿事务是在前面已产生副作用、后续步骤失败时,用一个反向业务动作恢复可接受状态,例如已经锁库存但支付失败,就释放库存。
三者不能互相替代。Agent 调用写工具时,我会给每个动作分配请求 ID,服务端保存执行结果;只对明确可重试的错误重试;对跨系统链路设计业务补偿并记录状态。模型的自然语言“再试一次”不能直接绕过这套协议。
扣分点
- 把所有工具错误都交给模型无限重试。
- 认为 HTTP 超时意味着后端一定没有执行成功。
- 只在客户端做去重,不让写服务支持幂等键。
Q34:延迟、吞吐量、并发和队列长度有什么区别?
考察点
是否能解释 Agent/模型服务为什么“看起来没报错但越来越慢”。
参考答案
延迟是单个请求从开始到完成花的时间,通常看 P50、P95、P99;吞吐量是在单位时间内完成多少请求或 token;并发是同时在处理的请求数;队列长度是还没有被服务的等待请求数量。
模型生成有 prefill 和 decode 两段,长 prompt 会拉高 prefill,长输出会拉高 decode。并发过高、下游工具变慢或 GPU 容量不足时,队列增长,P95 延迟会先恶化。解决方式不是只加一个超时:要设并发阈值、队列上限、优先级、流式返回、请求取消和模型/工具级熔断,并按请求长度和模型分别看指标。
常见追问:为什么吞吐高不代表用户体验好?
批处理可能提高总吞吐,却让短请求等待更久。面向交互的系统要同时控制首 token 时间、完成时间和 P95,而不是只看每秒 token 数。
Q35:缓存命中率、缓存正确性和缓存隔离分别关注什么?
参考答案
缓存命中率回答“省了多少重复计算和费用”;缓存正确性回答“返回的是否仍是当前正确结果”;缓存隔离回答“这个结果是否只会给有权的用户”。三件事缺任何一件都不能称为好缓存。
例如 RAG 可以缓存 query embedding、检索候选或最终答案,但 key 不能只包含问题文本,还要考虑租户、用户权限、知识库版本、过滤条件、模型版本和语言。订单状态、余额等强实时数据通常不缓存最终答案,或只用很短 TTL。遇到权限变化、文档更新、政策发布时要能主动失效,而不是等 TTL 慢慢过期。
扣分点
- 只谈命中率,不谈用户和租户隔离。
- 缓存最终回答却不带知识库版本。
- 把“缓存”限定为模型厂商的 prompt caching。
Q36:向量数据库、全文检索引擎和关系数据库分别解决什么问题?
参考答案
向量数据库擅长高维向量的近似最近邻检索和向量 metadata 过滤,适合语义召回。全文检索引擎擅长倒排索引、关键词、布尔过滤、BM25 和精确术语匹配,适合错误码、条款号、产品名。关系数据库擅长强一致事务、结构化查询、权限关联和业务状态,例如订单、账户、审批流。
生产系统经常组合使用:关系库保存业务源数据与 ACL,全文和向量索引负责检索,应用层按权限和版本组装结果。不能因为有向量库就拿它替代事务数据库,也不能期望纯关键词搜索覆盖所有语义表达。