
后台收到不少准备投大模型方向的朋友留言问得最多的就是“LLM 面试到底考什么有没有现成的题单”。这个问题我在不同公司参与过几十轮技术面之后基本可以给出一个确定的答案大模型岗位面试翻车很少是因为你不知道最新的开源模型叫什么反而多是在基础问题上没有组织出像样的回答框架。下面这 8 个问题是我在社招和校招技术面里反复遇到的题目也是团队里大家默认的“一轮定生死”高频问题任何一个答不透基本就这个岗位无缘了。这 8 个问题覆盖的知识面可能跟你预想的不一样不是追热点、不是背参数量而是 Attention 的缩放困惑、SFT 和 RLHF 的区别、Tokenizer 的工程细节、显存估算与训练优化、评估方法、长文本外推、幻觉缓解、推理部署加速。它们分别对应着 LLM 从原理、训练、评测到落地的完整链路。这篇文章会把每个问题的考点、参考回答框架、以及我见过太多的减分回答都写出来你可以直接当面试清单来用。1. 先说清楚LLM 面试到底在看什么1.1 面试官的视角一道题背后的三层判断面试官问一个 LLM 问题真的只是想知道“你会不会这个概念”吗我在给组里出题的时候考察的其实是三层东西。第一层基础概念是否准确比如 Attention 为什么要做缩放SFT 和 RLHF 分别解决什么问题第二层是否真的动手跑过而不是只能默写论文显存那类问题天然就是在筛选有没有实际训练经验的人第三层是否具备工程判断力知道在资源受限时怎么权衡。很多人挂就挂在第二层和第三层概念背得很熟但问到自己训练 7B 模型时怎么分配显存只会说“用 Deepspeed”再追问一句“Deepspeed 到底帮你省了什么”就答不出来了。这里我要先说明一个可能让你意外的地方校招和社招所考的 LLM 题虽然形式不同但底层逻辑是相通的。校招生的问题往往偏原理推导比如手写 attention、解释位置编码社招则更多围绕一个假设场景比如“你现在要去训练一个垂直领域模型成本预算只有 4 张 A100你怎么做”。但不管哪种形式你要展示的核心都是“我不是只会调用 API而是能把模型当成一个复杂系统来理解和掌控”。1.2 这 8 个问题是怎么选出来的这份题单不是我拍脑袋列的而是我把近几年在大模型相关团队技术面里听到的高频题做了个归纳然后按技术栈的位置排布出来的。它们从模型内部的 Attention 机制开始一路走到训练、评估、长文本、幻觉、部署几乎就是一条完整的 LLM 生命周期。先给你一张总览表后面逐题拆。题号考察主题对应技术栈环节淘汰点1Attention 为什么除以 sqrt(d_k)模型原理只会背公式不理解梯度饱和2SFT 与 RLHF 的关系训练范式把两者混为一谈说不清 why3Tokenizer 与 BPE数据预处理认为分词只是小事答不出工程影响47B 模型显存爆了怎么办训练工程只报工具名算不清内存账5模型效果如何评估评测体系只会说 BLEU/ROUGE说不出缺陷6RoPE 与超长上下文长文本技术背了名词讲不清外推为什么难7幻觉的检测与缓解可靠性工程只会说“不可避免”没有方案8推理加速与量化部署工程概念听过不知道选型逻辑这张表建议你直接存下来。面试准备不需要追着最新的热搜模型跑而是要把这 8 个问题形成自己的话术每个问题都能做到“30 秒讲结论2 分钟讲细节被打断后还能换个维度继续讲”。2. 前半场四连击Attention、训练范式、Tokenizer 与显存2.1 问题一为什么 Attention 要除以 sqrt(d_k)面试官问这个问题时很多人会直接回一句“这是论文里写的为了防止 softmax 饱和”说起来每个词都准确但没有任何推导和直觉面试官听完只会觉得你在背答案。真正有区分度的回答是先承认这是一个工程性选择然后补上背后的尺度分析。假设 q 和 k 的每个分量都是 0 均值、1 方差的随机变量很多初始化确实近似这样那 q 和 k 做点积后结果的方差会随维度 d_k 线性增长变成 d_k。也就是说模型维度设成 128、512、1024 时点积的分布范围会越来越大。如果直接把这么大的数值送进 softmaxsoftmax 的输出会偏向 one-hot过于自信更重要的是它两侧区域的梯度会衰减得很厉害——这就是我常说的“softmax 进入梯度饱和区”反向传播时信息基本传不回去。除以 sqrt(d_k) 的作用本质上就是把点积的方差重新压回到 1 量级让 softmax 的输入落在一个既有区分度、又不会马上饱和的范围里。如果你把它理解成一种“温度缩放”也很合适Transformer 用固定温度因子 1/sqrt(d_k)而很多对比学习模型会专门引入一个可学习的 temperature两者想法完全同源。面试官如果继续追问“为什么是 sqrt 而不是 d_k”你就可以说因为我们关注的是方差的量级标准差才是与尺度同阶的量除标准差能把分布标准化到单位方差除 d_k 相当于把方差压到 1/d_k那又会走向另一个极端区分度反而下降。提示回答这道题时千万不要只说“防止梯度爆炸”。softmax 层本身不会爆炸它出问题的是梯度消失和区分度退化。先把“方差随维度增长”放出来再谈除以 sqrt(d_k) 把方差拉回 1这个逻辑链条是面试官最想听的。这道题后面往往还跟着一个加分题你会怎么验证缩放效果答案可以是“固定随机种子分别用不缩放和缩放后的 attention 跑一个小模型对比训练 loss 曲线或者直接统计 qk 内积的方差”。2.2 问题二SFT 和 RLHF 是什么关系为什么 RLHF 不能省这两个概念几乎是 LLM 岗位面试的必考。但奇怪的是我面试过的候选人里有一半会把它们的关系说成“SFT 是普通微调RLHF 是强化学习微调效果更好”。这个回答属于典型的“正确的废话”没有任何区分度。更好的框架是把它们当作两个不同阶段来解决的两个不同问题。SFT监督微调做的事情是“给模型看大量高质量的示例”通过交叉熵让模型模仿示例中的输出风格、格式和思考方式。它解决的核心问题是“让模型从预训练的续写者变成一个会服从指令的助手”。但 SFT 有个天花板人类的偏好并不是单一正确答案能完全编码的。数据里如果都是标准答案模型学到的只是“在统计上最像标准答案的输出”而人类对“哪个回答更好”的判断往往更细微比如内容丰富度、语气、安全性、甚至是“承认不知道”的诚实性。这时候就需要 RLHF 出场。RLHF 的本质是“给模型定义什么是好并且主动去搜索更好的策略”。它先训练一个 reward model 来拟合人类从小到大对的偏好打分然后用强化学习算法最常见是 PPO让模型在生成空间里尽量拿到更高奖励同时用 KL 惩罚限制模型不要偏离原始策略太远。我一直喜欢用一个类比SFT 是老师直接给出标准答案让你仿写RLHF 是老师给完答案后还会批改你的作业、不断反馈让你在试错中优化出一套自己的策略。如果你能把话说得更有层次还可以主动提一下现在的技术演进DPO 就不需要训练 reward model直接通过偏好对更新策略训练更简单GRPO 是 DeepSeek 在推理类任务上引入的无 critic 变体但核心思想依然是“利用偏好信号优化策略”。这个延伸一说面试官会认为你不仅有概念还在跟版本。注意RLHF 也有自己的问题比如 reward hacking——模型可能学会用空话、模板化讨好 reward model而不是真正提升回答质量。能主动说出这个风险是这道题的加分项。2.3 问题三Tokenizer 背后藏了多少工程细节Tokenizer 在很多入门教程里只有半页纸但在真实工程里它几乎影响后面的所有东西词表大小决定 embedding 参数量token 粒度决定同样一句话会被切多长分词方式还决定 OOV、跨语言、多字节字符怎么处理。面试问这个是为了看有没有更微观层面的工程意识。BPE 是绕不开的算法。它从字符集开始反复统计当前相邻 token 对的出现频率把频率最高的一对合并成一个新 token直到词表达到目标大小。这样做的好处很直接生词不会被标成 unknown而是会自动拆成若干个 subword高频短语可以成为独立 token节省 token 数并提高语义稳定性。比如“deep learning”如果经常出现就可能被合成一个 token 而非两个 token推理时也更快。这个部分面试官经常追加的问题包括为什么中文通常需要更大的词表或者为什么同一个模型里的中文 token 数总像是比英文多。原因是 BPE 是以字节/字符子串为统计单位的英文天然的 subword 结构比如“un-”、“-ing”出现频率高容易合并成较长 token中文每个汉字在词表里基本是一个独立单元虽然信息密度不低但连续数字符单位时统计上的复用结构不如英文的 subword 那么强导致同样的语义消耗更多 token。这也是我们在选择中文大模型时会专门关注 vocab size 和 token 效率的原因。还有一个容易被忽略的点tokenizer 和“数据标注”界面的关系。做 SFT 数据集时如果文本清洗不一致比如半角全角混用、表情符号被截断tokenizer 可能把同一句话切成不同组合这些数据会直接影响后续训练维度尤其是把问题和答案拼接起来算 loss 时的“换行/分隔符”设计都是要靠实际跑出来的。很多团队会在标注规范里明确规定“统一转半角、移除控制字符、保留自然断句”本质上就是为了让 tokenizer 行为稳定。2.4 问题四训练 7B 模型显存爆了你会怎么办这个问题是我见过最能拉开候选人的一题。不会的人会直接说“换更大的显卡”或“用 Deepspeed”而会的人会先快速算一笔账。我面试时很看重这个“先算账”的动作因为它体现的是你有没有真正在 GPU 上训过模型而不是只看过教程。先算静态账一个 7B 参数模型单是 BF16或 FP16参数就要占用约 14GB7B × 2 字节。训练时还要在内存里维护梯度又一个 14GB以及优化器状态——如果用 AdamW通常会保存一阶、二阶矩再加一份 FP32 master weights大概是参数量的 3 倍多一点也就是 30GB 上下。三者相加已经接近 58GB还没算激活值和通信缓冲。所以一张 40GB 或 48GB 的卡直接全量训练OOM 几乎是必然这还不是玄学是小学数学。在这个基础上解决方案就可以按大头往下排第一混合精度训练BF16/FP16是最基础的一刀直接把参数和梯度的显存砍半第二用 ZeRO/FSDP 把优化器状态或者梯度、参数按 rank 切分多张卡分摊第三开启激活重计算activation checkpointing把部分激活在前向时不保留、反向时重新算用更多计算换更少显存第四如果评估下来只是做微调可以用 LoRA 这类参数高效微调新增大参数的显存占用就很低第五想增大有效 batch size 又不想爆显存就先做梯度累积把若干小 batch 的梯度加起来再更新。这里有个很个人的心得面试时回答“显存不够怎么办”最重要的是有优先级而不是把名词全背一遍。你的话术可以是先判断瓶颈在哪里如果是模型参数和优化器状态就用混合精度和 ZeRO如果是激活值就开 checkpointing如果是我们只是要小样本适配下游任务那直接上 LoRA 最经济。最后补一句“具体还要实际用 nvidia-smi 看内存分配曲线再下结论”这个回答基本就是满分答案。3. 后半场四连击评估、长文本、幻觉与部署3.1 问题五模型效果怎么评估才算靠谱评估题几乎是所有 LLM 面试都会有的但很多人只会回答“用 BLEU 和 ROUGE 看效果”这在今天已经完全不够了。除非是做机器翻译这种输出空间相对受限的领域BLEU 和 ROUGE 在开放生成里问题很大它们依赖 n-gram 重合度如果模型换了种更自然的说法字面上的重合就会很低但语义其实完全正确。所以面试时要先把“不同粒度不同方法”这个框架给出来。我会把评估分成三层。第一层是语言模型自身的指标比如 perplexity困惑度它反映模型对 token 分布的建模能力但它和下游任务表现相关性有限。第二层是常用的文本相似度指标包括 BLEU、ROUGE、METEOR 以及向量语义层面的 BERTScore这类指标适合答案空间相对固定的任务。第三层才是大模型时代最关键的按能力维度跑 benchmark。比如 MMLU 测世界知识与推理GSM8K 测数学和思维链HumanEval 测代码正确性HellaSwag 测常识推理IFEval 测指令跟随TruthfulQA 测事实性和幻觉。每一份能力标签都对应你希望模型在生产里发挥的角色。面试时如果能把这些 benchmark 和“为什么不能只看总分”讲明白就已经胜过很多人了。更进阶的加分点是聊评估工程的坑比如评测时要统一输入输出格式、固定最大生成长度、固定随机种子否则结果不可比还要警惕数据污染——预训练数据里如果包含评测集模型成绩可能虚高现在社区通常会跑 lm-evaluation-harness 这类的标准工具来保证结果一致。另外实用中越来越多团队用大模型当裁判LLM-as-a-judge但要注意位置偏置比如让两个候选回应对调再评一次才能减少偶然偏差。实操心得准备面试时至少要能说出 3 个 benchmark 的名字和它们分别测什么能力。这个是性价比很高的基本功比背诵一堆模型背景有用得多。3.2 问题六超长上下文RoPE 解决了什么长文本的问题在真实业务里几乎天天遇到要处理合同、论文、技术文档动辄几万字。面试官问 RoPE表面上是问位置编码实际上是想知道你有没有思考过“模型在位置上是怎么理解句子的”。先说为什么需要位置编码Attention 机制本身对 token 顺序是不敏感的“我爱苹果”和“苹果爱我”在标准 attention 内部结构里是等价的必须额外注入位置信息。早期 Transformer 用绝对位置编码sinusoidal它在训练长度内没问题但一旦序列长度超过训练范围外推表现经常崩。原因是绝对位置编码无法让模型自然地泛化到没见过的位置区间而相对位置信息在长序列里更本质。RoPE 的做法是把 q 和 k 按维度两两分组对每个 2 维子空间施加一个旋转矩阵旋转角度由 token 绝对位置决定。这里的关键性质是这个旋转操作不改变向量的模长但是 q 和 k 的内积会自然变成一个只和“两个 token 的位置差”有关的函数。也就是说RoPE 虽然形式上是绝对位置注入但最终参与 attention 打分的是相对位置差这就同时拿到了绝对编码的简易性和相对编码的泛化能力。接下来面试官通常会追加外推的问题。一个新训练了 4K 上下文的模型你直接让它读 64K 长文RoPE 在高位维度上的旋转角度早已超出训练分布QK 点积计算的“相对距离”错乱会出现所谓“旋转过度”现象。工程上常用的做法有位置线性插值把所有位置除以一个缩放因子硬压回训练范围、NTK-aware 缩放对高频维度保持旋转速度只降低低频维度的速度尽量保留短文本附近的局部性、以及动态 NTK/渐进插值等。更激进的还有注意力机制层面的窗口化、streaming 技术配合 KV cache 管理可以在有限显存里塞下超长输入。如果你只记住一句话去答这道题那就是RoPE 给模型提供了一个既能表达绝对位置、又天然拥有相对位置内积的位置编码方案长文本外推的难点不是“长度变大”本身而是位置信号超出训练分布后的行为失控。3.3 问题七幻觉真的能压下去吗幻觉问题近年来已经从一个学术话题变成了产品事故的导火索所以面试官问这个问题时通常不是想听你背诵定义而是想知道你会怎么设计一个“可靠系统”。你可以先把幻觉分成两类一类是事实性幻觉模型说出了一个在现实世界里不存在的事实另一类是忠实性幻觉模型没有遵循用户给定的上下文或指令比如让它只用文档回答它却加入了自己记忆里的内容。这两类的应对方法很不一样。为什么会有幻觉我的解释是大模型的目标函数是预测下一个 token而不是验证事实。它学到的知识来源于训练数据里的统计规律对于长尾知识、数字细节、实时事件模型的置信度本身就是模糊的。再加上自回归生成是逐 token 采样早期一个错误 token 会被后续生成放大形成一段非常流畅的错误。所以“幻觉”并不是一个可以被一个开关消除的问题它是语言模型机制的一部分。但面试里你不能也摆摆手说“没办法”。工程上能用的手段我至少能列出一套检索增强RAG把可靠的事实片段读进上下文约束模型基于文档作答解码约束比如在时间、数字这类高风险字段上用外部工具校验或强制匹配训练侧增加拒答样本在 SFT 阶段让模型学会在信息不足时明确说“不知道”评测侧引入 TruthfulQA 和 FactScore 这类指标给幻觉打分。最容易被面试官认可的是你还能补一句如果是面向 agent 应用那就不能只靠模型自觉要在系统层做容错设计比如对模型输出做一致性校验、设置重试策略、关键步骤要求用户确认。这套说法正好对应当前行业里越来越热的“智能体可靠系统”工程实践说明你不只是在单点解决模型问题而是把它当成整个系统可靠性的一部分。3.4 问题八部署让模型跑得快你了解多少这道题是模型岗和推理优化岗的高频题但普通算法工程师也躲不掉因为现在大家都要落地。面试官问部署第一个想听的是“你会不会根据约束选型”而不是“你背过多少个框架名”。回答的第一个层次是量化。模型权重用 FP32 在部署时很奢侈但实际推理往往不需要那么高的精度于是就有了 INT8、INT4 等低比特量化。量化分为训练后量化PTQ和量化感知训练QAT两种路线LLM 时代主流是 PTQ因为训练成本太贵。常见方案里GPTQ 和 AWQ 是权重方向的主流SmoothQuant 处理的是激活值里的异常大值问题LLM.int8() 则用混合精度分解。对本地或端侧场景GGUF 是 llama.cpp 生态的权重打包格式经常配合 4-bit 量化使用我曾经在安卓设备上跑过一个 7B 模型的 GGUF 版本Q4_K_M 量化后权重大概 4GB 多手机内存 8GB 上能用 CPU 推理出结果速度谈不上快但作为端侧离线方案已经足够验证产品想法。这类具体到“我跑过”的细节很容易给面试加分。第二个层次是推理框架对吞吐和延迟的优化。vLLM 这个名字现在基本是标配它靠 Continuous Batching 实现动态合并到达的请求、用 PagedAttention 把 KV cache 像虚拟内存一样分页管理从而大幅提高显存利用率和吞吐。面试官如果追问“为什么 vLLM 比普通框架快”核心答案就是这两点而不是“它用了更好的 C 实现”。另外 KV cache 本身也是大头模型架构层面已经有很多优化思路比如 MQA/GQA 让多头 query 共享 KV大幅减少 KV 量DeepSeek 的 MLA 更进一步。答出“GQA 是从架构上压 KV cache”这个点就开始有深度了。第三个层次要有个整体观个人实验和原型阶段用 GGUF 加 llama.cpp 或 Ollama、LLM Studio 这类本地工具足够线上高并发服务才需要考虑 vLLM 这类推理引擎如果模型还要继续训练那就回到上一题谈的训练优化。面试官通常很吃这一套“目标决定选型”的表述因为很多只会背框架的人说不出为什么在这些框架之间取舍。4. 实战拷问面试表达与避坑实录4.1 从答案到表达哪些话让你加分哪些话让你出局技术面试的残酷之处在于知识本身只是底线表达方式才是区分度。同样一个 point表达方式不同分数天差地别。我整理了几条实战观察供你对照自查。第一先说结论再给推导。比如“Attention 除以 sqrt(d_k) 是为了让点积方差回到 1 量级避免 softmax 进入梯度饱和区”这就是一句可以作为开场白的结论。很多人习惯从背景讲起讲三分钟还没到结论面试官很容易失去耐心。第二任何名词都要能落到“它省了什么、贵了什么、什么时候该用”。问你 Deepspeed不要只说它是分布式框架要拆开它顺次切分优化器状态、梯度、参数不同 stage 有不同通信开销和显存收益。第三不知道就立刻说明然后把你确定的边界画出来。面试官最怕的不是你不会而是不会还装作会然后顺着你淡定的语气继续追问场面会越来越难看。正确的做法是“这个点我理解到 cut-off 这里后面我根据已知推断一下你说得不对请纠正。”这种姿态反而会让很多面试官愿意给你提示。我还发现一个高频减分项空话太多没有数据支撑。比如回答说“我的模型效果还不错”不如说“我在 3K 条人工标注数据上做了 SFT在 GSM8K 上从 18% 涨到 34%但是遇到更复杂推理和格式稳定性的问题还在调”。数据说出来专业感马上就起来了同时这些数据也会给面试官留下追问的抓手反而更聊得开。4.2 我踩过的面试坑和复盘建议最后这段我想说点比较个人的复盘经验可能比任何知识清单都更接近实战。我第一次面大模型岗位的时候其实准备得挺充分的但有一个致命失误凡是我不确定的问题我习惯用很长的铺垫来拖延比如“这个问题其实要分情况看”“从某种意义上来说”讲了半天面试官根本抓不到我的真实观点。后来我改了一个习惯每道题回答都强制自己用一个“总—分—合”结构30 秒给结论中间展开细节最后收一句“落地时我会重点看什么”。这个改变对我帮助很大也让你在紧张状态下不至于越说越散。还有一个从失败里总结出来的点不要只准备“问题”不准备“反例”。面试官很喜欢在你答完标准答案后追加一句“那如果不除以 sqrt(d_k)给你一个已经有问题的模型你怎么知道是这里出了问题”这种问题背后考察的是调试思路。我的建议是准备一两个自己真正跑过的端到端 mini 项目比如用开源模型搭一个本地 RAG 问答把自己的知识库像 Obsidian 笔记接进去或者把一个量化模型部署到端侧。不需要多大规模关键是你能讲清楚数据流、哪个环节慢、哪个环节会出幻觉、你是怎么排查的。这类项目经验往往能把前面的理论问题一次性串起来这比背任何面经都管用。每次面试结束后我会当天立刻把没答好的问题记到备忘录里用“如果重来一次我会怎么答”的句式重新写一遍。两周后再看一遍通常会有完全不同的理解。坚持几轮以后你会明显感觉到面试不是知识的终点反而是一个高效暴露自己认知边界的过程。这 8 个问题你可以当作起点但更重要的是在每一次复盘里把模型的内外细节都翻一遍。