这两年AI方向的面试画风变得特别快。以前算法岗还在手推逻辑回归、聊聊特征工程,现在基本开口就是Transformer结构、RLHF流程、LoRA微调、RAG架构。我身边不少候选人简历上都写着“熟悉大模型”,结果面试官往深了一问,要么答不到点上,要么把几个概念混在一起讲。这篇内容把我自己平时整理、带人复盘用的大模型面试知识框架完整梳理一遍,从原理层到训练层再到工程应用层,把高频题目的考察点和回答思路都拆开讲清楚,适合正在准备AI算法岗、大模型应用岗面试的同学,也适合想搭一套面试考察体系的团队负责人参考。
1. 内容整体设计与思路拆解
1.1 面试考察的三个层次,别再只背八股
我观察了最近两年大量AI岗位的实际面试案例,大模型方向的考察基本可以分成三个层次。
第一层是原理层,考察你对大模型底层的理解是否扎实。比如Transformer的注意力机制为什么这么设计、位置编码怎么加、为什么现在的模型基本都是自回归解码器结构。这一层筛掉的是只会调库、说不出所以然的人。
第二层是训练与对齐层,考察你是否理解大模型是怎么从预训练走到可以稳定使用的。预训练目标是什么、指令微调解决了什么问题、RLHF的完整链路怎么走、LoRA为什么能省显存,这都是高频考点。这层筛掉的是只停留在API调用层面的候选人。
第三层是工程应用层,考察你能不能把模型真正落到业务里。RAG怎么搭、检索结果怎么和生成结果融合、模型推理怎么加速、上下文太长怎么处理、Agent的工具调用怎么设计。
如果你能把这三点打通,面试中基本就不怕追问了。面试官的追问逻辑通常是:先让你讲一个概念,然后不断往下挖“为什么”“怎么做”“有什么坑”,直到找到一个你不清楚的地方。所以真正有效的准备方式,不是背几十道题,而是把每个知识点的“是什么、为什么、怎么做、有什么坑”这四层全部补满。
1.2 搭建知识框架的做法:自底向上,带工程验证
我给准备面试的候选人建议的搭建方式,是画一棵知识树,而不是刷题清单。
树的根部是深度学习基础,包括反向传播、梯度问题、正则化、损失函数设计。树干是Transformer架构和语言模型的训练范式。树枝是围绕大模型衍生出的微调、对齐、检索增强、推理优化这些方向。每根树枝下面再挂上具体的面试题和对应的解答。
关键是每学一个知识点,都要找一个工程落点。比如学到KV Cache,就实际去量一下推理时的显存占用变化;学到LoRA,就动手在某个开源底座模型上做一次微调,记录训练前后的显存和指标变化。这样面试时被问到“你做过什么”,你才有真实的数据和踩坑细节可以讲,而不是干巴巴地背概念。
2. 核心细节解析与实操要点
2.1 Transformer与注意力机制:最容易被追问到底的知识点
大模型面试里出场率最高的就是注意力机制,基本逃不掉。很多候选人能背出公式Attention(Q, K, V) = softmax(QK^T / √d_k) V,但被问到“为什么要除以根号d_k”就开始含糊。
这个问题其实是个数值稳定性的问题。Q和K是维度为d_k的向量,当d_k变大时,Q和K的点积结果的方差会跟着变大。如果直接进softmax,就会让概率分布变得特别尖锐,极端情况下梯度会非常小,训练就很难推进。除以√d_k本质上是把点积的结果拉回到一个方差可控的范围。你可以类比一下:一群人打分,如果满分特别高,大家分数差距就显得很大,排序结果容易被极端值主导;把分数统一除以一个合适的标准,才能让分布更合理。
另一个高频追问是位置编码。早期模型用正弦函数编码,因为它是周期性的,能天然地外推到更长的序列;但绝对位置信息对语义的干扰比较大。现在的主流做法基本都在用旋转位置编码(RoPE),它的核心思路是把位置信息通过旋转矩阵作用在Q和K上,让内积的结果天然带上相对位置的衰减关系,既保留相对位置建模能力,又对长文本更友好。这个考点一旦出现,最好能画出“位置越远、注意力分数越低”这个直觉。
还有一个必问题:为什么现在是解码器结构的天下,而不是早期的双向编码器结构?答案要点是:自回归解码器的预训练目标(预测下一个token)和所有下游任务的统一表达形式天然一致——无论你做什么任务,都可以转换成“给定前文,生成后文”。而双向编码器需要每个任务单独加分类头,迁移的通用性就差很多。再加上解码器的因果掩码让KV Cache的实现变得非常高效,推理时只需要缓存历史状态,长文本场景下优势明显。
很多候选人还会在这块被问到LayerNorm和RMSNorm的区别。RMSNorm去掉了均值中心化这一步,只做方差归一化,计算量更小,在大规模训练里能省不少时间,而且实验效果和LayerNorm基本持平。这类小细节恰恰是区分“真懂”和“背题”的关键。
2.2 预训练、对齐与微调:训练链路里的高频追问
聊完模型结构,面试官基本会转向训练。第一个问题通常是:大模型的训练分几个阶段。
完整的链路是预训练、监督微调(SFT)、偏好对齐。预训练的目标就是预测下一个token,语料规模极其庞大,目标是让模型具备语言能力和世界知识。但预训练出来的模型只能“续写”,不一定会“听话”,所以需要SFT用指令数据让模型学会遵循用户意图,比如“回答问题”和“续写故事”得区分开。最后是偏好对齐,典型的是RLHF,让模型的回答更符合人类偏好。
RLHF的考察频率这几年非常高。你要能完整讲出三步:第一步用人类标注的对比数据训练一个奖励模型;第二步拿奖励模型的打分作为反馈,用强化学习算法(通常是PPO)去更新策略模型;第三步为了防止模型在优化奖励时跑偏得太厉害,还要加一个KL散度约束,让策略模型的输出不要偏离底座模型太远。
这里有个很容易踩的坑,就是候选人把RLHF和SFT混为一谈。SFT是拿着标准答案教模型怎么回答,RLHF是让模型在一堆“还行”的回答里学会哪些更好。后来出现DPO这类方法,核心思路是不需要单独训练奖励模型,直接通过偏好数据构造目标函数来优化策略模型,训练流程简化了很多。面试里如果能主动说出DPO和RLHF的差异,以及各自的适用场景,面试官通常会高看一眼。
微调的高频考点是LoRA。我要重点说一下LoRA到底省了什么。全量微调时,所有参数都要更新,优化器要保存每个参数的动量和方差,GPU显存开销非常大。LoRA的做法是冻结底座模型参数,只训练注入的低秩矩阵。核心思想是:微调过程的参数变化量往往处在一个低秩空间,所以可以用两个小矩阵的乘积去近似这个变化量,训练参数量可能只占全量的1%甚至更少。优化器只需要给这些极少的可训练参数学存状态,显存自然就降下来了。QLoRA在此基础上把底座模型量化成4bit,进一步降低显存占用,让单卡微调成为可能。
面试官还喜欢问“微调后模型变笨了怎么办”。这是个经典的灾难性遗忘问题。常规解法是混合训练数据里保留一部分通用数据,或者用LoRA这类参数高效微调方式来减小对原始参数的扰动;评测时除了看领域指标,也要在通用能力上随机抽测。这些细节没有上手实操过的人很难答出来。
2.3 RAG与Agent:工程应用题的主战场
现在的大模型面试里,RAG几乎成了必考题。原因很简单:绝大多数业务场景用不到微调,RAG才是性价比最高的方案。面试官一般会问:RAG的完整流程是什么。
标准流程是:文档切分、向量化、入库;用户提问时把问题向量化,去向量库里做相似度检索;把检索到的相关片段和用户问题一起拼成Prompt,交给大模型生成答案。这里面的关键点非常多。
第一是切分策略。切太碎,单个片段信息不完整,召回的结果语义断裂;切太大,向量检索的精度下降,而且塞进Prompt会占用上下文。经验做法是根据文档结构来切,比如按章节、按语义段落切,配合一个合适的重叠窗口,保证边界上下文不丢失。第二是向量化和检索,一般用专门的嵌入模型生成向量,检索时用余弦相似度排序;但向量检索对精确词匹配不敏感,所以成熟一点的方案都会加一层关键词召回再融合排序。第三是重排序,把召回的前几十条用重排序模型精细打分,挑出最相关的几条进入Prompt。重排序这一步很关键,很多Demo效果不好,就是因为跳过了它。
面试官还喜欢问RAG和微调怎么选。我一般建议用一张决策对照。知识更新频繁、需要可溯源、数据量大但单条知识浅的场景,优先RAG;需要改变模型的风格、格式、固化领域表达习惯,才考虑微调;很多实际项目其实是两者结合,先RAG提供新鲜知识,再微调让模型适应领域口吻。
Agent这块,面试问题集中在工具调用和记忆管理。你要能讲清楚模型怎么决定调用哪个工具:一般是把工具的描述和参数结构并发给模型,让模型在输出里生成结构化的调用指令(比如函数调用格式),系统解析后执行工具,再把结果返回给模型继续生成。多轮记忆怎么管,也是一个高频追问,因为会话变长后token消耗和上下文丢失是绕不开的问题。思维链、规划能力这些问题则是进阶考察点,能结合具体场景讲出取舍就更好了。
3. 实操过程与核心环节实现
3.1 原理题的回答模板:“定性-展开-落地”三步法
面试中回答原理题,我建议大家用“定性-展开-落地”三步走,不要一上来就背公式。
比如被问到“介绍一下Transformer”,先定性:Transformer是一个完全基于注意力机制、抛弃循环结构的序列建模架构,核心模块是多头注意力和前馈网络,配合残差连接和层归一化解决深层网络训练问题。然后展开讲注意力为什么能建模长距离依赖:相比循环网络需要一步步传递信息,注意力让任意两个位置的token直接交互,并行度也更高,训练效率自然上去了。最后落到工程:正因为并行性好,才能在大规模语料上高效预训练;也因为每个位置都要和其他位置算注意力,序列变长时计算复杂度是平方级增长,所以后面才有了各种稀疏注意力和KV Cache的优化。
这套模板的好处是,面试官听到第一句话就知道你懂主干,后面再追问就是在局部加深,你反而有了引导话题的空间。如果一上来就堆公式,容易被追问得措手不及。
还有一类高频题是“为什么大模型会产生幻觉”。回答思路也可以套这个模板:定性(幻觉是模型生成内容与现实不一致的现象),展开(两个层面的原因:数据层面语料本身存在噪声和错误,训练目标层面模型只学统计相关性,不学事实核查;推理层面贪心解码或采样策略可能放大低概率的错误内容),落地(工程上常用RAG引入外部知识、让模型在不确定时主动说不知道、或者对输出做事实性校验)。这样答既有深度又有实战感。
3.2 设计题的作答思路:从需求到方案,别跳步
设计题是拉分项,常见的有“如果给你一个客服场景,怎么做一个大模型问答系统”或者“如何评估微调后的模型效果”。这类题考察的不是你能说出多少名词,而是你拆解问题、权衡方案的能力。
我推荐的答题框架是五步:理解需求、画数据流、选技术方案、定评估指标、讲风险预案。
拿客服问答系统举例。第一步理解需求:客服场景的核心是问题类型多、答案要准确、回复风格要统一、还要能引用具体文档。第二步画数据流:用户问题进来,先做意图识别,确认是否需要检索;如果需要,走RAG流程,把召回的文档片段和问题拼进Prompt;如果不需要,直接用模型回答,但要有兜底话术。第三步选技术方案:知识库用RAG,风格统一用轻量微调,两者配合。第四步定评估指标:离线看检索命中率、答案正确率、格式合规率,上线后看问题解决率和用户投诉率。第五步讲风险:知识库更新不及时怎么办、模型答非所问怎么办、敏感问题怎么拦截。
这套框架的优势是,哪怕你对某个具体环节不熟,面试官也能看到你的系统思考能力。我最怕听到的回答是“我用RAG就完了”,没有任何前置分析和后续评估。设计题真正的考察点,在于你会不会做技术选型,并且能说出选择背后的理由和代价。
3.3 手写代码和算显存:现场硬实力的关键
越来越多的大模型面试会现场让候选人写点东西,最常见的是手写简化的注意力机制,以及估算推理或微调的显存。
手写注意力其实不难,核心就是几十行代码的事。重点在于你要能写出缩放因子,能说明mask怎么传。现场写的时候,先把核心公式写在注释里,再一步步实现,最后主动说出你这里的复杂度是多少,这样比闷头写更加分。
显存估算题也很常见,考的是你对训练过程的理解。微调时显存消耗来自四个方面:模型参数、梯度、优化器状态、中间激活值。全量微调时,以一个大模型为例,半精度参数占若干GB,梯度同量级,优化器状态通常是参数量的数倍;LoRA只训练少量参数,优化器状态几乎可以忽略,这就是它省显存的核心原因。推理时则要记住参数占用的权重、KV Cache占用的缓存和激活值。KV Cache的大小大致和“层数×注意力头维度×序列长度×批量大小”成正比,所以上下文翻倍,KV Cache基本也跟着翻倍。能把这几项数量级讲清楚,面试官对你的工程能力基本就有数了。
如果面试涉及LoRA配置,你可以现场画出类似这样的结构思路:预训练权重冻结,旁边挂两个低秩矩阵A和B,前向时用W0x加上缩放后的BAx作为输出,训练只更新A和B。能顺手说出秩r怎么选、缩放系数的量级怎么设,以及为什么两个矩阵一个用高斯初始化一个用零初始化(为了训练初期不破坏原模型输出),这就是完整答案了。
4. 常见问题与排查技巧实录
4.1 高频混淆点:面试现场最容易翻车的概念
我参与过不少模拟面试,整理了下面几个最容易翻车的混淆点,大家可以对照自查。
第一个是RAG和微调的适用边界。很多人脑子里只有“RAG是外挂知识、微调是改变能力”这个粗颗粒理解,一被问细节就乱。记住一句话:RAG解决的是“模型不知道但资料里有”的问题,微调解决的是“模型知道但表达不对”的问题。面试时把两个方向的使用场景和代价都讲出来,基本就稳了。
第二个是温度和top-p的区别。温度调节的是概率分布的平滑程度,温度越高,低概率token被采样的机会越大;top-p是截断采样空间,只从累计概率达到阈值的那批token里采样。很多人以为两者是一回事,其实一个调的是分布的“形状”,一个框的是采样的“范围”。实际使用中两者经常一起调,但考察的时候要说出各自的作用。
第三个是过拟合和幻觉的混淆。微调时在训练集上指标很高、测试集上崩了,这是过拟合;模型在推理时编造事实,这是幻觉。两者可以同时存在,但有各自的处理手段。能把这两条线分开讲,会让面试官觉得你的概念是成体系的,而不是零散记忆。
第四个是PEFT和全量微调的精度差异。有候选人觉得LoRA一定比全量微调差很多,其实在参数量规模和数据量足够的情况下,LoRA在很多任务上和全量微调的差距很小,而且有正则化效果、不容易过拟合。面试中不要一棍子打死说“LoRA效果不行”,要加前提、讲条件。
4.2 简历和面试准备中的常见误区
关于简历,最常见的坑是“只写名词不写深度”。什么叫熟悉大模型?你做过什么、用什么数据、效果怎么样、遇到了什么问题——这些才是有价值的信息。我见过很多候选人在简历里堆术语,一问细节就露馅。宁可少写几个方向,也要保证写上去的每一个都能被追问半小时不虚。
第二个误区是忽略数学基础。大模型面试虽然不要求手推复杂公式,但基础的矩阵乘法、梯度概念、概率知识不能缺。特别是注意力机制的复杂度推导、批量大小和序列长度对显存的影响这些计算,直接关系到你能不能在面试中从容应对现场提问。
第三个误区是不准备“不知道”的情况。面试里遇到不会的问题太正常了,关键是你怎么反应。硬着头皮编,比直接承认不会还要扣分。比较好的处理方式是说:“这个方向我暂时没有深入,但基于我已有的知识,我的初步判断是……,回去后我会重点补这块。”既诚实,又展示了思路。
4.3 面试官的评分维度:倒过来看准备方向
如果你有机会站在面试官角度,会发现评分维度基本是四个:深度、广度、工程落地能力、沟通状态。
深度看的是核心知识是不是真的理解了原理,比如注意力机制、位置编码、训练流程;广度看的是对微调、RAG、Agent、推理优化这些方向的覆盖程度,不要求全懂,但主流方向不能完全空白;工程落地能力看的是有没有真实做过的项目、能说出具体的数字和踩坑记录;沟通状态看的是你能不能把一个复杂概念讲清楚。
对照这四个维度去准备,比刷一百道题有用得多。面试本质上是一场技术交流,候选人的任务不是把所有题目都答对,而是让面试官在有限时间里确认你具备独立解决实际问题的潜力。
结尾
我个人带过不少候选人准备大模型面试,一个比较深的体会是:面试题本身是无限的,但背后的知识框架是有限的。与其纠结“会不会考这道题”,不如把Transformer、训练链路、微调、RAG、推理优化这条主干吃透,再围绕主干补充细节。真正到了面试现场,哪怕遇到没见过的题,你也能从已经建立的知识体系里推导出答案的框架。
另外分享一个小技巧:准备阶段可以给自己做一次模拟面试,把答案大声讲出来,而不是在心里默念。你会发现讲出来的过程中很多卡壳的地方,就是你没真正弄懂的地方。把这些卡壳点记录下来,逐个击破,进步会非常快。大模型这个方向现在还在快速演进,面试题也会一直变,但只要底层原理和工程方法论这两个根基扎实了,不管题目怎么换,你都能接得住。