面灵AI→

华为AI方向机考9月23日笔试题与解析

轮次
笔试
时间
2026-09
来源
牛客网

《面试题目》

  1. 用 RANSAC 拟合直线时,外点占比约 70%。若希望模型仍有较大概率被正确估出,应优先采取哪一措施?(A 改用最小二乘直接拟合全部点;B 把最小样本集规模再加大;C 换用更高次多项式去「吃掉」外点;D 提高随机采样的迭代轮数)
  2. 关于数据并行(Data Parallel)中各卡上的模型与数据,正确的是?(A 每张 GPU 只保存模型的部分层,处理同一批数据;B 每张 GPU 保存完整模型副本,处理同一批数据;C 每张 GPU 保存完整模型副本,各自处理不同数据批次;D 每张 GPU 只保存模型的部分层,各自处理不同数据批次)
  3. 用 PSNR 评估扩散模型生成图质量,得到 5 个样本 [27.2, 29.6, 28.8, 30.4, 29.0],该样本的样本标准差为(保留两位小数)?(A 1.15;B 1.20;C 1.18;D 1.12)
  4. 要判断 g(u,v) = w² + … 是否为凸函数,可检查其 Hessian 矩阵是否为?(A 正交矩阵;B 负定矩阵;C 对角矩阵;D 正定或半正定矩阵)
  5. RAG 流水线里,检索模块主要负责什么?(A 更新生成模型的权重;B 从外部知识库取出相关文档或片段;C 持久化用户画像;D 调整网络拓扑)
  6. CNN 中「感受野」通常指什么?(A 卷积核边长;B 池化窗口边长;C 特征图上某点所对应的输入图像区域;D 全连接层入口维度)
  7. 若两向量点积等于 0,则二者有什么关系?(A 模长相同;B 同向;C 反向;D 互相垂直)
  8. 已知 P(A)=0.4,P(B)=0.8,P(B|A)=0.5,则 P(A|B)=?(A 0.50;B 0.40;C 0.25;D 0.20)
  9. 用牛顿法求方程 f(x)=0 的单根时,局部收敛阶通常是?(A 线性收敛;B 一阶收敛;C 三阶收敛;D 二阶收敛(平方收敛))
  10. 若 X~N(μ,σ²),则 P(X < μ+σ) 大约为多少?(A 0.50;B 0.95;C 0.84;D 0.68)
  11. 编程题「激活检查点放置」:模型共 N 层,给定每层前向耗时 forward_time 与在该层打 Checkpoint 所需的额外显存 memory,以及显存预算 MaxMem。第 0 层是天然起点、不占显存,第 N 层是终点、也不占显存,可在第 1 到 N-1 层任意打点,所有打点显存之和不超过 MaxMem。相邻两个 Checkpoint c、d 之间的重计算代价为 Cost(c,d) = Σ_{k=c+1}^{d} forward_time[k-1]×(d-k)。求满足显存约束的最小总重计算代价。

《参考解析》

RANSAC 应对高外点比例:答案是 D。RANSAC 的鲁棒性来自随机采样——只要迭代次数足够多,就有大概率某一轮抽到的最小样本集全是内点。设外点比例 e=0.7、最小样本数 s=2,单轮全内点的概率是 (1-e)^s = 0.09;想要 99% 的整体成功率需要 N = ln(1-0.99)/ln(1-0.09) ≈ 49 轮,所以提高迭代轮数才是直接抓手。加大最小样本集规模会让单轮全内点概率指数级下降(s=3 时只剩 0.027),方向正好相反;最小二乘对 70% 的外点已经完全失效;提高多项式次数只是让曲线去迁就外点,属于过拟合。

数据并行:答案是 C。数据并行的定义就是把同一个模型完整复制到每张卡上、各自吃不同的数据分片(micro-batch),前向后各卡算梯度再做 all-reduce 求平均。B 描述的「处理同一批数据」不是数据并行的形态;A、D 把模型按层切开,属于流水线并行或张量并行的范畴。

PSNR 样本标准差:答案是 C 1.18。均值是 29.0,五个点的偏差为 -1.8、0.6、-0.2、1.4、0.0,平方和 3.24+0.36+0.04+1.96+0 = 5.6。样本标准差用 n-1 作分母:sqrt(5.6/4) = sqrt(1.4) ≈ 1.183,保留两位即 1.18。注意区分总体标准差(除以 n,得 1.06),题目问的是「样本标准差」。

Hessian 判定凸性:答案是 D。多元二阶可微函数,Hessian 半正定是凸函数的充要条件,正定是严格凸的充分条件(严格凸不要求处处正定)。负定对应凹函数,正交矩阵与对角矩阵跟凸性没有直接关系。

RAG 检索模块的职责:答案是 B。RAG 分索引段与查询段,检索模块在查询段把用户 query 编码后从向量库或倒排索引里取回相关文档片段,拼进上下文交给生成模型。它既不更新生成模型权重,也不负责用户画像。

感受野:答案是 C。感受野指输出特征图上一个像素的数值由输入图像上多大一块区域算出来。卷积核边长只是决定单层感受野增长的一个因素,堆叠层数、步长、空洞率同样影响最终感受野大小。

向量点积为 0:答案是 D。a·b = |a||b|cosθ = 0,在两者都非零的前提下只能 cosθ = 0,即夹角 90°,两向量正交。模长相同、同向、反向都不能由点积为 0 推出。

条件概率:答案是 C 0.25。先用乘法公式求交:P(A∩B) = P(B|A)·P(A) = 0.5×0.4 = 0.2;再用贝叶斯公式 P(A|B) = P(A∩B)/P(B) = 0.2/0.8 = 0.25。这类题直接把两个公式串起来即可,别被选项里的 0.20(那是 P(A∩B))带偏。

牛顿法收敛阶:答案是 D。牛顿迭代 x_{k+1} = x_k − f(x_k)/f’(x_k),在单根附近误差满足 e_{k+1} ≈ (f”/(2f’))·e_k²,是二阶(平方)收敛。常考的追问是重根情形:重数为 m 时退化为线性收敛,需要改成带重数因子的修正牛顿法才能恢复二阶。

正态分布累积概率:答案是 C 0.84。μ+σ 处的累积概率约为 0.8413。记 68-95-99.7 经验法则:落在 ±1σ 内的概率是 68.27%,对称分布下小于 +1σ 的部分就是 (1+0.6827)/2 ≈ 84.13%。

激活检查点放置:本质是「在显存预算下选一条从第 0 层到第 N 层的最短路」。隐式起点 0、隐式终点 N,任意两个相邻 Checkpoint 之间的边权就是这段的重计算代价 Cost(c,d)。由于 Cost(c,d) 只由两者之间的层决定,可以用前缀和 S[i] = Σ_{j<i} forward_time[j] 递推:Cost(c,d) = Cost(c,d−1) + (S[d−1] − S[c]),初值 Cost(c,c+1) = 0,O(N²) 预处理出全部区间代价。

然后是背包式的 DP:dp[i][w] 表示「最后一个 Checkpoint 打在位置 i、已用显存恰好为 w」时的最小累计代价,起点 dp[0][0] = 0。对每个 i 从 1 到 N−1,枚举上一个 Checkpoint j 与显存 w,转移为 dp[i][w + memory[i−1]] = min(dp[i][w + memory[i−1]], dp[j][w] + Cost(j,i)),前提是 w + memory[i−1] ≤ MaxMem。最后答案是所有 j、w 上 dp[j][w] + Cost(j,N) 的最小值——终点 N 不占显存,所以不用为它预留预算。总复杂度 O(N²·MaxMem),空间 O(N·MaxMem)。

容易踩的坑:不能贪心「优先给重算代价最高的层打点」。打点会改变区间划分,某个层值不值得打取决于它把哪一段切开,层与层之间存在耦合,只能靠 DP 全局寻优。题面给的样例里 MaxMem = 3 小于所有 memory[i],一个中间层都打不了,只能接受隐式区间 Cost(0,5) = 1×4 + 2×3 + 1×2 + 3×1 + 1×0 = 15。