模拟大厂大模型方向面试题

面试题 + 参考答案(配套 BV16f1mB7Ebj,Transformer/自注意力/KV Cache/GQA)

说明:答案贴合视频里的比喻(Q=提问人,K=标签,V=答案),兼顾校招面试口语化表达,不是生硬论文原文。

🟢基础入门题

1. 请你用大白话讲清楚:什么是自注意力 Self‑Attention?它解决了什么问题?

答案

自注意力机制,让句子里每一个token(单词/字)都能和句子里所有其他token计算关联程度 ,捕捉上下文依赖关系。

传统RNN是串行处理,长距离信息容易衰减;CNN只能捕捉局部窗口信息。自注意力可以直接建立任意两个位置token之间的联系,一步拿到全局上下文。

举例子:"小明喜欢吃苹果吗",模型看到"苹果",能知道前面的"吃"是搭配苹果,看到"小明"知道是谁在吃。

2. Q、K、V分别是什么?用视频里"提问人、标签、答案"的比喻给我解释一遍。

答案

  • Q(Query,查询):提问人。代表当前这个token,我想去找句子里哪些词和我相关。
  • K(Key,键):标签。句子里所有token打出的标签,用来匹配查询。
  • V(Value,值):答案。标签背后携带的语义信息。
    流程:Q拿着问题,和所有K做匹配打分;分数代表相似度;分数加权去提取V里面的信息,得到当前token融合上下文后的向量。

3. 点积注意力的整体流程是哪几步?简单口述流程。

答案

  1. 输入token embedding,分别线性投影得到Q、K、V;
  2. Q和K做点积,得到原始相似度分数矩阵;
  3. 分数除以dk\sqrt{d_k}dk 缩放;
  4. softmax,把分数转成0~1之间的权重,所有权重总和为1;
  5. 使用权重,对V做加权求和,得到自注意力输出。

4. 为什么语义相近的词,向量点积会比较大?向量方向和相似度是什么关系?

答案

词向量训练后,语义相近的词向量在高维空间方向接近。

向量点积公式:a⋅b=∣a∣∣b∣cos⁡θa\cdot b=|a||b|\cos\thetaa⋅b=∣a∣∣b∣cosθ。θ\thetaθ是两个向量夹角。夹角越小,cos⁡θ\cos\thetacosθ越大,点积结果越大。语义越接近,向量夹角越小,点积越高。

5. 多头注意力 Multi‑Head Attention 的直观思想是什么?为什么要搞多个头,只用一个头不行吗?视频说每个头关注不同关系,请举例哪些关系。

答案

多头注意力:把QKV切分成多组,每一组独立做自注意力,每个头学习不同类型的关联关系 ,最后把所有头结果拼接,再过一层线性层融合。

单个注意力头只能学到一种关联模式,表达能力有限。

例子:

头1:关注主谓关系(小明 → 喜欢);

头2:关注动宾关系(吃 →苹果);

头3:关注指代关系等。


🟡中等理解题

6. 缩放点积注意力:为什么点积之后要除以 dk\sqrt{d_k}dk ?不除会发生什么?d_k代表什么?维度变大,点积结果会怎么变化?softmax输出会变成什么样子,对梯度有什么影响。

答案

dkd_kdk:Q/K向量的维度。

向量维度越高,点积结果的方差会越大,数值范围会变得很大。softmax输入数值差距过大时,输出会极度尖锐,接近one-hot ,大部分位置权重趋近于0。

softmax在输入极大时,梯度会变得非常小,出现梯度消失,训练困难。

除以dk\sqrt{d_k}dk ,把点积的方差拉回到1附近,稳定数值,保证softmax梯度正常。

7. Q、K、V三个矩阵是怎么来的?输入token embedding经过什么操作得到QKV?QKV的维度分别是什么?

答案

输入词向量,通过**3组独立可训练的线性层(全连接)**投影,得到Q、K、V。

假设输入向量维度dmodeld_{model}dmodel,投影后Q/K/V维度都是dkd_kdk(多头时后续会切分)。

MHA:dmodel=head_num×dkd_{model}=head\_num \times d_kdmodel=head_num×dk

8. 自注意力里面,拿到Q和K算相似度分数,经过softmax得到权重矩阵,之后拿权重和V做什么运算?加权求和的意义是什么?

答案

权重矩阵和V做加权求和。

意义:权重代表当前token对其他各个token的关注程度,加权求和就是按关注度,把所有token的Value信息融合进来,得到融合上下文的向量。

9. 普通自注意力,一句话中每个token,能看到句子中哪些token?

答案

编码器的自注意力(双向自注意力):每个token可以看到句子全部token,包括前面和后面

解码器里的掩码自注意力:只能看到当前位置以及前面的token,看不到未来还没生成的token(防止偷看后面的词)。

10. 多头注意力做完多个头之后,做拼接concat,拼接完之后还要做什么操作?为什么不能直接把多个头输出拼起来直接往下走?

答案

拼接后要再过一层线性投影层

拼接只是把多个头的向量简单拼在一起,维度变大;这层线性层负责融合各个头学到的信息,同时把维度映射回模型原始维度dmodeld_{model}dmodel。不做这层,维度不匹配,而且多头信息没有融合。


🟠深度理解题

11. 请口述缩放点积注意力完整公式,并且每一项给我解释含义。

答案

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)VAttention(Q,K,V)=softmax(dk QKT)V

  1. QKTQK^TQKT:Q矩阵乘K的转置,计算所有token两两之间点积相似度;
  2. dk\sqrt{d_k}dk :Q/K向量维度,做缩放,稳定数值;
  3. softmax:相似度转为概率权重;
  4. 乘V:使用权重对Value加权求和,得到注意力输出。

12. 自注意力和交叉注意力(Cross‑Attention)的区别是什么?分别出现在Transformer编码器、解码器哪个位置?

答案

  • 自注意力:QKV来自同一组输入序列,序列内部互相做关联。编码器全部是自注意力;解码器第一层是掩码自注意力。
  • 交叉注意力:Q来自解码器上一层输出,K、V来自编码器的输出。Q(解码器当前生成内容)去编码器的序列里面找相关信息,用于翻译类任务,让生成的单词参考原文。
    位置:解码器第二层是交叉注意力。

13. 视频提到编码器、解码器。简单说编码器干什么,解码器干什么?BERT、GPT分别对应哪一块?

答案

编码器:接收完整输入句子,双向自注意力,理解输入,提取全局上下文特征 。BERT只用编码器,做理解类任务:分类、NER。

解码器:自回归生成文本,一次输出一个token,掩码自注意力,看不到未来词。GPT只用解码器,做文本生成。

14. 如果输入句子长度很长,自注意力会有什么致命缺点?时间复杂度是什么?

答案

自注意力时间复杂度是 O(n2)\boldsymbol{O(n^2)}O(n2),n是序列长度。序列变长,计算量、显存占用会平方增长。

长文本场景开销爆炸,无法处理超长上下文。这也是后来LLaMA、GPT用稀疏注意力、滑动窗口等优化的动机。


🔴工程面试题(视频后半段 KV‑Cache + GQA,大模型生成必考)

15. 大模型做文本生成(逐token输出),原生自注意力会有什么浪费?KV‑Cache解决什么问题?KV Cache存的到底是哪两个矩阵?

答案

原生自注意力每次生成新token,把历史所有token的K、V全部重新计算一遍 ,大量重复计算,速度很慢。

KV Cache:缓存已经生成好的历史token对应的K和V ,不需要重复计算。

KV Cache保存的就是历史位置的K矩阵、V矩阵。新token只需要算自己的Q,拿Q和缓存好的全部K、V做注意力。

16. KV Cache每次新生成一个token,哪些需要重新计算,哪些直接读缓存?

答案

新token:只计算当前这个token的Q;

历史token:K、V直接读取KV Cache,不再重复计算;

然后拿新Q,和缓存里全部K/V做注意力,算出当前输出token;

生成完成后,把这个新token算出的K、V追加存入KV Cache,供下一轮使用。

17. 什么是MHA(多头注意力)、GQA分组查询注意力、MQA多查询注意力?三者Q/KV头的数量配置差异?GQA为什么现在主流大模型都在用?权衡什么?

答案

  • MHA多头注意力:Q、K、V头数量完全相等。每个Q头对应独立K头、V头。效果最好,但KV头多,KV Cache显存占用大。
  • MQA多查询注意力:多组Q头,全部共享同一组K头、V头。KV头极少,显存占用小,推理速度最快;但是共享KV会损失一部分模型效果。
  • GQA分组查询注意力:把Q头分成若干组,同一组内的Q头共享一组K、V头
    GQA是折中方案:平衡推理显存/速度和模型效果。效果接近MHA,显存开销接近MQA,现在LLaMA2、GPT系列广泛使用。

18. GQA相比MHA有什么收益?相比MQA有什么损失?

答案

GQA vs MHA:减少KV头数量,KV Cache显存占用下降,推理速度提升;精度轻微下降(工程上几乎可接受)。

GQA vs MQA:MQA全部Q共享一套KV,信息压缩太强;GQA分组共享,保留更多KV信息,模型效果优于MQA;但KV头数量多于MQA,显存开销略高于MQA。


🧩情景反问题(面试官最喜欢,看能不能活学活用)

19. 假如去掉缩放dk\sqrt{d_k}dk ,在什么场景下问题会特别严重?维度很小的时候是不是影响不大?

答案

Q/K向量维度dkd_kdk很大的时候,点积方差爆炸,softmax梯度消失问题最严重。

当dkd_kdk很小,点积数值范围不大,方差小,此时去掉缩放影响不大。

20. 如果把多头注意力的头数设置的特别大,会带来什么问题?

答案

总模型维度dmodel=head_num×dkd_{model}=head\_num \times d_kdmodel=head_num×dk。头数太大,每个头的dkd_kdk会变得很小,单个头向量表达能力下降;同时头数变多,线性层参数量上升,计算量增加,容易过拟合。

21. 能不能举个例子,一个注意力头抓语法关系,另一个头抓语义关系?

答案

句子:"小猫追蝴蝶"

头1(语法):捕捉主谓关系,"小猫"和"追"强关联;

头2(语义):捕捉动宾关系,"追"和"蝴蝶"强关联。


✍️口头手写/模拟题

22. 假设输入2个token,embedding维度512,QKV投影后维度dk=64,多头头数8,请口述一遍维度变换:输入→QKV拆分多头→每个头做注意力→concat合并多头。

答案

  1. 输入:shape 2,512,2个token,embedding维度512;
  2. 线性投影得到Q/K/V:2,512
  3. 多头切分:把Q拆成8个头,每个头维度dk=64 → Q shape变成 8, 2, 64;K、V同理;
  4. 每个头独立计算缩放点积注意力,输出每个头结果 2,64
  5. 8个头结果拼接,得到 2, 8\*64 = 2,512
  6. 拼接结果再过线性层,输出最终注意力结果 2,512

💯追加连环追问(答完上一题,面试官立刻跟进)

① 问:为什么除以dk\sqrt{d_k}dk ?答完继续追问:那我不用除法,直接加一个可学习的缩放参数行不行?

参考答案

理论上可以设置可学习缩放参数,让模型自己学习缩放因子。但工程实践上,预先除以dk\sqrt{d_k}dk 是先验的统计校正 ,初始化时数值就稳定;如果交给模型学习,训练初期数值不稳定,容易出现梯度爆炸/消失,训练难度变大。所以标准实现固定用dk\sqrt{d_k}dk 缩放。
② 问:什么是KV Cache?答完追问:KV Cache会占用显存吗?序列越长显存开销会怎么变化?

参考答案

KV Cache会占用显存。序列长度越长,保存的K、V矩阵行数越多,显存占用随序列长度线性增加。超长上下文场景下,KV Cache显存开销会成为推理瓶颈。


相关推荐
Peng7111 小时前
浙大数据可视化课程学习笔记
笔记·学习·信息可视化
今儿敲了吗1 小时前
02词云生成器
笔记·python
hanlin031 小时前
刷题笔记:力扣第287题-寻找重复数
笔记·算法·leetcode
你想知道什么?2 小时前
神经网络-学习笔记
笔记·神经网络·学习
疯狂打码的少年3 小时前
【计算机网络】IP地址与子网划分(IP地址分类与特殊地址)
网络·笔记·tcp/ip·计算机网络
bessyon3 小时前
从设备自购看医美机构的运营逻辑与竞争壁垒
笔记
疯狂打码的少年3 小时前
【计算机网络】TCP协议(三次握手、可靠传输、流量控制)
网络·笔记·tcp/ip·计算机网络
AIGC大时代3 小时前
OpenAI Agents SDK 工程笔记:tool 调用循环、max_turns 与生产禁区
服务器·数据库·笔记·tool·max_turns·functiontool·生产禁区
`流年づ4 小时前
人工智能学习笔记 - 自动微分
人工智能·笔记·学习