定位:面向 AI 智能体 / 大模型应用开发工程师 、AI 应用开发工程师 、Agent 开发工程师 。
风格:偏 应用落地、架构设计、工程治理、项目实战,不偏纯算法研究或预训练细节。
文档特点:
- 每道题都标注了重要度 和难度,方便区分必刷内容、常考内容和进阶内容。
- 相当一部分题目来自大厂真实面经和实际高频追问场景,更贴近真实面试。
- 整体表达坚持语言专业但易读,尽量避免空话、套话和纯概念堆砌。
- 各个二级标题按主题分类,结构清晰,便于按模块系统复习。
重要度标记说明:
必刷:大概率会被问到,答不好会直接暴露短板。高频:面试中很常见,通常是主问题或高频追问。中频:更偏工程设计、项目深挖和落地细节。低频:加分题、延伸题、岗位深挖题。
难度标记说明:
基础:偏概念主干和标准答法,适合第一轮打底。中等:需要结合工程理解、分层表达或一定项目经验。较难:更偏系统设计、复杂治理、协议细节或高级架构取舍。
当前共 143 题,按 14 个主题模块组织,题目编号全文连续,便于定位和引用。
每道题都配有参考答案与"面试官可能追问" ,答案文档位于 docs/questions/ 目录(每个主题一个文件),可在线浏览:
- 在线阅读:https://lyh-docs.github.io/ai-interview/
- 本地运行:
pnpm install && pnpm docs:dev,构建产物验证:pnpm docs:build
一、大模型基础与 API 应用
- 【必刷 · 基础】 什么是 Token?为什么大模型按 Token 计费?中英文的 Token 效率差异有多大?
- 【必刷 · 基础】 temperature 和 top_p 分别控制什么?什么场景该调高、什么场景该调低?两个一起调会怎样?
- 【高频 · 基础】 什么是上下文窗口(Context Window)?输入超长会发生什么?工程上怎么处理?
- 【高频 · 中等】 KV Cache 的作用是什么?为什么它是推理显存和延迟的关键瓶颈之一?
- 【必刷 · 基础】 什么是幻觉(Hallucination)?产生幻觉的原因有哪些?工程上有哪些缓解手段?
- 【高频 · 基础】 流式输出(SSE / Streaming)是怎么实现的?服务端和前端各自要处理什么问题?
- 【高频 · 中等】 如何让模型稳定输出符合 Schema 的 JSON?说说 JSON Mode、Function Calling 和约束解码的区别。
- 【中频 · 基础】 system / user / assistant 三种消息角色分别怎么用?system prompt 的编写有哪些最佳实践?
- 【高频 · 基础】 开源模型和闭源 API 怎么选型?从效果、成本、数据安全、可控性几个维度对比。
- 【中频 · 中等】 max_tokens、stop、presence_penalty、frequency_penalty 这些参数分别在什么场景下使用?
- 【中频 · 较难】 Embedding 模型和生成模型的 Tokenizer 不一致,会带来什么工程问题?
- 【中频 · 中等】 同一份 Prompt 换模型后表现差异很大,迁移适配和回归验证怎么做?
二、Prompt Engineering 提示词工程
- 【必刷 · 基础】 一条高质量 Prompt 的基本结构是什么?角色、任务、约束、示例、输出格式各起什么作用?
- 【必刷 · 基础】 什么是 Few-shot?示例应该怎么选、怎么排?示例质量差会带来什么负面效应?
- 【必刷 · 基础】 什么是思维链(CoT)?它在什么任务上有效?"Let's think step by step" 为什么有效?
- 【高频 · 中等】 CoT、Self-Consistency、ToT(思维树)分别解决什么问题?各自的代价是什么?
- 【高频 · 中等】 如何写好一个 system prompt?以智能客服助手为例说说你的设计思路。
- 【中频 · 中等】 Prompt 注入(Prompt Injection)是什么?举几个攻击例子和对应的防御手段。
- 【高频 · 中等】 线上 Prompt 是怎么管理的?需要做版本管理、评审和 A/B 测试吗?你们怎么落地?
- 【中频 · 较难】 如何系统地评估一条 Prompt 的好坏?说说你的评估维度、评估集和流程。
- 【低频 · 较难】 了解自动提示词优化吗(APE、DSPy 等)?思路是什么?实际项目里用过吗?
- 【中频 · 基础】 "角色扮演"为什么能提升效果?哪些场景下角色设定会失效?
三、RAG 检索增强生成
- 【必刷 · 基础】 什么是 RAG?它和微调分别在什么场景下使用?两者能不能结合?
- 【必刷 · 基础】 画一下标准 RAG 系统的完整链路,离线(索引)和在线(问答)各包含哪些环节?
- 【必刷 · 基础】 文档切分(Chunking)有哪些策略?chunk 大小怎么定?为什么不能简单一刀切 512?
- 【高频 · 中等】 表格、图片、公式这类非纯文本内容,在 RAG 里怎么解析和检索?
- 【必刷 · 中等】 向量检索、BM25、混合检索(Hybrid Search)分别适用什么场景?为什么召回之后还要 Rerank?
- 【高频 · 中等】 Embedding 模型怎么选型?怎么评估一个 Embedding 模型在你们业务上的效果?
- 【高频 · 中等】 向量数据库怎么选?Milvus、FAISS、Qdrant、pgvector 各自的特点和适用规模?
- 【必刷 · 中等】 用户 Query 很口语化甚至有错别字,检索前要做哪些处理?(Query 改写、扩展、HyDE 等)
- 【必刷 · 较难】 RAG 效果不好,你的排查思路是什么?说说你的分层诊断方法(先查检索还是先查生成)。
- 【中频 · 较难】 什么是父块检索(Parent Chunk / Small-to-Big)?解决什么问题?
- 【中频 · 较难】 知识库规模到千万级文档,索引和检索架构上要怎么演进?
- 【低频 · 较难】 了解 GraphRAG 吗?和传统向量 RAG 相比优缺点是什么?什么场景值得上?
- 【高频 · 中等】 多轮对话下的 RAG 怎么做?Query 里的指代("它""第二个方案")怎么解析?
- 【必刷 · 中等】 RAG 的效果怎么评估?召回率、忠实度、答案相关性分别怎么测?
- 【中频 · 较难】 RAG 回答如何给出可信的引用来源?怎么保证答案有据可依、可追溯?
- 【低频 · 较难】 Agentic RAG 是什么?和固定管道式 RAG 的本质区别在哪里?
四、Agent 智能体设计
- 【必刷 · 基础】 什么是 Agent?它和普通 Chatbot、固定工作流(Workflow)的本质区别是什么?
- 【必刷 · 基础】 Agent 的核心组件有哪些?(规划、记忆、工具、反思)分别对应哪些实现?
- 【必刷 · 基础】 讲一下 ReAct 模式。它和纯 CoT 的区别是什么?为什么"边想边做"更可靠?
- 【高频 · 中等】 ReAct 和 Plan-and-Execute 各自的优缺点?什么场景选哪个?
- 【高频 · 中等】 一个生产级 Agent 的主循环(Agent Loop)你会怎么设计?包含哪些状态、出口和护栏?
- 【必刷 · 中等】 Agent 陷入死循环或反复调用失败工具,怎么治理?说说你用过的熔断和干预手段。
- 【高频 · 中等】 Agent 的任务拆解(Planning)怎么做?拆解错了如何自纠?子任务间依赖怎么表达?
- 【中频 · 较难】 反思(Reflection / Self-Critique)机制怎么设计?会不会显著增加成本?值不值?
- 【中频 · 中等】 Agent 的记忆系统怎么设计?和 RAG 的知识库有什么本质区别?
- 【必刷 · 中等】 如何评估一个 Agent 的好坏?轨迹评估和结果评估分别怎么做?
- 【高频 · 较难】 什么任务适合做成 Agent,什么任务用固定 Workflow 更好?说说你的判断标准。
- 【中频 · 较难】 Agent 的确定性不足怎么解决?说说你在可控性与自主性之间做过的取舍。
- 【中频 · 较难】 如何设计 Agent 的中断、接管(HITL 人机协同)机制?暂停后怎么恢复?
- 【中频 · 较难】 长任务 Agent(运行几十分钟、上百步)的稳定性怎么保障?中间态怎么持久化?
五、Function Calling 与 MCP 协议
- 【必刷 · 基础】 Function Calling 的原理是什么?模型是真的"执行"了函数吗?整个调用闭环是谁在驱动?
- 【必刷 · 基础】 一个工具的描述(name / description / parameters)应该怎么写才能让模型调得准、调得稳?
- 【高频 · 中等】 工具数量太多(几十上百个)会出什么问题?怎么解决?(工具检索、分组路由、动态注入)
- 【高频 · 中等】 模型生成的工具参数不合法怎么办?参数校验和错误回传重试的策略怎么设计?
- 【中频 · 中等】 并行工具调用(Parallel Tool Calls)怎么实现?执行顺序和结果聚合要注意什么?
- 【必刷 · 中等】 MCP(Model Context Protocol)是什么?解决什么问题?和传统 Function Calling 插件方案是什么关系?
- 【高频 · 中等】 MCP 的 Host、Client、Server 三种角色分别是什么?一个典型连接的建立流程是怎样的?
- 【中频 · 较难】 如何开发一个 MCP Server?Resources、Tools、Prompts 三类原语分别用在什么时候?
- 【中频 · 中等】 工具调用失败、超时、返回脏数据,分别怎么处理?哪些错误应该回传给模型自纠?
- 【低频 · 较难】 MCP 的安全风险有哪些?工具投毒(Tool Poisoning)、混淆代理问题(Confused Deputy)了解吗?
- 【低频 · 较难】 意图识别路由(先分类再给工具)和模型自主选工具,两种方式怎么选?
六、多智能体系统 Multi-Agent
- 【高频 · 中等】 什么场景真的需要多 Agent?单 Agent + 好工具能不能解决?说说你的判断标准。
- 【必刷 · 中等】 多 Agent 有哪些常见协作模式?(Supervisor、Pipeline、辩论、分层)各自适合什么任务?
- 【高频 · 中等】 Agent 之间怎么通信?自然语言、结构化消息、共享状态各有什么优缺点?
- 【中频 · 较难】 多 Agent 系统的成本和延迟怎么控制?什么情况下"多 Agent"反而是负优化?
- 【中频 · 较难】 Agent 之间意见冲突或任务死锁怎么处理?需要引入仲裁或投票机制吗?
- 【中频 · 中等】 Handoff(交接)机制怎么设计?交接时上下文怎么传递、怎么裁剪才不丢关键信息?
- 【低频 · 较难】 介绍一个你了解的多 Agent 框架或案例(AutoGen、MetaGPT、CrewAI 等),说说它的设计亮点和局限。
- 【低频 · 较难】 多 Agent 系统怎么评估?单个 Agent 好测,整体涌现出来的行为怎么测?
- 【低频 · 较难】 群体智能(Swarm)和层级式(Hierarchical)多 Agent 架构的区别?各自适合什么规模?
七、记忆与上下文管理
- 【必刷 · 基础】 短期记忆和长期记忆分别怎么实现?各自存什么内容、用什么存储?
- 【必刷 · 中等】 对话历史超过上下文窗口怎么办?截断、摘要、检索式记忆各有什么问题?
- 【高频 · 中等】 什么是 Lost in the Middle?它对 Prompt 里内容的排布有什么实践指导?
- 【高频 · 中等】 长期记忆怎么设计?什么时候写入、怎么去重更新、怎么遗忘过时信息?
- 【中频 · 较难】 用户画像类记忆和事件类记忆如何区分存储和召回?混合召回怎么融合?
- 【中频 · 中等】 上下文压缩有哪些做法?压缩会不会丢关键信息?怎么权衡压缩率和信息保真度?
- 【中频 · 较难】 多轮对话的状态管理用什么方案?纯消息列表够用吗?什么时候要引入显式状态机?
- 【低频 · 较难】 跨会话记忆怎么做(用户隔天回来还能"记得")?隐私合规上有什么要求?
- 【低频 · 较难】 记忆冲突怎么消解?用户先说喜欢 A、后说喜欢 B,系统应该存什么?
八、开发框架与工程实践
- 【高频 · 基础】 LangChain 的核心抽象有哪些?(Chain、Agent、Tool、Retriever 等)各解决什么问题?
- 【高频 · 中等】 LangChain 的优缺点?为什么很多团队用着用着就"去 LangChain 化"了?
- 【必刷 · 中等】 LangGraph 是什么?相比 LangChain 的 AgentExecutor 解决了什么问题?
- 【中频 · 中等】 LangGraph 里 State、Node、Edge、Checkpoint 分别是什么?怎么用它实现人机协同和断点恢复?
- 【中频 · 基础】 LlamaIndex 和 LangChain 的定位差异?数据密集型应用更该选哪个?
- 【中频 · 中等】 Dify、Coze 这类低代码平台适合什么场景?能力上限在哪里?
- 【高频 · 中等】 自研框架 vs 开源框架怎么选?你们为什么选(或为什么不选)LangChain / LangGraph?
- 【中频 · 中等】 LLM 应用的可观测性怎么做?LangSmith、Langfuse、OpenTelemetry 的实践了解吗?
- 【低频 · 较难】 LLM 应用的事务性和幂等怎么保证?工具执行到一半服务挂了怎么办?
九、模型微调与推理优化
- 【必刷 · 中等】 什么情况该微调、什么情况用 RAG、什么情况改 Prompt 就够了?给一个决策框架。
- 【必刷 · 中等】 LoRA 的原理是什么?秩 r 和 alpha 怎么选?QLoRA 又优化了什么?
- 【高频 · 中等】 全参微调、LoRA、Prompt Tuning 在成本、效果、部署上的差异?
- 【高频 · 中等】 SFT 训练数据怎么构造?需要多少条?数据质量和数量哪个更重要?
- 【中频 · 较难】 SFT、RLHF、DPO 的关系和区别?分别解决什么问题?业务侧一般用到哪一层?
- 【高频 · 较难】 微调后模型通用能力下降(灾难性遗忘)怎么办?训练侧和配比上有什么手段?
- 【中频 · 中等】 微调效果怎么评估?只看训练 loss 下降有意义吗?怎么搭评测集?
- 【中频 · 较难】 数据蒸馏是什么?怎么用强模型构造小模型可用的训练数据?怎么控质量?
- 【高频 · 基础】 量化(INT8 / INT4、GPTQ、AWQ)对效果和推理性能分别有什么影响?
- 【中频 · 中等】 vLLM 的 PagedAttention 是什么?为什么能大幅提升吞吐?Continuous Batching 呢?
- 【低频 · 较难】 7B 模型推理需要多少显存?给一个估算方法(权重 + KV Cache + 激活值)。
- 【低频 · 较难】 投机解码(Speculative Decoding)的原理和适用条件?
十、评估与质量保障
- 【必刷 · 中等】 LLM 应用的评估体系怎么搭?离线评估和在线评估各测什么、怎么闭环?
- 【必刷 · 中等】 LLM as Judge 是什么?有哪些坑?(位置偏差、长度偏差、自我偏好)怎么缓解?
- 【高频 · 中等】 怎么构建评估集(Eval Set)?业务迭代后评估集怎么跟着演化和去污?
- 【中频 · 中等】 了解 RAGAS 吗?忠实度、答案相关性、上下文精确率 / 召回率分别怎么算?
- 【高频 · 中等】 线上生成内容没有标准答案,质量怎么评估?人工抽检和模型评估怎么配比?
- 【中频 · 中等】 Prompt 或模型升级后怎么做回归测试?怎么防止"改好一处、改坏三处"?
- 【中频 · 较难】 A/B 测试在 LLM 应用里怎么做?核心指标怎么定?怎么隔离网络效应?
- 【必刷 · 中等】 一个 Bad Case 进来,你的分析和归因流程是什么?怎么判断该改检索、改 Prompt 还是改模型?
十一、安全与合规治理
- 【必刷 · 基础】 Prompt 注入和越狱(Jailbreak)的区别?分别怎么防?
- 【高频 · 中等】 间接 Prompt 注入(文档、网页里藏指令)是什么?RAG 和 Agent 场景下怎么防?
- 【高频 · 中等】 Agent 的权限怎么管控?说说最小权限原则在工具设计和执行层怎么落地。
- 【中频 · 中等】 用户输入和企业数据怎么脱敏?调用第三方模型 API 的合规问题怎么处理?
- 【中频 · 中等】 生成内容的安全审核怎么做?多级审核的延迟和成本怎么权衡?
- 【低频 · 较难】 Agent 自动执行高危操作(发邮件、改数据、付款)的风险控制怎么设计?
- 【中频 · 中等】 幻觉的系统化治理怎么做?从检索增强、生成约束到事后校验分层说说。
- 【低频 · 较难】 审计和追溯怎么做?出问题后如何完整回放当时的 Prompt、上下文和工具调用链?
十二、工程化与部署运维
- 【必刷 · 中等】 画一个高并发 LLM 应用的架构:网关、限流、队列、模型服务、缓存分别放在哪?怎么扩容?
- 【高频 · 中等】 LLM API 的限流、重试、降级策略怎么设计?指数退避和抖动了解吗?
- 【高频 · 中等】 怎么降低 Token 成本?说说精确缓存 / 语义缓存、Prompt 压缩、小模型路由等手段。
- 【中频 · 中等】 大模型的响应延迟怎么优化?首 Token 延迟(TTFT)和整体吞吐分别怎么压?
- 【中频 · 中等】 私有化部署一个开源模型,从选型、量化、压测到上线要做哪些事?
- 【中频 · 较难】 统一接入多家模型的模型网关怎么设计?路由、故障转移、配额、密钥管理怎么做?
- 【中频 · 中等】 LLM 应用的监控告警看哪些指标?(延迟、错误率、Token 用量、拒绝率、人工接管率等)
- 【中频 · 较难】 灰度发布和新模型上线流程怎么做?怎么快速发现"新模型反而变差了"?
- 【低频 · 较难】 长时间运行的 Agent 任务怎么做持久化和断点恢复?
- 【低频 · 中等】 Serverless GPU 和常驻服务怎么选?冷启动问题怎么缓解?
十三、项目实战与场景深挖
- 【必刷 · 中等】 详细介绍一个你做过的 LLM / Agent 项目:业务背景、整体架构、你的贡献、上线效果数据。
- 【必刷 · 较难】 项目深挖必问:这个项目技术上最难的三个点是什么?分别怎么解决的?
- 【高频 · 中等】 如果重新做这个项目,你会改进哪些设计?为什么当时没这么做?
- 【高频 · 中等】 智能客服场景:怎么平衡"解决问题"和"转人工"?拒答和兜底策略怎么设计?
- 【中频 · 中等】 企业知识库场景:文档更新频繁怎么办?多部门权限隔离怎么做?
- 【中频 · 较难】 数据分析 Agent 场景:怎么让模型可靠地生成 SQL?生成错了怎么兜底和自纠?
- 【中频 · 较难】 代码助手场景:补全、问答、重构任务的技术方案有什么不同?仓库级上下文怎么给?
- 【高频 · 中等】 你的项目上线后效果怎么样?怎么证明收益是 LLM 方案带来的而不是其他因素?
十四、系统设计题
- 【必刷 · 较难】 设计一个企业级知识库问答系统(RAG),从文档接入、解析、索引到生成、引用的完整方案。
- 【高频 · 较难】 设计一个能自主完成某复杂任务(如行程规划、周报生成)的 Agent 系统,说明控制流和护栏。
- 【中频 · 较难】 设计一个支持 10 万 DAU 的智能客服系统,包含人工协同和会话兜底。
- 【中频 · 较难】 设计一个多租户的 LLM 网关平台:计费、限流、路由、审计怎么做?
- 【低频 · 较难】 设计一个 AI 搜索引擎:查询理解、多路检索、生成、引用、去重的完整链路。
- 【低频 · 较难】 设计一个代码生成 Agent:仓库级上下文理解、代码库检索、安全执行沙箱怎么做?
- 【低频 · 较难】 设计一套 LLM 应用的全链路评估与监控平台:数据采集、指标体系、告警、回归。
附录:推荐刷题路线
- 第一轮 · 打底(1~2 周) :刷完所有
基础难度的必刷、高频题,做到主干概念张口就来。重点是第一、二、三、四章。 - 第二轮 · 深挖(2~3 周) :按模块刷
中等题务求能结合自己的项目展开。重点回答"怎么做、为什么这么做、有什么坑"。 - 第三轮 · 冲刺(1 周) :
较难题 + 十四章系统设计题,掐时间白板演练:先给框架、再分层展开、主动 trade-off。 - 项目深挖准备:围绕第十三章,把自己项目的一句话版本、三分钟版本、十分钟版本各准备一版,并提前想好至少三个"最难的技术点"的故事。
- 面试前 24 小时 :只过
必刷标记的题目和自己的项目材料,不碰新题。