面灵AI→

小鹏二面:Transformer 基础与端侧 Agent Harness

轮次
二面
时间
2026-09
来源
牛客网

《面试题目》

  1. 请做一下自我介绍。
  2. 你的研究生研究方向具体是做什么?详细讲一下(这一部分被连续追问了 6 轮)。
  3. 详细讲讲 Encoder+Decoder 结构,和纯 Decoder-only 网络在结构上的差异。
  4. 详细讲解 Transformer 网络结构,以及 QKV 的计算过程。
  5. 注意力计算的时候,为什么要除以 √dk 做归一化?
  6. 多头注意力怎么理解?
  7. 为什么要设计多头注意力?
  8. 你知道 attention 的哪些变种?
  9. 你前面提到 LoRA,讲一下 LoRA 的数学原理。
  10. 两个实习项目里,挑一个和 Agent Harness 最相关的详细展开讲讲,避开传统后端工作。
  11. 你说你学习过 Agent Harness,Harness 具体要做哪些事情,怎么实践?
  12. 你提到上下文压缩,说说这方面的经验。
  13. 这些知识是看源码、论文还是别的渠道学习的?
  14. 有没有看过其他开源 Agent Harness 项目?
  15. 讲讲你看过的开源框架,在上下文、工具选择、运行时调度方面值得分享的设计要点。
  16. 如果把云端或桌面 Agent 的 Harness 经验迁移到端侧(车端、手机、PC),会有哪些不一样的难点?
  17. 你相比同龄人有什么明显优势?还有哪些不足?
  18. 你的性格是什么类型?
  19. 你过往做的是云端 Agent,为什么选择投递端侧 Agent 岗位?
  20. 如果发放校招 offer,你多久可以来实习?

《参考解析》

Encoder-Decoder 与 Decoder-only 的结构差异

Encoder 栈由双向(非因果)自注意力加前馈网络组成,每个位置都能看到整条输入序列,产出上下文化的表示;Decoder 每层则是带因果掩码的自注意力,加上对 Encoder 输出做 cross-attention 的第三块子层,再加前馈。纯 Decoder-only 只有因果自注意力堆叠,没有独立编码器,也没有 cross-attention——把输入与输出拼成一条序列,训练目标统一成预测下一个 token。差异带来三个后果:Encoder-Decoder 天然贴合「一段输入映射到一段输出」的任务(翻译、摘要、语音),源序列只编码一次、解码每步复用同一份 cross-attention 的 K/V;Decoder-only 结构只有一种层,实现简单、扩展性好、天然支持上下文学习与指令微调,所以成了主流。追问方向通常是「为什么现在几乎都用 Decoder-only」「cross-attention 与拼接序列在长输入下谁更省」,答题时要落到计算与工程复杂度上,而不只是背结构图。

Transformer 与 QKV 的计算过程

输入 token 先做 embedding 加位置编码,进入 N 层。每层流程是:层归一化、多头自注意力、残差相加、层归一化、前馈网络(两层线性加激活,中间维度通常是模型的四倍)、残差相加。自注意力里,输入 X 分别乘以三个投影矩阵得到 Q、K、V;打分用 Q 与 K 的转置相乘,除以 √dk,过 softmax 得到注意力权重,再对 V 加权求和,多个头的输出拼接后经输出投影融合。推理时缓存历史的 K、V,每步只算新 token 的 q 去和缓存的 K 相乘,这就是 KV cache 省下来的计算量——也是显存占用的主要来源之一。

为什么要除以 √dk

如果 q 与 k 的各维近似独立、均值 0 方差 1,那么它们点积的方差是 dk。dk 一大,点积的数值尺度就大,softmax 会被推到饱和区:最大项接近 1、其余接近 0,此时 softmax 的梯度趋近于零,反向传播推不动参数,训练容易不稳甚至停滞。除以 √dk 把方差拉回 1 量级,让 softmax 落在梯度良好的区间。追问一般会延伸到温度系数与注意力的熵、长序列时 dk 变大要不要额外缩放,以及它与后续各种注意力变体(如 scale 与 qk 归一化)的关系。

多头注意力:怎么理解,为什么要设计

直觉上它是「在多个子空间里并行做注意力」:不同的头会各自学到不同的对齐模式,有的盯相邻位置、有的抓句法依存、有的管长距离指代,最后拼接起来由输出投影融合。在总计算量不变的前提下,单头只能给出一种注意力分布,表达力受限;多头用同一份参数预算提供了 h 个独立的低秩投影空间,等价于把注意力分解成多个子空间并行,同时也便于把每个头映射到不同的计算单元上并行。追问的常见方向是 head_dim 太小会怎样(表达力受限、注意力分布更平)、以及 MQA/GQA 这类共享 K/V 的变体——它们牺牲一点质量换取 KV cache 显存与带宽,是为推理吞吐做的取舍,而 MLA 走的是低秩压缩的另一条路。

attention 的变种地图

按「改了数学还是只改实现」分两类更好记。改数学的:稀疏与滑窗注意力(长序列里只算局部加少量全局)、线性注意力与核方法(把 softmax 换成可结合核,复杂度降到线性)、低秩与压缩类(MLA、共享 K/V 的 MQA/GQA)。只改实现的:FlashAttention 系列用分块与 online softmax 把精确注意力做成 IO 友好,数学完全等价;PagedAttention 管的是 KV cache 的分页显存。再往外还有跨模态的 cross-attention,以及序列并行侧的 Ring Attention、Ulysses。回答时给出分类维度与各自适用的场景,比罗列名字更好。

LoRA 的数学原理

冻结预训练权重 W0,在旁路加上一个低秩增量 ΔW = B·A,其中 A 是 r×k、B 是 d×r,r 远小于原始维度。前向变成 h = W0·x + (α/r)·B·A·x,α/r 是缩放系数。初始化的讲究是 A 用高斯随机、B 全零,于是训练起点 ΔW = 0,不破坏预训练行为。可训练参数量从 d×k 降到 r×(d+k),显存与小样本微调成本都大幅下降;α/r 这个缩放让改 r 的时候不必重调学习率。推理时可以合并回 W = W0 + BA 做到零额外延迟,也可以保留旁路做多任务热插拔;代价是低秩假设未必总成立,秩 r 与加在哪些层(只加 q、v 还是全部线性层)需要实验。常被追问的还有 QLoRA 的量化组合、与 adapter、prefix tuning 的区别。

Agent Harness 要做哪些事、上下文压缩怎么做

Harness 是把模型包成能干活的运行时,通常包含七块:循环控制(何时继续调工具、何时收尾,以及步数、时间、预算上限)、工具注册与调用(schema、鉴权、沙箱、幂等)、上下文管理(裁剪、摘要、检索式记忆、预算分配、对前缀缓存友好的排序)、状态与持久化(会话状态、断点续跑、检查点)、可观测(每步的 trace、token、耗时与成本)、安全与人类介入(危险动作确认、权限边界、注入防护)、评测与回归(任务集、成功判据、对照实验)。实践顺序上先把循环与工具调用做扎实,再补记忆与评测——没有评测的 Harness 是改不动的。上下文压缩则分三类手段:截断最便宜但会丢关键约束;摘要要把实体、数字、约束、未完成事项结构化保留,并留最近若干轮原文;检索式压缩把历史与工具结果落外部存储、按需召回,不常驻上下文。压缩策略好不好,要用一组回归任务量「压缩比—成功率」的曲线来定,同时注意别打乱前缀顺序,否则前缀缓存全失效。

从云端到端侧,Harness 的难点差在哪

一是算力与内存:模型要量化蒸馏,KV cache 与上下文预算比云端小一到两个数量级,长上下文基本不可用,上下文管理策略必须更激进。二是延迟与能耗:交互要求首字快,不能一次并行几十个工具、也不能频繁唤醒大模型,通常要小模型做路由与槽位抽取、大模型只处理难样本的级联方案。

三是隐私:数据不出端,意味着记忆与工具执行都在本地,云端只做无隐私的补充,这反而简化了一部分权限设计。四是平台差异:车端有传感器与语音打断、多用户共用一辆车,手机与 PC 的权限模型又各不相同,工具集与中断恢复的要求更高。五是更新与版本碎片:模型与技能包的灰度、回滚、端云协议兼容都要重做。六是评测链路变长:真机验证成本高,得先建离线回放再补真机小样本闭环。