☰
大模型岗位面试高频8问:Transformer、RAG、微调、推理优化全解析
2026/10/26 14:20:33 网站建设 项目流程

最近后台收到好多读者留言,说准备大模型岗位的面试,投了简历却心里没底,不知道面试官到底会问什么。问的人多了,我决定把过去大半年帮人做模拟面试、以及自己在团队里实际面试候选人时反复用到的高频问题整理出来。这篇文章只聊最核心的 8 类问题,每一类都对应一个必须搞清楚的知识点——这 8 个问题如果答不利索,后面聊再多项目经验也很难翻盘。不管是准备跳槽的算法工程师,还是刚入行想做 LLM 应用开发的工程师,这份清单都能帮你快速校准复习方向。

1. 内容整体设计与思路拆解

先说一个很多人容易误解的地方:LLM 面试和传统算法面试不一样,面试官不是在考你背概念,而是在考你处理未知问题的思路。Transformer 的细节可以查资料,模型参数量可以查论文,但面试现场最值钱的,是你听到一个问题之后能不能快速把它拆解成"模型能力边界在哪、数据从哪来、效果怎么测"这三件事。

我梳理这 8 个问题的时候,刻意覆盖了 LLM 全生命周期:从模型原理、训练数据、微调对齐,到推理部署、评测应用,再到 Agent 编排和长文本处理。为什么这么排列?因为真实业务里的 LLM 工程师绝不只负责训练或只负责部署,你要能看懂整条链路上每个环节之间的约束关系。比如做 RAG 的人如果不懂 tokenizer 的分词差异,就不知道为什么换一个嵌入模型之后检索效果会突变;做推理优化的人如果不懂指令微调的数据格式,就无法判断一个量化模型的效果下降是因为精度损失还是因为基座本身就没对齐好。

另一个设计思路是:每个问题都配了面试官的实际追问。这是我这篇文章最想强调的部分。很多求职者准备面试时喜欢背标准答案,但标准答案只能应付第一问,面试官真正用来筛人的是追问。追问不是你背过的内容,而是你答案里每个关键论断的反面验证。比如你说"用 RAG 解决幻觉",面试官一定会追问"RAG 检索出来的上下文本身是错的怎么办",你能接住这个追问,才说明你是真的在业务里见过这个问题。

我在团队里面试过不少候选人,发现一个规律:前 30 分钟聊简历项目经验,大多数人都能讲得头头是道;一旦我把问题从"你做了什么"转向"为什么这么做、换一种做法会怎样",立刻就能拉开差距。这 8 个问题其实就是从"why"和"what if"这两个角度设计的,目标是把那些只靠项目堆砌、缺乏深度思考的人筛掉。

2. 核心细节解析与实操要点

2.1 问题一:Transformer 为什么用自注意力而不是 RNN

面试官问这个问题,表面上是考察基础,实际上是想确认你对序列建模的本质有没有直觉判断。如果你只会说"Transformer 效果好所以用它",这题基本就凉了。要答好,需要从三个层面展开。

第一层是并行性。RNN 的隐藏状态必须按时间步顺序计算,t 时刻的输入依赖 t-1 时刻的隐状态,这是硬串行。而自注意力在计算每个位置的表示时,可以直接看到序列中所有位置的 token,互相之间没有依赖关系,可以用矩阵乘法一次性算完。这个差异直接决定了训练效率:同样一批数据,RNN 在 GPU 上只能利用一个时间步内的并行度,Transformer 可以把整个序列的长度维度也变成并行维度。

第二层是长距离依赖。RNN 处理长序列时,信息要通过循环单元一步步传递,每一步都有可能发生衰减或丢失,梯度也需要跨越很长的路径才能回传,容易出现梯度消失。自注意力不管两个 token 在序列中相距多远,计算它们之间交互的路径长度都是 1——直接做一次点积,所以长距离依赖建模能力天然更强。

第三层是全局感受野。CNN 是靠堆叠层数来扩大感受野的,RNN 是靠逐步递推累积信息,而 Transformer 第一层就直接拥有全局视野。这也是为什么后期做长文本模型时,架构上基本没有人回头用 RNN 了。

追问版本很常见:"自注意力的复杂度是 O(n²),长序列怎么办?"这里要提到稀疏注意力、滑动窗口注意力,还有 FlashAttention 这种 IO 优化的思路,最好是结合 DeepSeek 或 Qwen 这类开源模型实际用的注意力变体来说。

2.2 问题二:tokenizer 的分词粒度影响什么

这个问题很多人忽视,但我认为它是 LLM 面试里最被低估的考题。原因是它和生产实践里的关系极其隐蔽——你只有在做数据标注、做微调、做检索切分时才会真正踩到它。

先说最基础的:tokenizer 有三种主流方案。BPE(Byte Pair Encoding)从字符级开始迭代合并高频字节对,词表大小可控;WordPiece 类似 BPE,但合并标准用的是语言模型似然增益;SentencePiece 则把空格也当成一种 token,支持直接处理原始文本。现在的主流模型大多基于 BPE 或 SentencePiece。

面试官真正想听的是:分词粒度如何影响模型效果。分词太细,序列会很长,算力消耗大,而且单个 token 可能缺乏语义完整性;分词太粗,词表爆炸,而且遇到没见过的新词就无能为力。中文场景下这个问题尤其明显:一个中文汉字在 BPE 词表里经常被拆成多个字节级别的 token,这会让模型对中文的语义理解变得低效。所以后来才有"中英混合词表""多语种 tokenizer 扩展"这些方向的优化。

实操层面的考点我补充两个。第一个是:做 RAG 时的切块策略要配合 tokenizer。你如果按字符数切文档,切出来的块经过 tokenizer 编码之后长度可能远超模型上下文限制;如果你按 token 数切,就要注意切在了一个词的中间,导致语义不完整。第二个是:指令数据集的 max_length 设置最终取决于 tokenizer 的实际编码结果,不是看文本字符数。我在实际做数据标注时,见过不少人因为没搞清楚这一点,导出的样本全部被截断了尾巴。

2.3 问题三:训练数据怎么标、量级多大

数据标注是 LLM 训练里最脏最累但绝对绕不开的一环。面试官问这个问题,通常是想了解你是否真的碰过真实数据,而不是只跑过开源数据集。

你需要讲清楚数据类型的分层:预训练数据是海量无标注文本,重点在清洗和去重,常用的去重手段有 MinHash 和 Bloom Filter;指令微调数据需要质量远高于数量,通常包含人工撰写、LLM 生成后筛选、公开的指令数据集这几种来源;对齐阶段的数据更苛刻,需要人类偏好排序,做 RLHF 时要构造对比样本对。

我在实践中的经验是:数据质量评估是项目里最容易出现"拍脑袋"的地方。很多人觉得数据量多就行,实际上 LLM 的数据配比严重影响着模型行为。比如指令数据里客服问答占比高,模型就会在生成时倾向于客服口吻;代码数据占比高,模型在自然语言任务上可能出现句式生硬。面试里如果能顺带提一句"我们做数据配比实验时发现,把高质量代码数据从 10% 提到 30% 之后,模型在逻辑推理类任务上提升了 5 个点",这比你背一堆概念有用得多。

还要准备一个点:怎么防止数据泄露。测试集泄漏在 LLM 评测里是大忌,因为预训练语料是从网上爬的,如果不做重叠检测,评测分数会虚高到失去参考意义。做数据清洗时要用 n-gram 重叠检测把评测集相关的内容滤掉,否则后面吹上天的效果图其实都是自欺欺人。

2.4 问题四:微调和 RAG 怎么选、怎么组合

这道题我认为是当下 LLM 应用面试中出现频率最高的问题,因为几乎所有业务落地都要面对这个选择:模型表现不好,到底是回去微调,还是找个向量数据库做 RAG?

先理清两者本质。微调是改变模型权重,把新知识写进参数里,适合模型能力本身结构性欠缺的场景,比如让模型学会某种固定的输出格式、掌握某个领域的专业表达风格。RAG 不改变权重,它把外部知识放在推理时动态检索并拼进上下文,适合知识频繁更新、需要可追溯答案来源的场景,比如企业内部的文档问答。

关键词是"组合使用"。我的实际建议是按下述流程决策:第一,看知识是否稳定。业务规则、产品文档这种相对固定的知识,可以直接微调;每天更新的新闻、价格、库存这类动态信息,必须走 RAG。第二,看错误类型。模型系统性输出格式错误,微调几乎必然有效;模型答错了但检索到的文档里其实有正确信息,说明是检索或生成环节的问题,不该动权重。第三,考虑维护成本。微调一次模型,测试回归成本很高;RAG 只需要更新知识库,可以做到每次发版零模型变更。

面试追问通常是:"RAG 效果不好,怎么排查?"这是一个链条问题。先检查召回:检出来的 top_k 文档到底相不相关,可以通过看检索得分分布和人工抽样判断。再检查上下文组织:多个文档拼在一起时,相关文档的位置如果排得太靠后,模型注意力可能不够。最后检查生成策略:同一个检索结果,换不同 temperature 和 prompt 模板,效果差异可能极大。我在实际项目里做过一个对比实验:同样的向量库,仅把 prompt 中的指令措辞调整了一下,正确率从 61% 提升到 74%,可见问题不一定出在模型上。

2.5 问题五:推理显存怎么算、怎么优化部署

部署工程师面试必考。面试官想确认的不是你会不会用 vLLM,而是你能否从头推算一个模型部署时到底需要多少显存,以及为什么用某一种量化方案。

先讲硬计算。推理时的显存占用主要由两部分构成:模型权重和 KV Cache。以 7B 模型为例,FP16 精度下权重占 14GB;如果加载到 GPU 时还带着梯度就不一样了,但纯推理只要权重。KV Cache 的大小需要按公式算:2(key 和 value 两份)乘以层数乘以每层 KV 头的维度乘以序列长度乘以 batch size,再乘以每个元素的字节数。比如 7B 模型 28 层、每层 8 个 KV 头、头维度 128,序列长度 4096,batch size 1,FP16 下 KV Cache 大约是 2×28×8×128×4096×2,算出来约 469MB。这个手算能力在面试现场非常加分。

再讲优化。第一是量化:INT8 基本是无损替换,INT4 一般搭配 AWQ 或 GPTQ 这种校准方法,效果损失可控。第二是 PageAttention:让 KV Cache 像操作系统内存分页一样按需分配,解决碎片浪费问题。第三是 Continuous Batching:请求粒度调度,不再等一个序列生成完才腾出位置,能把吞吐提升数倍。

追问方向是"prefill 和 decode 阶段优化有什么不同"。prefill 阶段是计算密集,大量矩阵乘可以灌满 GPU;decode 阶段是访存密集,每次只生成一个 token,瓶颈在显存带宽而不是算力。所以做推理优化时要分阶段分析:prefill 慢是矩阵算力不够,decode 慢是权重搬运带宽不够。关于"显存不够怎么办",可以从张量并行、流水线并行和 offload 三个角度谈,重点说明它们各自适用的卡数和瓶颈。

2.6 问题六:RLHF 里三个模型分别干什么

这个问题在入门级 LLM 岗位里出现频率略低于前几个,但一旦问到,通常是希望区分"用过"和"真懂"。很多人能答出"PPO 里有四个模型(策略模型、参考模型、奖励模型、价值模型)",但具体到每个模型什么时候更新、梯度怎么流,就讲不清了。

先讲 RLHF 完整链路。第一步是 SFT,行为克隆,让模型学会人类示例的格式和风格。第二步训练奖励模型:对同一个 prompt 生成的多个回答做两两比较,奖励模型学习预测哪个人类更喜欢,输出一个标量分数。第三步 PPO 强化学习:策略模型(初始化为 SFT 模型)生成回答,奖励模型打分,价值模型估计状态价值,用策略梯度更新策略模型。

这里面试官常设一个陷阱:"奖励模型分数变高,效果一定变好吗?"答案是:不一定。奖励模型本身是近似替代,它可能学会走捷径,比如生成更长、更复杂句式来讨好人类标注员,导致奖励黑客现象。这也是为什么现在大家都在探索 DPO——直接偏好优化,彻底绕开奖励模型这一步,用偏好数据直接优化策略,大幅简化训练流程且稳定性更好。我实测过 DPO 在指令跟随类任务上的表现,数据质量足够时效果是可以接近甚至超过两阶段 RLHF 的,但训练复杂度低了一个量级,这一点非常值得在面试中提到。

2.7 问题七:LLM 评测怎么设计才不算自嗨

LLM 评测是面试里最容易被轻视、但在真实业务里最容易出问题的环节。面试官问"模型效果怎么评估",如果你只说出 BLEU、ROUGE 这类指标,说明你还没经历过落地项目。

标准做法是分三层。第一层是公共基准:MMLU 考知识广度,GSM8K 考数学推理,HumanEval 考代码,Benchmark 分数用来和开源社区基线对比。第二层是业务场景评测:构造一个接近真实用户分布的测试集,包含典型请求、边界请求、恶意请求,把模型的输出逐条人工打分。第三层是线上指标回归:A/B 测试中用户反馈、任务完成率、平均用户满意度评分这些指标,才是终极意义上的评测。

必须提醒一个细节:公共基准和业务效果的关联度可能很低。一个在 MMLU 上刷到 90 分的模型,在特定业务领域可能表现稀烂,因为公共基准覆盖的知识范围和业务场景分布完全不同。所以我在我们团队里推了一套"三层评测法":先跑公共基准确认没有大幅度退化,再跑业务测试集看指令跟随和格式符合率,最后小流量灰度观察线上数据。三层都过了,才敢全量发布。面试官追问"如果只有一个星期设计评测,怎么最有效"时,我的答案是先盘点现有 bad case,把一周时间投入到最典型的 100 条 case 的评估集上,比盲目跑十个基准有意义得多。

2.8 问题八:Agent 编排怎么保证可靠性

Agent 是大模型应用面试里的热门方向,但也是很多人翻车的地方。因为聊到 Agent,面试官天然会质疑:Agent 看似灵活,但不可控怎么办?答不好这个追问,前面聊得再热闹也白搭。

Agent 的核心架构一般包含四部分:大模型作为决策大脑负责规划、任务拆解、工具调用选择和结果判断;工具集负责执行具体动作,比如搜索、代码执行、API 调用;记忆模块负责跨步骤保存状态;评价机制负责判断当前结果是否满足目标,不满足就进入下一次循环。面试官期望听到的不只是这个架构,而是你对失败的思考。

我整理过一个 Agent 容错控制清单,分享给你作为答题框架。第一,工具调用的参数校验:大模型生成的 JSON 不一定合法,需要模式校验和重试机制,我见过最多的问题就是参数缺字段或类型不匹配。第二,循环上限与超时控制:Agent 可能陷入反复调用同一个工具的死循环,必须在代码层面做最大步数限制。第三,中间结果检查点:每执行一步就把状态存下来,如果后续步骤失败可以回滚到最近的可用步骤,而不是从头开始。第四,评估驱动的终止条件:让评分器判断当前结果是否满足任务需求,而不是让模型自己用想法判断。

3. 实操过程与核心环节实现

这一节我讲两个真实场景,一个偏模型侧,一个偏应用侧,希望能帮你把上一节的问题串起来。

第一个场景是"7B 模型本地部署+评测闭环"。我先做显存推算:7B FP16 权重大约 14GB,加上序列长度 4096 的 KV Cache 约 0.5GB 和运行时开销,单卡 16GB 很紧张,推理速度也会受限。所以实际选用 INT4 量化:AWQ 校准后权重降到约 3.5GB,再加上约 1GB 的 KV Cache 和开销,单卡 8GB 也能跑,但吞吐一般,适合本地Demo或边缘端。

评测闭环我建议这样搭:先把模型跑在 vLLM 上部署一个 OpenAI 兼容的 API,再写一个评测脚本,读取业务测试集,批量请求 API,最后做两轮评估——第一轮用规则检查输出格式,第二轮用 GPT-4 作为裁判模型给回答打分。这里有个坑要提醒你:用 LLM 裁判打分时,最好把两个模型的回答打乱顺序盲评,因为裁判模型的位置偏好很严重,同一个回答排在前面和排在后面的得分能差出不少。

第二个场景是"RAG 系统的召回优化"。我遇到的具体问题是向量检索命中率偏低——用户问了一个业务问题,召回的文档里没有一条真正包含答案。排查过程分成三步:第一步检查切块粒度,发现文档被按固定字符数硬切,很多答案被拦腰截断在两个块里,导致每条检索结果都信息不完整。改成按语义段落切块之后,命中率立刻上升。第二步检查嵌入模型的上下文窗口,发现备选的嵌入模型窗口只有 512,长段落被截断。于是换成支持 8192 上下文的嵌入模型,同时把段落长度控制在 1000 token 以内。第三步引入关键词检索和向量检索的混合召回,用 BM25 补充向量检索对专有名词不敏感的问题。

这个例子说明什么呢?很多同学以为 RAG 效果不好是模型问题,我见过九成以上的 case 问题出在切块、嵌入窗口和检索融合这些"脏活"上。面试时讲到这个链条,比只回答"我做了 RAG"有说服力得多。

4. 常见问题与排查技巧实录

4.1 训练 loss 正常但生成效果一塌糊涂

这是我在真实项目里踩过最深的坑。模型训练时 loss 曲线平滑下降,每个 checkpoint 在验证集上的指标都正常,但生成结果却不忍直视:句式重复、答非所问、有严重的复读机倾向。

排查思路要分路走:第一路检查数据配比,看是不是某个类型的样本在训练集里占比过高,导致模型过拟合于该类别的表达模式。第二路检查生成超参,我发现 temperature 设太高且没有做 repetition penalty 时,生成质量明显下降,模型会陷入局部重复循环。第三路检查评估方式:loss 是下一个 token 的预测误差,和长文本生成质量的关联并不直接。Loss 下降只说明模型学会了训练分布,不代表生成策略没有退化。我的建议是,训练过程里每个 checkpoint 都抽出同一组固定 prompt 做生成测试,用肉眼观察生成质量变化,这个动作绝对不能省。

4.2 量化后效果掉点怎么定位

很多人觉得量化掉点是大模型精度必然损失,其实大部分掉点都可以追回去。我的排查顺序是:首先对比量化前后同一段文本的输出 logits 分布,用 KL 散度量化分布偏移程度,如果整体偏移不大,问题就不在量化本身。其次单独跑一遍 prefill 阶段的量化误差统计,关注哪些层的激活值异常,经常是某些特定层对精度更敏感,需要做混合精度量化——只把敏感层保留在 FP16。最后检查校准集和实际数据分布是否匹配,AWQ 和 GPTQ 这类方法依赖少量校准样本确定缩放因子,如果校准集和线上数据差太远,量化效果就会失真。

另一个经验:矩阵乘法在低比特下的误差容易被长序列放大。同一个模型,量化后跑短文本评测可能几乎无损,跑长文本时错误累积就会明显,需要结合长文本评测集验证。

4.3 多轮对话越聊越偏

做客服对话机器人时,我碰到过一种典型问题:第一轮回答很正常,到了第三轮就开始忘记前面说过什么,甚至给出与第一轮矛盾的回答。排查的主要原因有两个方向。

一个方向是上下文管理错误。很多系统在拼接多轮历史时,直接把所有轮次塞进 prompt,结果超出模型上下文窗口,最早的几轮被 tokenizer 截断。解决方法是做滑动窗口:只保留最近的 N 轮对话,或者用摘要模块把早期对话压缩成关键词列表。另一个方向是方向性漂移:模型在长上下文中对"当前意图"的注意力被历史信息稀释了,可以在每一轮用户消息前面显式标注任务目标;如果目标不变,就重复强调"你正在处理的问题是 X"。

这个案例说明:多轮对话的坑不在模型参数,而在系统设计。面试里能举出一个上下文管理的实际案例,比背一堆论文术语更能让面试官记住你。

4.4 常见问题速查表

问题现象可能原因排查手段
生成内容重复循环temperature 过高、未设 repetition penalty降低 temperature,加入 repetition penalty,检查训练数据多样性
微调后通用能力下降指令数据过拟合、数据配比失衡混入通用语料、缩减特定风格样本占比、早停
RAG 召回不相关切块不合理、嵌入窗口不够、检索融合缺失按语义段落切块、扩展嵌入模型窗口、混合检索
Agent 陷入循环缺少最大步数控制、缺少终止条件判断加循环上限、加结果评分器
量化后长文本掉点敏感层精度损失、校准集偏差混合精度量化、重新采样校准集
多轮对话忘记前文上下文窗口溢出、历史拼接方式不合理滑动窗口、摘要压缩、显式任务标记

这个表是我自己在项目复盘时整理的,每次排查问题我基本都按这张清单走,效率非常高。面试时可以把它作为答题的框架性工具,但不要背表格——要把每个场景背后的思考过程讲出来。

5. 一些补充的面试经验和准备建议

最后再分享一点个人体会。我观察到来参加 LLM 岗位面试的人,明显分成两类:一类面试前三天集中背题,另一类平时就在持续做小实验、写技术复盘。面试官大概率会在半小时内判断出你是哪一类,因为追问题目就像照妖镜,背过的东西一追问就碎,做过的项目越追问越有料。

所以我的核心建议是:把面试准备当作一次项目复盘来做。每个高频问题,都先用大白话给自己讲一遍原理,再做一个小实验验证,最后写一段一两百字的自我回答。这轮走完,你对问题的理解深度会远超临时抱佛脚的人。

再补充一个具体的准备节奏。基础薄弱的话,优先吃透 Transformer 架构、tokenizer 原理和 RAG 链路这三件事,因为它们构成 LLM 领域的最小知识闭环;如果你已经有项目经验,则把精力集中在两个地方:一是把项目里所有技术选型的"为什么"补齐,二是把遇到过的失败案例整理成"问题+排查过程+解决方案"的结构化记录。面试官最喜欢听到的就是这种诚实的失败复盘,它比十个成功案例更能说明你的工程能力。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询