#十七、手撕代码专项的复习顺序
如果是 3-5 天速刷,建议顺序如下:
- 第一天:
softmax / mask / attention - 第二天:
top-k / top-p / sampling - 第三天:
RoPE / LoRA Linear / KV cache - 第四天:
向量检索 / RAG pipeline - 第五天:
batch 调度 / Agent loop / 伪代码题
这样安排的原因是:前两天先把张量流和采样搞熟,后面再做大模型特有模块,实现效率最高。
#核心术语先对齐
手撕代码在这里不是 LeetCode 式算法题,而是要求你用最小实现表达一个大模型模块的输入、输出、张量形状和边界条件。面试官看重的不是代码行数,而是你是否知道 mask 放在哪里、softmax 维度是什么、KV cache 怎么追加、采样什么时候会退化。
最小实现指先写清核心路径,再补数值稳定和工程细节。例如 softmax 要先减最大值,attention 要说明 causal mask,top-p 要排序并截断累积概率,RAG pipeline 要区分检索、重排和生成。
#每天验收方式
- 每个模块先画输入输出:张量形状、batch 维、序列维、head 维分别是什么。
- 再写一版能跑的最小代码,避免只背伪代码。
- 最后补三类边界:数值稳定、mask/边界条件、复杂度和显存成本。
- 能把代码讲成自然语言:这一步为什么需要、错了会出现什么症状、线上如何定位。
#练习时的优先级
第一优先级是 attention、softmax、mask、采样这些所有岗位都会遇到的基础模块;第二优先级是 RoPE、LoRA、KV cache 这类大模型特有模块;第三优先级才是完整 RAG pipeline、Agent loop、batch scheduler 等系统伪代码。不要一开始就写复杂框架,否则很容易掩盖张量维度和边界条件没掌握的问题。
每道手撕题都要准备一个“错误版本”的解释:softmax 不减最大值会数值溢出,causal mask 方向错会偷看未来,top-p 截断顺序错会改变概率分布,KV cache 追加错会造成位置错乱。能说明错误后果,通常比只写出正确代码更能证明理解。
建议每次练习都固定输出三样东西:一段最小代码、一张张量形状表、一段复杂度说明。代码证明你能实现,形状表证明你知道数据怎么流,复杂度说明证明你能把实现接到显存和延迟。对于平台岗,还要额外说明这段代码在 batch、长上下文或多请求并发下会出现什么新问题。
如果时间很紧,优先把 attention 和采样写熟,因为它们能覆盖最多追问。attention 可以引出 Q/K/V、mask、复杂度、KV cache;采样可以引出 temperature、top-k、top-p、重复惩罚和线上生成稳定性。这两类题练透后,再补 RoPE、LoRA、RAG 和 Agent 伪代码。