04-面试题库
我见过太多这样的场景:候选人项目做得不差,简历上写着 Agent、RAG、微调、评测一套齐活,可一到面试,三分钟就“掉线”。问他 Self-Attention 为什么贵,他说“因为要算很多矩阵”;问他为什么项目里用 RAG 不直接微调,他回答“业界都这么做”。你会发现,很多人不是不会,而是脑子里有零件,嘴里却拼不成机器。面试从来不是知识点抽查,它本质上是在判断:你能不能把复杂问题讲成一个可信的工程决策。
我最近在整理 AgentInterview 的“面试题库”时,越来越强烈地感受到一件事:真正有价值的题库,不是拿来背答案的,而是帮你搭起“表达骨架”的。尤其是 AI 岗位,概念更新太快,今天问 RAG,明天问 Agent,后天就开始聊多模态和工作流框架。你不可能靠死记硬背通关,但你可以靠结构化表达建立稳定输出。
一份好的题库,不是让你刷题,而是让你学会“组织答案”
很多人准备 AI 面试的方式很像临时抱佛脚:把网上搜到的高频题打印出来,一题一题背,背到最后最熟的是“标准答案”,最陌生的是“自己的理解”。这也是为什么一旦面试官追问两层,回答就开始发飘。
我更推荐把题库当成“表达训练集”来用。每道题至少拆成四层:
- 这个问题在考什么概念;
- 它对应什么工程取舍;
- 如果放到真实项目里,会遇到什么限制;
- 我自己的经验能不能接上这道题。
比如面试官问:Transformer 的 Self-Attention 复杂度是多少?很多人张口就是 O(n²)。这不算错,但不够。更完整的回答应该是:注意力核心开销来自 Q 和 K 的两两相关性计算,严格一点写是 O(n²·d)。如果序列长度拉高,真正吃紧的不只是算力,还有显存与 IO,所以后来才有 FlashAttention、Sparse Attention、Linear Attention 这些优化方向。前者优化访存,后两者优化计算路径。你看,这样一讲,概念、推导、工程痛点、优化思路就串起来了。
这里我常用一个方法,叫 “四步答题法:定义—原理—权衡—落地”。以后你刷题时,可以照这个模板开口:
- 先给一句准确定义
- 再解释核心原理
- 再说清楚优缺点和边界
- 最后接到项目实践
金句:面试官真正想听的,不是你记住了什么,而是你如何把知识变成判断。
拿 LayerNorm 和 BatchNorm 举个例子。很多候选人会背表格:一个按 batch 归一化,一个按特征维度归一化;一个依赖 batch size,一个不依赖。问题是,这种回答停留在教材层面。工程上为什么 Transformer 普遍选 LayerNorm?因为序列任务里 batch 波动大、长度不一致,而且推理时不希望依赖训练阶段的统计量。换句话说,LayerNorm 更适合语言模型这种动态、长序列、在线推理的环境。只要你能把“为什么”讲清楚,答案的质感就完全不一样。
基础题怎么答,决定了你能不能进入下一轮
不少人轻视基础题,觉得这些题“太八股”。但我接触过不少面试官,基础题往往不是为了卡你,而是为了判断你后面的问题值不值得继续深挖。你连 LLaMA 的几个关键改动都说不明白,后面聊推理优化、上下文外推、架构选型,基本就是空中楼阁。
以“大模型结构演进”这类题为例,面试官常问:LLaMA 相比早期 Transformer,做了哪些更适合大规模训练和推理的改动?如果只是列点——RoPE、SwiGLU、Pre-Norm、RMSNorm——面试还没开始,基本已经结束一半了。你得顺着这些改动说出背后的目标。
比如 RoPE,不只是“位置编码的一种”,更关键是它对相对位置信息的表达更自然,长度外推也更友好;SwiGLU 不只是“激活函数升级”,它是拿更多参数利用效率换更强表达能力;RMSNorm 去掉均值中心化,计算更轻;Pre-Norm 则有助于深层网络训练稳定。你看,同样四个词,背名词和讲设计目标,层级差太大了。
再比如 KV Cache,这题在推理岗位里命中率极高。很多候选人知道“缓存 K/V 能减少重复计算”,但说到显存为什么爆、怎么优化,就有点虚。我建议你至少掌握一个数量级估算。假设某个 7B 量级模型,32 层,每层每 token 的 K/V 缓存大概几十 KB,生成到 1000 token 时,整体缓存可以轻松到 GB 级。这就解释了为什么长上下文推理贵,为什么 MQA/GQA 值得关注,为什么量化和 cache offload 在生产环境这么重要。
我之前在一个客户项目里做过推理链路排查。最初响应时间接近 5 秒,大家都盯着模型前向算力看,结果真正瓶颈是长对话场景下 KV Cache 占用过高,导致 batch 很难做大,GPU 利用率一直上不去。后面我们把缓存策略和并发策略一起改,首 token 延迟从 5 秒压到 900ms,稳定输出时间降到 500ms 左右。这个案例在面试里一说,立刻比纯理论回答更有说服力。
金句:基础题不是门槛低,而是容错低——越基础的问题,越能暴露你有没有真的理解。
Agent 相关题,拉开差距的不是概念,而是流程设计能力
到了 Agent 这一块,很多面试已经不满足于“你知道 ReAct 吗”“你用过 function calling 吗”这种层面了。更常见的题法是:给你一个场景,让你设计一个能工作的 Agent。比如,设计一个自动写周报的 Agent,或者做一个企业知识问答助手。这里最怕的回答,是上来就堆框架名词,LangChain、Workflow、Memory、Tool Use 一顿输出,最后没有一条清晰链路。
如果是我来答“周报 Agent”这个题,我会先压住技术冲动,先讲任务拆解。输入是什么?零散的会议记录、代码提交、文档更新、聊天摘要。输出是什么?一份符合团队风格的结构化周报。然后再讲工具层:日历 API 拉会议、Git API 拉提交记录、文档模板约束格式、必要时接消息平台做补充。最后才是推理流程:先收集,再分类,再去重,再摘要,再按模板生成。
这个过程的重点,不在于“会不会调工具”,而在于你是否意识到 Agent 的难点通常不是生成,而是获取上下文、约束行为、处理异常。比如:
- Git commit 可能很多,但和周报不完全等价;
- 会议纪要可能有噪声,甚至没有明确结论;
- 同一项工作可能同时出现在日历和提交记录里,需要去重;
- 某些敏感信息不适合直接写进周报。
所以一个成熟回答,最好能补上风控和回退机制:数据缺失怎么办,工具调用失败怎么办,需要人工确认的环节在哪里,输出如何可编辑。
下面这个简化代码片段,比较适合在面试中说明你的设计思路:
from typing import List, Dict
def get_calendar_events(start_date: str, end_date: str) -> List[Dict]:
return [
{"title": "RAG 检索质量评审", "summary": "讨论召回率偏低问题"},
{"title": "Agent 工具链对齐会", "summary": "确认 Git 和日历接入方式"},
]
def get_git_commits(since: str) -> List[Dict]:
return [
{"repo": "ai-assistant", "message": "优化 reranker 阈值逻辑"},
{"repo": "ai-assistant", "message": "新增周报生成模板"},
{"repo": "agent-platform", "message": "接入 function calling 日志"},
]
def categorize_work(events: List[Dict], commits: List[Dict]) -> Dict:
result = {
"成果": [],
"问题": [],
"下周计划": []
}
for e in events:
if "评审" in e["title"] or "对齐" in e["title"]:
result["成果"].append(f"参与 {e['title']}:{e['summary']}")
for c in commits:
if "优化" in c["message"] or "新增" in c["message"] or "接入" in c["message"]:
result["成果"].append(f"{c['repo']} - {c['message']}")
result["问题"].append("部分工作记录分散,需要统一沉淀到任务系统")
result["下周计划"].append("继续优化 RAG 检索效果,补充 Agent 调用链监控")
return result
def generate_weekly_report(data: Dict) -> str:
return f"""
本周成果:
- {chr(10).join(data['成果'])}
当前问题:
- {chr(10).join(data['问题'])}
下周计划:
- {chr(10).join(data['下周计划'])}
""".strip()
if __name__ == "__main__":
events = get_calendar_events("2026-03-17", "2026-03-22")
commits = get_git_commits("last_week")
categorized = categorize_work(events, commits)
report = generate_weekly_report(categorized)
print(report)
这段代码不复杂,但面试里它能帮你说明三件事:任务分层、工具接入、结果组织。很多时候,工程感就是这样建立起来的。
RAG、系统设计、问题排查,才是高级岗位真正的分水岭
如果你已经有一些项目经历,那准备面试时就别把精力都花在定义题上了。高级岗位更常见的是系统设计题和问题排查题。因为面试官想判断的,是你能不能把零散知识拼成一个可落地的系统。
我举个很典型的场景:做一个企业知识库问答系统,为什么用了 RAG,没直接微调?标准回答当然是“RAG 更新快、成本低、适合知识密集场景”。但如果你想答得更像做过项目的人,可以再加三层。
第一,知识更新频率。如果文档每周都变,微调成本和版本管理压力都太大;第二,可溯源性。企业客户往往不只要答案,还要“答案来自哪里”;第三,风险隔离。通过检索把上下文限定住,能降低模型自由发挥的空间。
更进一步,面试官还会追问:RAG 效果差,先查哪里?这时候别急着说“换更大的 embedding 模型”。我通常按链路排查:
- 查询是否改写得足够好;
- 切片策略是否破坏了语义完整性;
- 召回数和 rerank 阈值是否合理;
- 上下文是否被无关片段稀释;
- 最终 prompt 是否明确要求基于资料回答。
这是另一个我常用的方法论,叫 “RAG 五段排查法:问法、切法、召法、排法、写法”。
很好记,也很适合面试现场快速组织语言。
- 问法:用户 query 是否需要重写、补全意图
- 切法:chunk 是否太碎或太长
- 召法:向量召回与关键词召回是否结合
- 排法:是否有 rerank,阈值是否合理
- 写法:prompt 是否要求引用来源、限制幻觉
我之前做过一个客服知识库项目,初版用户反馈很差。我们一开始以为是模型不够强,后来发现主要问题是 chunk 切得太机械,按固定 500 字切,导致“问题”和“答案”经常被切开。重做切片策略后,命中率提升明显,再配合 rerank,最终 Top1 命中率从 62% 提到 84%。这个数据在面试里非常有用,因为它能说明你不只是会喊“优化 RAG”,而是真的知道问题出在哪。
金句:系统设计题的本质,不是画架构图,而是解释每一个技术选择背后的代价。
新技术题怎么准备,关键不是追热点,而是建立判断边界
AI 领域还有一种题,最近越来越多:你怎么看某个新框架、新范式、新论文方向?很多人遇到这种题就很紧张,怕自己没看最新内容。其实面试官通常不是要你复述新闻,而是看你有没有判断力。
比如问你:Agent 框架这么多,怎么选?这时候最忌讳的回答是“哪个火用哪个”。更成熟的说法应该是:先看你的任务是偏 workflow 还是偏 autonomous;再看工具生态是否成熟;再看调试能力、日志能力、状态管理是否够用;最后看团队学习成本。如果项目要求强可控、强审计,我宁愿选简单稳定的工作流编排,也不一定上“自主性很强”的 Agent 方案。
同样的,新模型、新推理框架出来时,也别急着站队。你可以用一个判断框架:价值、成本、边界。
- 价值:它解决了什么旧问题?
- 成本:引入后会带来什么复杂度?
- 边界:在什么场景下不适用?
这个答法很稳。比如有人问你怎么看 FlashAttention。你可以说,它的价值不只是“更快”,而是通过优化访存模式,缓解了 attention 的 IO 瓶颈;成本是工程集成和硬件环境适配;边界在于不是所有场景都能线性享受收益,得看具体序列长度、硬件栈和实现版本。这种回答不花哨,但非常像一个做过系统的人。
再比如,面试官问“你觉得 Agent 会不会取代传统工作流?”你完全可以不极端。我的看法是:在需要稳定输出、规则清晰、流程固定的业务里,工作流仍然是主力;在开放任务、信息不完整、需要动态规划的场景,Agent 才更有优势。二者不是替代关系,更像是控制性和灵活性的不同取舍。
金句:真正成熟的技术判断,不是给新东西打满分,而是知道它什么时候该上,什么时候别上。
题库真正的价值,是帮你把“会做”升级成“会讲”
很多人有项目经验,却依然在面试里吃亏。问题不是能力不够,而是表达还停留在“流水账”阶段。你一说项目,就是“我们做了一个平台、接了一个模型、效果还不错”;面试官听完,既不知道难点,也听不出你的贡献。
所以我一直建议,刷题时不要只练“答案”,还要练“叙述顺序”。一个好回答通常至少包含这几个元素:
- 背景:为什么要做
- 目标:解决什么问题
- 方案:为什么这么设计
- 难点:最棘手的地方是什么
- 结果:指标怎么变化
- 反思:如果重来会怎么改
你会发现,这其实和题库是连着的。基础题训练你的概念清晰度,工程题训练你的技术判断,系统题训练你的整体视角,新技术题训练你的边界感。题库不是知识仓库,它更像一面镜子,让你知道自己到底是“听懂了”,还是“真的能讲出来”。
如果你时间很紧,我建议先抓三类:高频基础题、Agent/RAG 题、新技术判断题。目标不是全刷完,而是先搭一个“能答”的骨架。如果你有时间系统准备,就按“先自测、再补盲、再回章节、再复述”的节奏来。最重要的一步永远是最后那步:关掉答案,用自己的话重新讲一遍。
最后,给你 3 个可以立刻执行的动作:
- 选 10 道高频题,每道都按“定义—原理—权衡—落地”重写一遍。
- 从你做过的项目里,整理 2 个能量化结果的案例,记住关键数据和取舍理由。
- 找朋友做一次模拟面试,重点练追问,不练首答。
AgentInterview 这个项目把 AI 面试准备、知识梳理和工程表达放在了一起,适合拿来长期查漏补缺。项目已经开源在 GitHub:github.com/huangjia201…,如果你觉得这类内容有价值,欢迎去点个 Star,也欢迎提 Issue 或 PR,一起把它补成真正能用的 AI 工程师成长资料库。