简介:这份PDF资料整理自字节跳动大模型算法岗一面、二面、三面的真实面试记录,面向准备冲击大厂算法岗位的求职者,尤其是已有一定深度学习基础、希望系统梳理大模型知识体系的中高级候选人。内容覆盖Transformer与LLaMA的LN差异、RMSNorm与FFN手写、数据清洗与质量过滤、PPL公式、位置编码、Prompt范式设计、主流LLM结构特点、DeepSpeed各阶段分片与代价、DP与DDP区别、训练监控与数据配比量化、预训练与SFT评估、decoding策略等高频考点,并附cross-attention等手撕代码题。资源包共1个PDF文件,约75KB,轻量便携,适合面试前集中复盘。已有175人学习,可帮助读者快速把握字节大模型面试的提问脉络与考察深度,对照查漏补缺,提升应答准备度。
1. 大模型算法面试到底在考什么:从一道“LN 和 RMSNorm 有啥区别”说起
如果你最近翻到一份大模型算法岗的面经,看到第一题就是“Transformer 和 Llama 的 LN 有什么区别”,大概率会愣一下:这两个词我都认识,可它们到底在比什么?其实这类问题的本质,不是让你背定义,而是看你能不能在“模型结构”这层把话说清楚。大模型算法面试考的不是八股文默写,而是一条完整的链路:数据怎么洗、模型怎么搭、训练怎么盯、效果怎么评。这份面经把一面到三面的题目串了起来,从论文拷打、手写 RMSNorm,到数据配比、DeepSpeed 分片、cross-attention 手撕,覆盖的正是这条链路。搞懂它,你就能明白大模型算法岗到底在找什么样的人,也能对照自己的知识地图查漏补缺。
2. 一面为什么先问结构和数据:模型的地基决定上层表现
一面通常是最“硬”的一轮,题目密集、节奏快,面经里提到“当天约面”,说明筛选效率很高。这一面的题目集中在两块:模型结构和数据清洗。看起来是两件事,其实是一体两面——结构决定模型能学什么,数据决定模型能学到什么。
2.1 LN 和 RMSNorm 的区别:归一化到底在归一什么
先打个比方。假设一个班的学生考试分数忽高忽低,老师要排名,就得先把分数“标准化”一下,让不同科目的分数能放在一起比。归一化层干的就是这件事:把每一层输出的数值拉到相对稳定的范围,防止训练时数值爆炸或消失。
Transformer 原始结构用的是 LayerNorm(LN),它做两件事:减均值、除标准差。公式大致是(x - mean) / sqrt(var + eps) * gamma + beta,其中gamma和beta是可学习的缩放和偏移参数。Llama 系列换成了 RMSNorm,只除均方根,不减均值,也去掉了beta偏移项,公式变成x / sqrt(mean(x^2) + eps) * gamma。
区别在哪?通俗地说,LN 是“先居中再缩放”,RMSNorm 是“只缩放不居中”。为什么 Llama 敢去掉减均值?因为实践中发现,减均值那一步对最终效果贡献不大,但计算量实打实存在。去掉之后,RMSNorm 计算更省、数值更稳,在大模型这种参数量下,省下来的就是真金白银的训练时间。面试官问这个,不是要你背公式,而是看你知不知道“为什么这么改”以及“改了之后代价是什么”。
手写 RMSNorm 是常见的手撕题,核心就几行:
import torch import torch.nn as nn class RMSNorm(nn.Module): def __init__(self, dim, eps=1e-6): super().__init__() self.eps = eps self.weight = nn.Parameter(torch.ones(dim)) # 只有缩放,没有偏移 def forward(self, x): # 对最后一维求均方根,keepdim 保持形状便于广播 rms = torch.sqrt(torch.mean(x ** 2, dim=-1, keepdim=True) + self.eps) return x / rms * self.weight这段代码的关键在dim=-1:归一化是在特征维度上做的,不是 batch 维度。eps防止除零,weight是可学习的缩放。面试时如果被追问“为什么没有 bias”,答案就是上面说的:偏移项在实践中被证明可以省掉。
2.2 FFN 和激活函数:ReLU 与 SwiGLU 的取舍
FFN(前馈网络)是大模型里参数量占比很大的一块。原始 Transformer 的 FFN 是“线性层 → ReLU → 线性层”,ReLU 简单粗暴:负数直接归零,正数原样通过。SwiGLU 则复杂一些,它用两个线性层做门控,再乘一个 Swish 激活,形式大致是(xW1) * swish(xW2)再过一个输出层。
打个比方,ReLU 像一个只有“开”和“关”的开关,SwiGLU 像一个可以调节亮度的旋钮。门控机制让模型能更细腻地控制信息流,实践中 SwiGLU 在同等参数量下往往效果更好,所以 Llama 等主流模型都用了它。代价是计算量和参数量增加,通常会把隐藏维度调小来平衡。面试里问“FFN 有什么不同”,考的就是你能不能把“结构变化”和“效果、代价”连起来说。
2.3 数据清洗:质量过滤为什么绕不开 PPL
面经里问“数据清洗流程、质量过滤用什么模型、PPL 公式是什么”。PPL 就是困惑度(Perplexity),通俗理解是“模型看到这段文本时有多惊讶”。公式是PPL = exp(-(1/N) * Σ log P(w_i)),其中P(w_i)是模型给每个词的概率。PPL 越低,说明文本越符合模型学到的语言规律,通常质量越高。
质量过滤的常见做法是:用一个小的语言模型给海量文本打分,PPL 过高或过低的都筛掉——过高可能是乱码或低质内容,过低可能是重复模板。除了 PPL,还会用分类器判断是否像“百科、书籍、代码”这类高价值内容。面试官问这个,是想确认你知不知道数据不是“越多越好”,而是“越干净越配比合理越好”。
3. 二面为什么转向训练和评估:从“会搭”到“会训”
一面考的是零件,二面考的是整机。面经里二面题目明显更“系统”:数据配比思路、主流 LLM 结构特点、如何评估 LLM、训练最大困难、工具调用怎么实现。这一轮想看的,是你有没有真正参与过一个模型从数据到上线的完整过程。
3.1 数据配比:为什么“多喂一点”不是答案
数据配比指的是不同来源数据(网页、书籍、代码、问答等)按什么比例混合。面经里问“数据配比能说下思路吗”“数据配比怎么量化才是一个好的方案”,这是大模型训练里非常核心又很玄学的问题。
通俗地说,配比就像配营养餐:蛋白质、碳水、维生素都得有,但比例不对,要么长不壮,要么消化不良。代码数据多了,模型推理和结构化能力强,但自然语言流畅度可能下降;网页数据多了,覆盖面广,但噪声也大。好的配比方案通常不是拍脑袋,而是小规模消融实验:固定总 token 数,改比例,看下游 benchmark 表现,再逐步放大。量化指标可以是各领域验证集上的 loss 或任务准确率,也可以是数据本身的多样性、重复率统计。
这里容易踩坑的是“只看总量不看分布”。很多团队血泪经验是:数据总量上去了,但某类数据严重不足,模型在特定任务上就是不行。所以配比要跟评估集对齐,评估集覆盖什么,配比就得照顾什么。
3.2 如何评估 LLM:自动指标和人工判断缺一不可
面经问“如何评估 LLM 训 LLM 最大的困难是什么”。评估大模型不像评估分类器看准确率那么简单。常见做法分三层:第一层是自动 benchmark,比如知识问答、推理、代码生成等标准测试集;第二层是困惑度等语言建模指标,看模型对留出数据的拟合程度;第三层是人工评估,看回答是否有用、无害、诚实。
最大的困难在于“评估和真实体验之间的 gap”。benchmark 分数高,不代表用户觉得好用;人工评估又贵又慢,还带主观性。所以实践中往往是自动指标做筛选,人工评估做校准,再结合线上反馈迭代。面试官问这个,是想看你有没有意识到“评估不是打分,而是决策依据”。
3.3 工具调用和推理天花板:模型能力的边界在哪
工具调用指的是模型在回答过程中调用外部函数或接口,比如查天气、算数学、搜资料。实现上通常是把可用工具的描述放进 prompt,让模型输出结构化的调用请求,系统执行后再把结果喂回模型。难点在于模型要判断“什么时候该调、调哪个、参数怎么填”,这考验的是指令遵循和规划能力。
面经还问“LLM 推理能力的天花板现在是什么程度”。这个问题没有标准答案,但可以这样理解:当前模型在常见推理任务上表现不错,但在需要多步严谨推导、长链条规划的场景下仍会出错。天花板受限于训练数据的覆盖、模型规模、以及推理时计算量的分配。回答时能说清“能力边界和限制因素”,比硬给一个结论更让面试官信服。
4. 三面为什么盯硬件和训练细节:工程落地才是真功夫
三面题目画风一转:硬件利用率、DeepSpeed 几个阶段、训练时间估计、DP 和 DDP 区别、最多用过多少张卡、训练监控、预训练数据处理、encoder-decoder 区别、decoding 策略。这一轮考的是“你能不能把模型真正训出来”,偏工程和系统。
4.1 DeepSpeed 的几阶段分片:省显存的钱从哪来
DeepSpeed 的 ZeRO 分三个阶段,核心思路是把训练状态切开放到不同卡上,用通信换显存。通俗地说,原来每张卡都要存一份完整的模型参数、梯度和优化器状态,显存吃不消;ZeRO 把这些“切碎”分给各卡,需要时再通信拼起来。
| 阶段 | 分片对象 | 主要代价 |
|---|---|---|
| ZeRO-1 | 优化器状态 | 通信量增加,显存节省有限 |
| ZeRO-2 | 优化器状态 + 梯度 | 通信进一步增加 |
| ZeRO-3 | 优化器状态 + 梯度 + 参数 | 通信开销最大,显存最省 |
面试里问“分别分片什么、代价是什么”,就是看你知不知道“省显存不是免费的”,每多切一层,卡间通信就多一层。实际选型要看模型大小、卡数和带宽,不是无脑上 ZeRO-3。
4.2 DP 和 DDP 的区别:数据并行到底并行在哪
DP(DataParallel)和 DDP(DistributedDataParallel)都是数据并行,但实现方式不同。DP 是单进程多线程,主卡负责汇总梯度再分发,容易成为瓶颈;DDP 是多进程,每张卡独立算梯度,通过 all-reduce 同步,效率更高。打个比方,DP 像一个组长收作业再统一发回,DDP 像每个人自己把结果同步到共享白板。大模型训练基本都用 DDP 或更上层的方案,DP 因为主卡瓶颈已经很少用了。
4.3 训练监控和预训练数据处理:看不见的活最费心
面经问“训练过程如何做模型监控”“讲一下预训练数据处理”。监控不只是看 loss 曲线,还要看梯度范数、学习率、吞吐、显存占用、各层激活值分布。loss 突然飙升可能是数据问题或数值不稳定,梯度爆炸往往要调 clipping。预训练数据处理则包括去重、去噪、脱敏、格式统一、分词统计等,每一步都会影响最终效果。
这里有个容易翻车的点:很多人以为预处理做完就一劳永逸,实际上数据管道要跟训练同步迭代,发现某类数据导致 loss 异常,就得回头查清洗规则。面试官问这些,是想确认你有没有“盯过训练现场”的经验,而不是只跑过 demo。
5. 常见误区:这几个概念最容易在面试里搞混
面经题目密集,很多概念长得像,初学的人很容易混。下面几条是高频易混点,每条按“易混在哪、为什么混、怎么区分”说清楚。
5.1 LayerNorm 和 BatchNorm 不是一回事
易混点:都叫归一化,都涉及均值和方差。为什么混:名字像,公式也像。怎么区分:BatchNorm 在 batch 维度上统计,依赖 batch 大小,适合图像;LayerNorm 在特征维度上统计,不依赖 batch,适合变长序列。大模型输入长度不一,用 BatchNorm 会很不稳,所以用 LN 或 RMSNorm。
5.2 预训练和 SFT 的评估目标不同
易混点:都是“训练模型”,都用 loss 衡量。为什么混:流程上确实是先后关系。怎么区分:预训练看的是语言建模能力,评估常用困惑度和通用 benchmark;SFT(监督微调)看的是指令遵循和任务表现,评估更依赖具体任务测试集和人工判断。拿预训练的 PPL 去判断 SFT 好坏,就是用错了尺子。
5.3 encoder-decoder、encoder-only、decoder-only 别只记名字
易混点:三种结构都能做 NLP。为什么混:名字只差一个词。怎么区分:encoder-only(如 BERT)擅长理解类任务,用双向注意力;decoder-only(如 GPT 系列)擅长生成,用因果注意力;encoder-decoder(如 T5)兼顾理解和生成,有交叉注意力。面经里手撕 cross-attention,考的就是 encoder-decoder 里那根“连接线”。
5.4 decoding 策略不等于模型能力
易混点:以为换个 decoding 策略就能让模型变聪明。为什么混:greedy、beam search、top-k、top-p 确实影响输出。怎么区分:decoding 是在模型给出的概率分布上做选择,改变的是“怎么挑词”,不改变模型本身学到的知识。温度调高会让输出更多样,但不会让模型知道它原本不知道的事。
5.5 硬件利用率和卡数不是线性关系
易混点:以为卡越多训练越快。为什么混:直觉上资源越多越好。怎么区分:卡数增加会带来通信开销、负载不均、数据管道瓶颈,利用率可能不升反降。面经问“最多用过多少张卡”“硬件利用率”,就是看你有没有真实的大规模训练体感,而不是纸上谈兵。
6. 什么时候该用这份面经、什么时候别把它当标准答案
这份面经的价值,在于它把大模型算法岗从一面到三面的考察链路摊开给你看:一面看结构和数据的基本功,二面看训练和评估的系统观,三面看工程落地的真实经验。如果你正在准备大模型算法面试,或者想判断自己离“能独立参与训练”还差哪些模块,它可以当一张对照表用——逐题问自己能不能讲清楚“是什么、为什么、代价是什么”,讲不清的就是要补的洞。
但它也有明确的边界。第一,面经是别人的经历,题目顺序和侧重点因团队、因面试官而异,别把它当成题库去背答案。第二,里面很多问题是开放性的,比如“数据配比怎么量化才是一个好方案”“LLM 推理天花板”,没有唯一解,面试官要的是你的思考过程,不是标准结论。第三,它偏重概念和思路,不替代动手:RMSNorm 你手写过一遍,和只看公式,面试时的底气完全不同。
我自己的习惯是,每次看到这类面经,不急着收藏,而是先挑三道题,合上资料用自己的话讲一遍,讲卡壳的地方记下来,再去查、再去写。有一次我以为自己懂了 DeepSpeed 分片,结果一开口就说不清 ZeRO-2 到底省了什么、代价在哪,回头补了半天才理顺。从那以后我每次准备面试,都强制走一遍“讲给自己听”的流程,比反复看资料管用得多。希望这份整理能帮到你,把面经变成自己的知识地图,而不是又一份躺在收藏夹里的文档。
本文还有配套的精品资源,点击获取