先说实话,大模型相关的面试准备现在确实卷得厉害。光看岗位描述里那长长一串——预训练、微调、Agent、RAG、推理加速、分布式——就能劝退不少人。市面上到处是“全套资料”,但真正成体系、能直接对着练的东西其实不多。我这次整理这套覆盖基础面、微调、Transformer、LangChain、Agent、RAG、LoRA、推理、分布式训练的完整知识框架,就是希望把它变成一份可以按图索骥的复习地图,而不是又一个吃灰的收藏夹。
这套体系适合谁?正在准备大模型相关岗位面试的候选人,刚转行进来想建立整体认知的工程师,以及带团队想给组里做培训的技术管理者。我会把每个模块的考察目标、核心考点和易错点都拆开讲,最后再分享一套自测和现场答题的方法论,尽量做到“看完知道该往哪使劲”。
1. 大模型八股文的整体学习地图:别急着背题,先搭框架
1.1 为什么市面上的刷题资料总是“背了就忘”
我见过太多人抱着厚厚一摞题集,从“什么是注意力机制”背到“DeepSpeed ZeRO三个阶段”,背得很熟,一到面试官追问“为什么这里要这么设计”,就卡住了。原因很简单:八股文的本质是“知识点”,但面试官真正想考察的是“知识点之间的联系”。
举个例子,很多人能背出“LayerNorm放在残差之前还是之后”,却说不清这跟Transformer的梯度流动、训练稳定性有什么关系;能背出“KV Cache”这个词,却不知道显存占用怎么算,更不知道它跟GQA(分组查询注意力)之间是“此消彼长”的关系。这些都是典型的“背了但没串起来”。
所以我建议的学习顺序不是按资料目录从头翻到尾,而是先建立一张知识地图,搞清楚每个模块在整个大模型技术栈里处在什么位置,解决什么问题。
1.2 这套体系的模块划分与关联逻辑
我这次整理的体系,把内容切成八个模块,模块之间不是并列关系,而是有一条隐含的主线:
- 基础面是地基,覆盖深度学习核心概念、常见模型架构、损失函数、优化器、正则化等。
- Transformer是承重墙,因为现在几乎所有大模型——不管GPT类还是BERT类,底层都是Transformer。
- 微调是从“通用模型”走向“领域专用”的桥梁,而LoRA则是微调里最高频的工程化手段。
- LangChain和Agent是将模型能力封装成可交互应用的工具层。
- RAG解决的是“模型不知道的知识”怎么引入的问题。
- 推理和分布式训练则是把模型真正用起来、跑起来的工程底座。
这张地图真正的价值在于,你可以顺着“预训练→微调→部署推理→应用构建”的主线把知识串起来。面试官问“怎么做领域知识问答系统”,你就自然想到“RAG→向量检索→重排→LLM生成→Agent工具调用”这条链路,而不是零散地回忆某个孤立知识点。
2. 核心模块考点拆解:从原理到工程,逐个击破
2.1 基础面:不是“本科机器学习复习”,而是“大模型视角的重新梳理”
很多资料把基础面写成了一本浓缩版西瓜书,从线性回归讲到SVM。这其实是个误区。大模型岗的基础面考察重点,和传统机器学习岗有明显区别。
高频考点我总结了大概这几类:激活函数为什么ReLU系列成为主流(梯度消失、计算效率)、BatchNorm和LayerNorm的区别以及为什么Transformer用LayerNorm、交叉熵损失在分类任务里为什么天然适配softmax、Adam优化器的一阶矩和二阶矩到底在干什么、权重衰减(Weight Decay)在大模型训练里扮演的角色、过拟合和正则化手段等等。
这里我特别想强调一个高频问题:为什么大模型训练几乎只用LayerNorm,而很少用BatchNorm?标准答法是“BatchNorm依赖batch内统计量,序列长度和batch size不稳定时效果差;LayerNorm对特征维度归一化,与序列长度无关,更适合变长输入”。这当然对,但面试官往下追问一句“那如果强行用BatchNorm会怎样”,很多人就开始含糊了。实际上,BatchNorm在训练和推理阶段行为不一致(推理时用滑动的全局统计量),在分布式训练场景下同步统计量还会引入额外通信开销。能答到这一层,才算真正理解。
基础面这块我还建议大家把“数据预处理”“分词器(Tokenizer)”也纳入复习范围。BPE(字节对编码)怎么合并词表、为什么大模型词表动辄几万甚至十几万,“unicode字符怎么被切分”这类问题,出现的频率比我预想的高很多。
2.2 Transformer:只背“多头注意力”远远不够
Transformer是整个大模型面试里最核心、提问密度最高的模块。毫不夸张地说,这个模块准备得好不好,直接决定面试的上限。
第一梯队考点毫无疑问是自注意力机制的完整推导:Q、K、V怎么来,缩放点积为什么除以根号dk,softmax之后如何加权求和。这里有个极易被追问的细节:为什么要除以根号dk?因为点积结果随维度增大而增大,softmax在输入绝对值过大时梯度趋近于零,除以根号dk可以把方差拉到合适的区间。我在模拟面试时经常追问“不除会怎样”,能答到“softmax饱和区梯度消失”的人,就算真正吃透了。
第二梯队是位置编码。绝对位置编码(Sinusoidal)和相对位置编码各自解决什么问题,RoPE(旋转位置编码)为什么能成为主流——因为它同时具备相对位置感知和可外推性。这里建议动手画一遍RoPE的旋转矩阵,别只看公式。
第三梯队是工程细节,这是很多人会丢分的地方:
- 残差连接为什么能训练深层网络(梯度高速公路效应)
- Pre-Norm和Post-Norm对训练稳定性的影响——Pre-Norm更稳,Post-Norm在深层模型里更易发散
- KV Cache节省了多少计算量,显存占用的公式怎么算
- MQA/GQA(多查询注意力/分组查询注意力)为什么能减少KV Cache的显存占用
比如这个经典拷问:7B模型,序列长度4096,用FP16推理,KV Cache大约占多少显存?假设40层,GQA方式每组共享,估算公式大约是2(K和V)× 层数 × 头维度 × 序列长度 × 精度字节数。如果你能现场写出这个计算,面试官基本不会再刁难你工程能力。我建议把这类数值估算题都整理到笔记里,反复练到条件反射。
2.3 大模型微调:全参、LoRA、Ptuning怎么选,底层逻辑是什么
微调这个模块,考察的不只是“会不会跑脚本”,更多是“面对一个业务场景,你能不能选对微调方案”。
首先要建立区分度:全参微调(Full Fine-tuning)、LoRA、Ptuning(前缀微调)、Adapter,这几类方案的本质区别在哪。一句话概括:是否改动全部模型参数,以及新增的可训练参数放在哪里。全参微调改全部权重,效果好但显存和存储成本高;LoRA通过低秩分解在权重旁路插入可训练矩阵;Ptuning在输入序列前拼接可学习的虚拟token;Adapter在Transformer层之间插入小型网络。
这里有个高频误区需要特别澄清:LoRA并不是“省显存”的银弹。它的显存占用仍然与基座模型的参数规模相关,只是可训练参数量变小后,优化器状态(Adam的一阶矩和二阶矩)占用的显存大幅度降低。你训练一个7B模型,如果只用LoRA,激活值、模型权重这部分节省是有限的,真正省的是优化器状态和梯度存储。很多资料没说清这一点,导致面试时在“LoRA到底为什么省显存”这个问题上被打穿。
还要掌握LoRA参数选择的逻辑:秩r的选择(一般8、16、32)、alpha怎么配、在哪些模块上插入LoRA(通常Wo和Wq、Wv、Wk)、可训练参数占比大概多少。不要只会报数字,要说得出“秩越大表达能力越强,但也会占用更多显存和过拟合风险”这样的权衡。
微调的数据准备也值得单独复盘。指令微调的数据格式(instruction、input、output)、数据清洗怎么去噪、怎么控制数据配比(通用数据和领域数据的比例),这些实操问题比理论更像“现场题”,建议结合自己做过的一两个项目准备成案例。
2.4 LangChain 与 Agent:框架好用,但别让框架替你做思考
LangChain这个模块,面试考察的往往不是“你调过多少工具”,而是“你有没有真正理解它解决的是什么问题”。它在早期被吐槽API不稳定、抽象层次太多,但它的核心价值在于把“模型调用、提示词管理、记忆、工具调用、外部检索”组合成可复用的工作流。
我建议准备LangChain时按这四层去梳理:
- Model I/O层:Prompt模板、LLM调用封装、输出解析器
- Memory层:对话记忆的存储与管理、滑动窗口、摘要记忆
- Retriever层:向量存储、检索器封装、文档切分与召回逻辑
- Agent/Tool层:工具注册、Agent执行循环、多步骤规划
Agent相关的题,准备几个经典思路就够了:ReAct是什么(推理+行动交替)、Function Calling的实现机制(模型输出结构化JSON,框架负责调用)、Plan-and-Execute和ReAct的差异(先全局规划还是边做边调整)、工具调用的错误恢复机制。面Agent最容易翻车的地方是把LangChain的API当成原理讲。面试官问“Tool调用是怎么实现的”,不能只答“用create_tool_calling_agent”,要讲清楚“模型输出工具名和参数->解析->执行->把结果封回对话上下文->再次送进模型”这个闭环。
2.5 RAG:检索增强的工程链路,考点藏在细节里
RAG现在已经是企业落地的必选项,但大部分人的准备停留在“向量化+向量检索+拼接提示词”这个粗糙三层上。真正的考点在工程细节里。
先解决“什么是RAG、它解决什么问题”:大模型训练数据有截止时间,私有领域知识没有进入到参数里,所以需要用检索把相关知识“外挂”给模型。这里的高频追问是:RAG和微调怎么选?我的建议回答思路是——知识更新频繁选RAG,改变模型行为和风格选微调,预算充足且数据质量高可以考虑两者结合。
RAG的关键细节拆开来看有四个:
- 切片策略:固定窗口、按语义切分、按结构切分(标题/段落),切片大小直接影响召回质量
- 向量化与检索:Embedding模型选择、稠密检索和稀疏检索(BM25)如何互补、重排(Rerank)为什么不自带在初检环节
- 提示词组装:检索到的文档怎么格式化、控制引用的来源、超出上下文长度怎么办
- 评估:召回率、命中位置、生成内容准确率,线上怎么统计
这里说一个我在项目里踩过的典型坑:固定窗口切片在遇到表格和代码时,召回效果极差。因为字符级别的切分把语义单元切碎了。后来改成“先按标题结构粗分,再对超长块做语义切分”,加上BM25和向量检索的混合召回,线上指标才明显改善。这类经验不妨用自己的话整理成case,远比背概念有说服力。
2.6 LoRA深入:从矩阵分解到实际训练配置
LoRA虽然上面已经提了基础逻辑,但单独拿出来讲,是因为它在面试里涉及的深度可以挖得很深。
数学原理层面要能说清楚:为什么低秩分解可行?因为大模型微调时权重更新的梯度信息往往集中在一个低维子空间里,直接用全量矩阵是大量冗余。LoRA把W = W0 + ΔW中的ΔW分解为B×A,A用高斯初始化,B用零初始化,保证训练开始时ΔW是零。这一点很关键,因为从零开始加旁路不会破坏预训练权重的初始行为。
训练参数设计层面要能回答:alpha和rank的关系,PyTorch实现中实际缩放因子是alpha / rank,为什么?因为直接乘alpha会让数值范围失控,除以rank是归一化的经验选择。
还有一个高频题是“LoRA能不能合并回原权重,合并后精度有损失吗”。能合并,因为原理上就是矩阵加法;精度会有极微小的浮点误差,但基本可忽略。推理时合并回主干可以减少一次旁路前向计算,降低延迟。
2.7 推理与部署:别只知道“KV Cache”和“量化”
推理优化是一个既考深度又考广度的模块。面试官想确认的不是“你听说过多少技术名词”,而是“这些技术分别解决什么问题、代价是什么”。
需要掌握的优化手段我列了一张速查表:
| 优化手段 | 解决的问题 | 主要代价/注意事项 |
|---|---|---|
| KV Cache | 避免重复计算历史token的K/V | 显存开销随序列增长 |
| GQA/MQA | 压缩KV Cache显存 | 质量略有损失 |
| 量化(INT8/INT4) | 降低显存和计算带宽 | 精度损失,需校准 |
| 剪枝/稀疏化 | 减少计算量 | 不够通用,硬件支持有限 |
| 投机采样 | 加速自回归解码 | 草稿模型质量影响收益 |
| 批处理/连续批处理 | 提升吞吐利用率 | 实现复杂度高 |
我强烈建议准备一个“显存估算”的看家本领。比如部署一个7B FP16模型,光模型权重就是14GB;推理时还要加上激活值、KV Cache、临时缓冲区。面试现场如果能熟练说出“7B FP16权重14GB,KV Cache按序列长度算大约每层多少GB”,基本就能证明你有实战过。
量化这块,需要分清两个层级:训练后量化(PTQ)和量化感知训练(QAT);还需要知道常见的量化粒度(per-tensor、per-channel、per-group)。另外,AWQ和GPTQ这两个名字要能区分——它们都是PTQ,但侧重点不同,GPTQ基于近似二阶信息做逐层量化,AWQ根据激活值分布找显著权重通道。选型时要结合任务场景,不能只背字母缩写。
2.8 分布式训练:数据并行、张量并行、流水线并行到底怎么分工
分布式训练是大模型岗的拉分项,也是最容易暴露“只听过名词没跑过任务”的模块。好在核心概念不算多,关键是理清它们各自处理的瓶颈。
数据并行(Data Parallelism):每张卡一份完整模型副本,切分数据,梯度在反向传播后做AllReduce平均。问题是单卡放不下模型时无能为力;显存有限、模型较大的场景需要其他并行策略配合。
张量并行(Tensor Parallelism):把单个层的权重矩阵切到多张卡上,前向计算时卡间频繁通信。它适合单机多卡场景,因为节点内带宽高;跨机用张量并行通信代价太高。
流水线并行(Pipeline Parallelism):把模型按层切成多段,每张卡负责一段,输入按Micro-Batch流式通过。它在层边界才通信,但存在“气泡”(流水线排空等待)问题,需要靠微批次切分来缓解。
还有ZeRO(零冗余优化器):把优化器状态、梯度、模型参数按维度分片到各卡,是数据并行和显存优化的融合方案。
面试里最容易踩的坑词是“3D并行”,务必说清它指的是“数据并行 + 张量并行 + 流水线并行”的组合。以及,在DeepSpeed或者Megatron这类框架的实际案例里,张量并行度(tp)一般怎么设,流水线并行度(pp)怎么设,为什么通常优先增加数据并行度而不是pp。能讲清楚这套取舍逻辑,才算是真正的“training scale”经验。
3. 自测与实操方法:资料是别人的,能力是自己的
3.1 构建自己的“问题树”,而不是“题库”
市面上收集来的题目是散的,但我建议你花一晚上做一件事:把每个模块的题目按“原理→推导→工程实现→场景权衡”四个层级重新排列。同一道题,递归往下问自己。
比如“说一下LoRA”,四层问法分别是:
- 原理层:低秩分解为什么可行
- 推导层:ΔW为什么分解成B×A,初始化为什么是A高斯、B置零
- 工程层:alpha/rank怎么设,哪些模块插入lora效果好,可训练参数怎么算
- 场景权衡层:什么时候选LoRA而不是全参微调,batch size和lr要不要跟着调
3.2 用“费曼式口述”检验理解程度
一个非常有效的准备方法是找一个外行朋友,把知识讲给他们听。讲的过程中卡壳的地方,大概率就是你没理解透的地方。我自己准备LoRA和KV Cache时就是这个办法,讲着讲着发现“softmax为什么缩放”我自己都没说圆,回去重新补了推导。
反复口述还有一个好处:自然形成结构化的答题模板。面试现场时间有限,组织语言的能力非常关键。我的习惯是每道核心题写一个“一句话结论 + 两层展开 + 一个场景”的框架,现场顺着框架说,不会跑题。
3.3 高频数值估算题准备清单
数值估算题是大模型面试的高频特色题,拼的不是复杂计算,而是建模能力。我建议每个人提前把以下公式和量级背下来:
- 模型参数量与显存:1B参数 FP32约4GB,FP16约2GB,INT8约1GB
- 7B模型的KV Cache估算:以GQA配置为例按公式现场计算
- 训练显存构成:模型权重、梯度、优化器状态、激活值各占多少
- 推理总显存 = 模型权重 + KV Cache + 激活值 + 框架开销
比如7B FP16推理,权重14GB;如果上下文4096、40层、8个KV头、头维128,KV Cache单序列大约2×40×8×128×4096×2字节,约等于0.67GB。如果你能一口气把这个式子说出来,面试官好感度会明显不一样。
3.4 项目经验怎么和八股文结合:我从来不把复习分成两条线
我发现很多人准备面试时,八股是八股,项目是项目,两者完全割裂。这是个致命的错误。真正高效的做法,是把项目经历当成八股知识的“附着点”。
举个例子,如果你做过一个问答系统,那就把所有相关知识点都“挂”到这个项目上:数据清洗时怎么去噪(微调数据准备)、召回用向量还是BM25(RAG检索)、重排怎么做的(RAG链路优化)、提示词里给不给引用来源(生成质量评估)、上线后延迟多少、显存峰值是多少(推理优化和性能指标)、如果你从头做一遍会改什么(技术选型复盘)。这样一来,面试官无论从哪个角度问,你都有“项目实例 + 概念原理”双重弹药。
4. 面试实战技巧:从“知道答案”到“给出让人信服的答案”
4.1 先给结论,再展开,别让面试官替你找重点
技术面试通常30到60分钟,面试官要验证的点非常多。如果你花三分钟铺垫概念,他可能早就失去耐心。我的答题习惯是“三层走”:
- 一句话结论(是什么)
- 两到三个展开点(原理、工程、场景)
- 一个具体例子(证明你做过)
比如问“RAG和微调的区别”,结论先说“RAG改的是输入知识,微调改的是模型参数,二者解决不同问题,也可以结合”。然后展开说RAG适合知识频繁更新、需要溯源、冷启动快的场景;微调适合改变模型行为风格、学习固定格式的任务。最后补一句“我在项目里,知识库变更频繁所以选了RAG,但对输出格式要求严苛,所以额外做了少量微调”。这直接回答完整了。
4.2 被问到不会的题,怎么“撑住场”
面试中一定会遇到不会的题,这不是坏事,关键是现场反应。我的建议是分两步:
先把问题rephrase一遍:“您说的是不是指……这部分我了解过……”即使不完全懂,也能为自己争取思考时间,同时展示沟通能力。然后诚实说明边界:“这个方向我之前关注不多,但我可以从……的角度推测,它的核心大概率是……”面试官更看重逻辑推理能力,而不是“全知全能”。
忌讳的是:沉默、强行编造、答非所问。一旦回答得太离谱,前面建立的专业形象会打折扣。
4.3 反问环节:机会不是客套,是信息差
面试末尾的反问环节尽量不要浪费。我习惯问两类问题:
第一类问技术倾向:“团队目前主要用哪些框架做推理部署,遇到的主要瓶颈是显存还是延迟?”这既表现出专业度,又能在信息层面帮你判断这个团队的真实技术栈。
第二类问业务场景:“新人在这个团队里通常从哪个方向切入,是数据侧、微调侧还是应用侧?”这是为自己拿Offer后的入职预期做准备,同时能给面试官留下“这个人有规划”的印象。
5. 常见问题与学习误区:这些坑,我见过太多人踩
5.1 “背了很久,但一开口就乱”怎么办
核心原因是知识没有结构化。八股文在脑子里是散点,不是图谱。解决办法很简单:每学完一个模块,画一张知识草图(手写也行),把概念之间的关系标出来,比如LoRA和全参微调的关系是“参数空间的两种更新方式”,RAG和微调的关系是“互补方案而非替代方案”。结构化之后,面试现场的提取速度会快得多。
5.2 “资料收集了很多,完全看不完”怎么办
请先停止收集。全套资料的核心价值不在于“全”,而在于“重点密度”。拿我整理的这套来说,八个模块不要平均发力。Transformer和微调占最大投入,因为它们是被追问最深的;LangChain和Agent掌握工作流套路即可;分布式训练和推理重概念、重协调。每一份资料过一遍,都要输出“自己能讲出来的笔记”,只进不出等于白看。
5.3 “做了项目,但面试时说不出来”怎么办
这本质上是“没有做项目复盘”。我强烈建议用STAR方法把每个项目写下来:当时的目标、面临的技术约束、你选择的技术方案、踩过的坑和最终结果。项目复盘的质量,往往比项目本身更能决定面试评价。
一个常见误区是只讲“我做了什么”,不讲“我为什么这么做”。面试官想听的其实是决策过程。例如,同样是用LoRA,你说“我用了LoRA”和你说“因为数据集只有几万条,全参微调容易过拟合,而且只有单卡,显存最多只能跑得动7B,所以我选LoRA把rank设成16并用alpha=32来微调”,这完全是两种层次。
6. 这套体系还能怎么用:从面试资料到长期学习框架
准备好面试之后,这套体系别扔。它本质上是一张“大模型技术全景图”。入职之后做方案选型,遇到“是微调还是RAG”之类的问题,完全可以直接复用这套分析框架。我整理整份资料时最大的体会是:知识本身不难,难的是把它们组织成“遇到问题能随时调用”的网络。
最后分享一个我在整理过程中最受益的细节:给每个模块准备一个“一句话总结”。比如LoRA——“用低秩旁路近似权重更新,以少量可训练参数换取接近全参微调的效果”,RAG——“通过检索为模型补充外部知识,把不可控的参数记忆变为可控的检索问答”。当你把全部模块都压缩成一句话时,整个知识体系才算真正长在你身上了。祝复习顺利,面试场上见真章。