Appearance
金融科技算法工程师线上笔试复盘
面试官提问清单
单选题(现有材料中可完整复核的题目)
- 第 6 题:强化学习中的奖励函数是否必须为正数?
- 第 10 题:基本有序序列最适合使用哪种排序算法?
- 第 11 题:大模型问答接口如何让用户更早看到已生成内容?
- 第 12 题:如何结合交叉验证的样本外预测概率定位疑似错误标签?
- 第 16 题:Python 的
*args与**kwargs哪项描述错误? - 第 23 题:结构化剪枝通常以什么结构为裁剪对象?
- 第 25 题:如何在大规模文本语料中高效识别近重复文本?
- 第 26 题:GQA 的 Query 头与 Key/Value 头如何分组?
- 第 28 题:不对点积注意力做缩放是否一定导致 Softmax 梯度消失?
- 第 55 题:DeepSpeed ZeRO-3 对哪些模型状态做分片?
- 第 56 题:RoPE 的旋转角度主要受什么因素控制?
- 第 57 题:DAPO 动态采样如何处理组内奖励没有方差的样本?
- 第 60 题:GPT 预训练采用什么目标?
- 第 64 题:IPO 与独立奖励回归相比,核心差异是什么?
- 第 66 题:从 1 至 8 中选 3 个号码,最大号码为 6 的概率是多少?
多选题
- 哪些统计量可以描述数据的集中趋势?
- Prefill/Decode 分离推理中,KV Cache 应如何保存和传输?
- 自回归语言模型有哪些优势?
- 关于 BFS、DFS 和连通分量的哪些说法正确?
- 关于训练后量化(PTQ)的哪些说法正确?
- 如何通过 Prompt 改善银行报告的指标遗漏和结构混乱?
- 正态分布的 1σ、2σ、3σ 区间各覆盖多少数据?
- 哪些数据结构支持较快的插入和删除?
- 多说话人、含噪且带时间戳的语音数据应如何预处理?
- 多头注意力相比单头注意力有哪些优势?
- 哪些因素会影响 GQA 模型的性能或效率?
- 哪些技术可以加速大模型推理?
- Python 的基本数据类型包括哪些?
- RLHF 的关键步骤包括哪些?
- Python 字符串可以使用哪些引号形式表示?
- 哪些方法可以增强深度学习模型的可解释性?
- 如何通过 Prompt 让回答聚焦问题并减少无关内容?
判定范围与结论
统一复核口径:本页现在以题干、选项含义和可复用知识为中心;录屏中的临时勾选只作为证据附注,不作为知识结论。原视频当前不在工作区,下面对无法从关键帧恢复的选项明确标注,不凭空补写。
现有可复核材料没有展示官方答案或最终得分,并且只完整覆盖了 66 道单选题中的 15 道;17 道多选题均可复核。因此,下面的“建议答案”是依据题干、基础定义和原始论文得到的高把握判断,不等同于官方答案。
可见范围内的结论是:
- 单选题:复核 15 题,明确错误 5 题,其余 10 题的最终选项正确。
- 多选题:明确存在漏选 11 题;高把握完整正确 3 题;另有 3 题受题干范围或题库口径影响,需对照官方答案。
- 合计:32 道可见题中,至少 16 道没有拿到满分。
- 无法据此还原整场笔试分数:其余 51 道单选题不可见,多选题又采用“错选不得分、少选得一半分”的规则。
第 10 题最终由归并排序改为直接插入排序,第 16 题最终由 C 改为 B;两题均以最后提交的选项判定为正确,不把操作过程中的临时选择计为错题。
题目与选项复核清单
以下清单把现有材料中的 15 道单选和 17 道多选重新按“题干目标 → 选项判断 → 参考答案”组织。旧关键帧能读出完整选项的题目保留了选项含义;只有主题摘要的题目不补猜原文。
单选题
| 题号 | 题干目标 | 选项判断要点 | 参考答案 |
|---|---|---|---|
| 6 | 奖励函数是否必须为正数 | 正数、非负数、可含负值、与环境无关等说法中,奖励可以为负数或零 | 可含负值/零 |
| 10 | 基本有序序列的排序选择 | 直接插入、选择、快速、堆等方法比较;插入排序对小规模近有序数据可达近似线性 | 直接插入排序 |
| 11 | 让问答接口尽早展示生成内容 | 一次性返回、轮询、SSE/流式响应等方案比较;流式输出可边生成边展示 | 流式传输 |
| 12 | 用 OOF 概率定位错误标签 | 拟合概率、人工抽样、Confident Learning、随机重标等;应使用样本外预测概率 | Confident Learning |
| 16 | *args 与 **kwargs 的含义 | *args 收集位置参数,**kwargs 收集关键字参数;具体错误选项以录屏原文为准 | 旧笔记记录为 B |
| 23 | 结构化剪枝的裁剪对象 | 单个权重、神经元/通道、任意稀疏点、随机元素等;结构化剪枝删除规则化结构 | 通道/神经元等结构 |
| 25 | 近重复文本的海量检索 | TF-IDF/BM25、PCA、MinHash+LSH、随机抽样等;近重复集合应用 MinHash+LSH | MinHash + LSH |
| 26 | GQA 的 Q 头与 K/V 头分组 | 每个 Q 独享 KV(MHA)、全部 Q 共享一个 KV(MQA)、分组共享(GQA)等 | 分组共享 K/V |
| 28 | 点积注意力不缩放是否必然梯度消失 | “一定”属于绝对化表述;缩放降低方差和 Softmax 饱和风险,但不缩放不构成必然梯度消失 | 错 |
| 55 | ZeRO-3 分片的模型状态 | 优化器状态、梯度、参数分别对应 Stage 1/2/3;激活不是 ZeRO 三阶段状态 | 参数、梯度、优化器状态 |
| 56 | RoPE 旋转角度由什么决定 | 与 token 在序列中的位置、旋转维度频率相关;不是由词频或随机数决定 | 位置与维度频率 |
| 57 | DAPO 如何处理组内奖励无方差 | 保留、丢弃、扩大 batch 或随机填充;无方差组无法提供有效相对优势,应过滤/动态采样 | 过滤无方差组 |
| 60 | GPT 预训练目标 | 下一 token 预测、自编码重构、对比学习、掩码语言建模等 | 下一 token 预测 |
| 64 | IPO 相对独立奖励回归的核心 | 奖励回归、价值估计、标签平滑、身份映射等;IPO 直接基于偏好对构造隐式目标 | 使用身份映射构造偏好优化目标 |
| 66 | 1~8 选 3 个且最大值为 6 的概率 | 总数 C(8,3);6 必选,另选 C(5,2) | 5/28 |
多选题
多选题按每个选项独立判断,不根据答案数量猜选项。完整可复核的答案集合为:
| 题号 | 题目 | 应选选项 | 其余选项的排除依据 |
|---|---|---|---|
| 1 | 集中趋势统计量 | 众数、中位数、均值 | 方差描述离散程度 |
| 2 | Prefill/Decode 分离中的 KV Cache | 至少保留 Decode 所需 KV,并处理跨设备传输/一致性 | 具体复制方式依赖拓扑,不能脱离架构绝对化 |
| 3 | 自回归语言模型优势 | 统一 next-token 目标、生成自然、可扩展、上下文建模 | 与双向并行编码、无需顺序依赖等说法矛盾 |
| 4 | BFS、DFS、连通分量 | BFS 用队列;DFS 用栈/递归;极大连通子图是连通分量 | 把 BFS/DFS 数据结构或连通分量定义对调的选项错误 |
| 5 | PTQ 量化 | 对称量化适合近零对称分布;非对称量化适合偏移分布;校准集影响 scale | 把 PTQ 说成必须反向传播训练的选项错误 |
| 6 | Prompt 修复银行报告遗漏/混乱 | 规定输出结构;明确必备指标和材料范围;必要时限制长度 | 只改语气或泛泛要求“写得更好”不能保证指标齐全 |
| 7 | 正态分布覆盖率 | ±1σ≈68%、±2σ≈95%、±3σ≈99.7% | 将覆盖率或区间方向写错的选项错误 |
| 8 | 支持较快插入删除的数据结构 | 哈希表、平衡树、已知节点位置的链表 | 数组中间插入删除通常需搬移元素 |
| 9 | 多说话人含噪语音预处理 | VAD、降噪、说话人分离/聚类、时间戳对齐 | 只做文本清洗无法解决说话人和时间边界 |
| 10 | 多头注意力优势 | 多子空间表示、并行计算、不同关系模式 | “头越多一定越好”不是保证 |
| 11 | GQA 性能/效率因素 | Q/KV 头数比例、KV Cache 大小、投影参数和带宽 | 与 GQA 推理结构无关的因素不能直接计入 |
| 12 | 大模型推理加速 | PagedAttention、MQA/GQA、TensorRT、KV Cache | 只增加参数或关闭缓存不会加速 |
| 13 | Python 基本数据类型 | 数字、字符串、列表、元组、集合、字典、布尔等 | 把变量、函数或 char 当作独立基础类型错误 |
| 14 | RLHF 步骤 | SFT、奖励模型、偏好数据、PPO 等策略优化 | 只训练分类器而没有奖励/策略环节不完整 |
| 15 | Python 字符串引号 | 单引号、双引号、三引号 | Python 没有独立 char 类型 |
| 16 | 深度学习可解释性 | 特征/梯度归因、可视化、反事实、Attention 观察线索 | Attention 权重不能单独证明因果解释 |
| 17 | Prompt 减少无关回答 | 明确任务边界、限定材料、提供正反例、规定输出格式/长度 | 只提高温度或放宽主题会增加发散 |
题号 6、11、16 的选项是否成立依赖题干语境(报告要求、GQA 性能口径、可解释性定义);当前保留“技术严谨口径”和“基础题库口径”的差异,不伪装成官方答案。
明确错误与漏选
单选题
| 题号 | 最终选择 | 建议答案 | 错因 |
|---|---|---|---|
| 12 | A | B:Confident Learning | 题干同时给出“交叉验证”“样本外预测概率”“标签与高置信预测冲突”,这些是置信学习定位标签错误的直接特征。 |
| 25 | B | D:MinHash + LSH | BM25 适合相关性检索,不是大规模近重复集合搜索的典型方案;MinHash 近似 Jaccard,相似签名再由 LSH 缩小候选集。 |
| 28 | A:对 | B:错 | 缩放用于控制点积方差、降低 Softmax 饱和风险,但“不缩放”不等于数学上一定梯度消失。绝对化表述使该命题错误。 |
| 55 | A | B:参数、梯度、优化器状态 | ZeRO-1 分片优化器状态,ZeRO-2 再分片梯度,ZeRO-3 再分片参数;激活值不是 ZeRO 三阶段定义中的第三类模型状态。 |
| 66 | B:23/28 | A:5/28 | 总数为 C(8,3)=56;最大值固定为 6 时,另两个数从 1 至 5 中选,满足情况为 C(5,2)=10,概率为 10/56=5/28。 |
多选题
| 题号 | 最终选择 | 高把握应选 | 漏选点 |
|---|---|---|---|
| 1 | B、D | B、C、D | 众数与中位数、均值都描述集中趋势;方差描述离散程度。 |
| 4 | B、D | A、B、D | BFS 通常使用队列,DFS 通常使用栈或递归栈;无向图的极大连通子图是连通分量。 |
| 5 | A、B | A、B、D | 近零均值、正负大致对称的权重通常适合对称量化;偏移明显的分布更适合非对称量化。 |
| 6 | A | 至少 A、D | 指定输出结构能整理段落;显式要求核心风险指标才能直接约束“指标遗漏”。若题目还强调避免冗余,C 的长度上限也可能计入。 |
| 7 | A、B | A、B、D | 正态分布在均值正负 1σ、2σ、3σ 内约覆盖 68%、95%、99.7%。 |
| 8 | B、D | B、C、D | 哈希表平均 O(1),平衡二叉搜索树 O(log n);已知节点位置时链表插删 O(1)。数组中间插删通常需要搬移元素。 |
| 9 | B、D | A、B、D | 还需要说话人分段与聚类(speaker diarization)及角色映射;对齐和 VAD 分别解决时间区间与有效语音片段问题。 |
| 12 | C、D | A、B、C、D | PagedAttention 改善 KV Cache 内存管理;MQA 减少 KV 头和缓存量;TensorRT 与 KV Cache 也都可用于推理加速。 |
| 14 | D | A、D | 典型 RLHF 既训练奖励模型,也使用 PPO 等策略优化方法更新语言模型。 |
| 15 | B、C | B、C、D | Python 字符串可用三引号、双引号或单引号;没有独立的 char 类型。 |
| 17 | C、D | A、C、D | 负面示例可以显式展示不希望出现的无关内容;限定材料范围和任务边界则从正面收紧输出空间。 |
这 11 道题的最终选择都属于漏选,没有发现明确错选。按题面规则,它们通常会得到一半分,而不是零分;实际计分仍以官方答案为准。
需要对照官方答案的题目
| 题号 | 最终选择 | 争议来源 | 建议处理 |
|---|---|---|---|
| 多选 2 | B | Decode 阶段确实需要保留并读取 KV Cache;是否跨卡复制、是否把 Prefill 和 Decode 放在同一分片/机组,取决于系统拓扑与调度目标。P/D 分离本身就允许两阶段位于不同设备。 | B 必选;C、D 不能脱离具体架构判死。拿到官方答案后补录其假设。 |
| 多选 11 | A、B、C、D | Query 分组数和 K/V 投影方式直接影响 GQA;参数量也会影响性能。优化器影响训练结果,却不是 GQA 推理结构本身的因素。 | 若题干指“端到端训练性能”,C 可选;若指“GQA 架构和推理效率”,更稳妥的是 A、B、D。 |
| 多选 16 | A、D | 常见基础题库会把 Attention 机制当作可解释性手段,可能给 A、C、D;但研究表明 Attention 权重不能自动等同于可靠解释,学术上存在明确争论。 | 应试时记录题库口径 A、C、D;技术回答中补充“Attention 只能提供观察线索,不能单独证明因果解释”。 |
多选第 3、10、13 题分别选择 B/D、A/D、A/B/C,在高把握口径下完整正确。
知识点回顾
置信学习:使用样本外概率检查标签
当标签由自动模型生成、人工只能复核少量样本时,不能直接使用同一批训练数据上的拟合概率找错标:模型可能已经记住噪声标签。正确链路是:
text
K 折划分
→ 每次用 K-1 折训练
→ 对留出折生成样本外类别概率
→ 汇总所有样本的 OOF 概率
→ 按“给定标签概率低、其他类别概率高”等标签质量指标排序
→ 人工优先复核高风险记录关键不变量是:每个样本的检查概率必须由没有见过该样本标签的模型产生。分层抽样只能改善各折类别比例,本身不会完成标签错误排序。可参考 Confident Learning 原论文。
MinHash + LSH:大规模近重复检索
对文档分词并生成 shingle 集合后,可以用 Jaccard 相似度定义近重复。完整两两比较需要 O(n²) 次文档比较,不适合大语料;MinHash 用短签名近似集合相似度,LSH 再把可能相似的签名放入同一候选桶,只对候选对做精确比较。
text
规范化文本 → shingle 集合 → MinHash 签名 → LSH 候选桶 → 精确相似度 → 去重BM25 回答的是“文档与查询是否相关”,不能直接替代近重复集合搜索。数据去重对减少记忆文本和训练集/验证集重叠的作用可参考 Deduplicating Training Data Makes Language Models Better。
Scaled Dot-Product Attention
注意力分数写成:
text
scores = QKᵀ / sqrt(d_k)
attention = softmax(scores)当 Q、K 各维近似独立且方差稳定时,点积的方差会随 d_k 增长。除以 sqrt(d_k) 是为了把分数量级拉回稳定范围,降低 Softmax 过度饱和和梯度过小的风险。它是数值稳定手段,不是“不除就必然梯度消失”的充要条件。定义见 Attention Is All You Need。
MHA、GQA、MQA 与 KV Cache
| 结构 | Query 头与 KV 头关系 | 主要取舍 |
|---|---|---|
| MHA | 每个 Query 头有各自的 K/V 头 | 表达能力强,KV Cache 较大 |
| GQA | 一组 Query 头共享一组 K/V 头 | 在质量和推理效率之间折中 |
| MQA | 所有 Query 头共享单个 K/V 头 | KV Cache 最小,可能牺牲质量 |
GQA 原论文将其定义为 K/V 头数介于 MHA 与 MQA 之间。推理时还可以组合:
- KV Cache:避免每生成一个 token 都重新计算历史 token 的 K/V;
- PagedAttention:按分页思想管理动态增长的 KV Cache,减少碎片和冗余复制,见 vLLM 论文;
- TensorRT:进行图优化、算子融合和低精度内核选择;
- Prefill/Decode 分离:分别调度计算密集的 Prefill 与访存密集的 Decode,但必须显式处理 KV Cache 传输和设备放置,见 DistServe。
ZeRO 三阶段
记忆方式不是背“ZeRO-3 等于什么”,而是逐阶段累加:
text
Stage 1:分片 optimizer states
Stage 2:Stage 1 + 分片 gradients
Stage 3:Stage 2 + 分片 parameters因此 ZeRO-3 的答案是参数、梯度、优化器状态。激活重计算和激活分片属于相关显存优化,但不能混进 ZeRO 阶段定义。可对照 DeepSpeed ZeRO 官方文档。
DAPO 动态采样
组相对策略优化依赖同一 Prompt 下多个回答之间的奖励差异。若组内回答全部正确或全部错误,标准化后的优势信号没有有效方差。DAPO 动态采样会过滤这类 Prompt,并继续采样有不同奖励结果的组,使训练批次保留有效学习信号。该机制来自 DAPO 论文。
RLHF 基本链路
text
监督微调模型
→ 收集回答偏好排序
→ 训练奖励模型
→ 用奖励模型提供标量奖励
→ 使用 PPO 等策略优化方法更新语言模型“训练奖励模型”与“策略梯度优化”都属于典型 RLHF 流程,不能只选其中一个。可参考 InstructGPT 论文。
概率题:把“最大值恰好为 m”转成组合计数
从 1..n 中无放回选 k 个数,最大值恰好为 m:
text
总方案数 = C(n, k)
有利方案数 = C(m - 1, k - 1)
概率 = C(m - 1, k - 1) / C(n, k)理由是最大值 m 必选,剩余 k-1 个数只能从 1..m-1 中选择。做这类题先写“事件约束”,再计数,避免使用补集时把“最大值大于 m”和“最大值不等于 m”混淆。
多选题的独立判断清单
多选题不应先猜“本题有几个答案”,应逐项验证:
- 这个选项描述的是定义、典型实现,还是所有场景都成立的保证?
- 复杂度是否隐含前提,例如哈希表的平均 O(1)、链表已知节点后的 O(1)?
- 选项是否只解决题干的一部分,例如只规定报告结构,却没有要求必须输出核心指标?
- 是否出现“必须”“一定”“所有”等绝对词?若有,尝试构造一个反例。
- 专有名词是否与题干信号一一匹配,例如 OOF 概率对应 Confident Learning,近重复集合对应 MinHash + LSH。
本次回答中需要改进的地方
多选策略
- 问题:11 道明确失分的多选题都是漏选,没有发现明确错选;集中趋势、图遍历、PTQ、正态分布、数据结构、语音预处理、推理加速、RLHF、字符串和 Prompt 约束都漏掉了一个或两个独立成立的选项。
- 改进:第一遍选出确定项后,必须对每个未选项单独做一次“定义—前提—反例”检查。不要因为已经选了两个答案就停止判断,也不要根据选项数量反推答案数量。
- 问题:题面采用“错选 0 分、漏选一半分”,当前策略明显偏保守,但某些被放弃的选项其实是基础定义,例如 BFS 使用队列、RLHF 使用策略优化、Python 支持单引号字符串。
- 改进:把“定义级确定项”和“依赖实现的争议项”分开。定义级选项应果断选择;P/D 跨卡调度、优化器是否算 GQA 因素这类依赖语境的选项再保守处理。
专业知识
- 问题:第 12、25、55 题没有把题干中的强信号映射到对应方法:OOF 概率 → Confident Learning,近重复语料 → MinHash + LSH,ZeRO-3 → 三类模型状态分片。
- 改进:按“任务目标、输入信号、核心机制、替代方案为何不合适”制作方法对照卡,不只记缩写。
- 问题:第 28 题忽略了“一定”这一绝对条件,把“风险上升”误判成“必然发生”。
- 改进:判断题先圈出量词,再找反例。能够构造某个低维或分数未饱和的情形,就足以否定“一定梯度消失”。
- 问题:第 66 题没有把“最大值恰好为 6”转换成“6 必选,其余从 1 至 5 选 2 个”。
- 改进:组合概率固定先写样本空间和有利事件,再约分;禁止只凭选项大小估计。
应试记录
- 问题:材料没有官方答案页,注意力可解释性等题又存在题库口径与技术严谨口径的差异,当前无法确认这些争议题是否实际扣分。
- 改进:若后续能取得成绩页或官方解析,优先核对多选第 2、11、16 题,并只更新“需要对照官方答案”表;其余高把握知识结论无需重写。