#十七、手撕代码专项的复习顺序

如果是 3-5 天速刷,建议顺序如下:

  1. 第一天:softmax / mask / attention
  2. 第二天:top-k / top-p / sampling
  3. 第三天:RoPE / LoRA Linear / KV cache
  4. 第四天:向量检索 / RAG pipeline
  5. 第五天: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 伪代码。