大厂真题 / 华为
华为 6.12 笔试真题 - AI岗
本场考试概述
考试时间:2026年6月12日 考试岗位:华为暑期实习 AI 岗(AI算法、AI应用开发、AI数据科学等以AI为前缀的岗位) 难度评级:困难
考点分析:
- 选择题(20道):机器学习(相似度度量、PCA降维、评价指标 P/R/TPR/准确率)、深度学习(梯度消失、Momentum、CNN输出尺寸、Embedding、SGD)、大模型(GQA/MQA与KV Cache、注意力均匀分布、3D混合并行)、数学(贝叶斯定理、指数分布MLE、向量空间、对角阵行列式、线性相关性、凸函数性质、右偏分布)
- 第一题:自动驾驶障碍物检测——K-Means点云聚类(难度中等)
- 第二题:Expert Choice Routing——MoE专家选择路由,数值稳定Softmax + Top-S选择 + 加权聚合(难度困难)
建议策略:
- AI岗选择题分值权重大(单选 15×6 + 多选 5×12 = 150 分),ML/DL/大模型基础概念要刷透;本场多选集中在凸函数性质、注意力均匀分布、线性相关性、评价指标计算、3D混合并行
- 第一题识别”前 $K$ 个点作初始质心 + 平局取最小编号 + 1e-6 收敛”就直接套 K-Means 模板;注意空簇要保持质心不变、用平方距离比较省去开方
- 第二题是 MoE 模拟题,流程较长:门控分数 → 数值稳定 Softmax → 每个专家按归一化权重选 Top-S → 选中 token 做专家变换并加权聚合 → 未选中置零;先做合法性校验
选择题(20道)
第1题
对比两张亮度差异较大的图片,判断内容是否相似,适合的相似度度量是?
A. 余弦相似度 B. 曼哈顿距离 C. 汉明距离 D. 欧氏距离
答案:A
考点:机器学习——相似度度量
余弦相似度只看向量方向夹角,对整体亮度(幅度)缩放不敏感;两图亮度差异大但内容相似时方向接近,故最合适。欧氏、曼哈顿距离受幅度影响大,汉明距离用于离散编码比对。
第2题
工厂抽检 5 个灯泡,寿命数据为 ${3, 0, 2, 0, 5}$ 年。合格品寿命服从指数分布(参数 $\lambda$),不合格品寿命为 $0$。合格率 $p$ 的 MLE 估计是?
A. 0.7 B. 0.6 C. 0.5 D. 0.4
答案:B
考点:数学——概率统计/MLE
合格品寿命大于 $0$,5 个样本中非零的有 3 个($3, 2, 5$ 年),为 $0$ 的有 2 个。合格率的最大似然估计即合格样本所占比例 $3/5 = 0.6$。
第3题
贝叶斯定理的正确表达式是:
A. $P(A \mid B) = \frac{P(B \mid A) \cdot P(A)}{P(B)}$ B. $P(A \mid B) = \frac{P(A) \cdot P(B)}{P(B \mid A)}$ C. $P(A \mid B) = P(B \mid A) \cdot P(A)$ D. $P(A \mid B) = \frac{P(A \cap B)}{P(A)}$
答案:A
考点:数学——概率统计
由条件概率定义 $P(A \mid B) = \frac{P(A \cap B)}{P(B)}$ 与 $P(B \mid A) = \frac{P(A \cap B)}{P(A)}$ 联立,得贝叶斯定理 $P(A \mid B) = \frac{P(B \mid A) \cdot P(A)}{P(B)}$。
第4题
使用 PCA 降维时需要决定保留多少个主成分。选择 PCA 主成分数量时,通常依据什么指标?
A. 后续模型的准确率 B. 原始特征的数量 C. 累计解释方差比例(如 85%-95%) D. 样本的数量
答案:C
考点:机器学习——降维/PCA
PCA 按特征值大小排序主成分,通常以累计解释方差比例为依据,保留到 85%~95% 即可在压缩维度的同时保留大部分信息。
第5题
训练一个两层全连接神经网络做回归任务,在使用反向传播更新参数时发现:损失几乎不下降,梯度在多层传递后逐渐趋近于 $0$。针对该现象,下列分析最合理的是?
A. 数据集过小,与反向传播无关 B. 梯度爆炸,应使用梯度裁剪 C. 学习率过高,应大幅调大学习率 D. 梯度消失,常见于深层网络或饱和激活函数
答案:D
考点:深度学习——反向传播
损失不降且梯度逐层趋近 $0$ 是典型的梯度消失现象,常见于深层网络或 Sigmoid、Tanh 等导数小于 $1$ 的饱和激活函数,链式连乘后梯度指数衰减。
第6题
在反向传播中,如果激活函数的导数长期小于 $1$,最可能导致的数值问题是?
A. 梯度爆炸 B. 维度崩溃 C. 数值上溢 D. 梯度消失
答案:D
考点:深度学习——反向传播
链式法则中梯度是各层导数连乘,导数长期小于 $1$ 会使梯度随层数指数衰减,导致梯度消失。
第7题
在判断一个集合是否为向量空间时,以下哪一项是必须满足的条件?
A. 集合中所有向量的长度必须相等 B. 集合中任意两个向量的和仍属于该集合 C. 集合中存在零向量,并且对加法和数乘封闭 D. 集合中任意一个向量与任意一个标量的乘积仍属于该集合
答案:C
考点:数学——线性代数
向量空间必须包含零向量,且对加法和数乘运算封闭,这是核心判定条件。B、D 各只覆盖了加法或数乘封闭的一部分,不完整。
第8题
与普通 SGD 相比,Momentum 方法的主要作用是什么?
A. 保证全局最优解 B. 不再需要设置学习率 C. 引入历史梯度信息,减少震荡并加快收敛 D. 自动减少训练数据噪声
答案:C
考点:深度学习——优化器
Momentum 累积历史梯度方向形成动量,在一致方向上加速、在震荡方向上抵消,从而减少震荡并加快收敛。它不保证全局最优,也不取代学习率。
第9题
对于多头注意力(MHA)和分组查询注意力(GQA),GQA 相较于 MHA 的结构变化在于:
A. 增加了 Value 头的维度 B. 多个 Query 头共享一组 Key 和 Value 头 C. 增加了 Key 和 Value 头的数目 D. 减少了 Query 头的数量
答案:B
考点:大模型——注意力机制
GQA 介于 MHA 与 MQA 之间,将 Query 头分组,每组多个 Query 头共享一组 Key、Value 头,从而减少 KV Cache 显存,同时保留比 MQA 更强的表达力。
第10题
当数据分布呈现右偏(正偏)特征时,均值、中位数、众数三者的关系通常是?
A. 均值 < 中位数 < 众数 B. 均值 > 中位数 > 众数 C. 无法确定 D. 均值 = 中位数 = 众数
答案:B
考点:数学——概率统计
右偏分布尾部在右侧,少数极端大值把均值拉向右,故均值最大,众数(峰值)最小,关系为均值 > 中位数 > 众数。
第11题
原模型使用 MHA 有 $64$ 个注意力头,如果采用 MQA 替代 MHA,KV Cache 显存可减少多少倍?
A. 8 倍 B. 64 倍 C. 32 倍 D. 4 倍
答案:B
考点:大模型——KV Cache
MHA 中每个注意力头各有独立的一组 Key、Value,共 $64$ 组;MQA 让所有 Query 头共享同一组 Key、Value,KV Cache 显存约变为原来的 $1/64$,即减少 $64$ 倍。
第12题
对于输入为 $32 \times 32 \times 3$ 的图像,使用一个卷积层,包含 $16$ 个 $5 \times 5$ 的卷积核,步长为 $1$,无填充,那么输出特征图的大小和深度分别是?
A. $28 \times 28 \times 3$ B. $32 \times 32 \times 16$ C. $28 \times 28 \times 16$ D. $30 \times 30 \times 16$
答案:C
考点:深度学习——CNN
输出边长 $(32 - 5)/1 + 1 = 28$,深度等于卷积核个数 $16$,故输出为 $28 \times 28 \times 16$。
第13题
下列关于 Embeddings 的核心定义,正确的是?
A. 将离散数据(如单词、类别)映射到连续的低维向量空间 B. 将离散数据映射到离散的低维向量空间 C. 将连续数据映射到离散的高维向量空间 D. 将连续数据映射到连续的高维向量空间
答案:A
考点:深度学习——Embedding
Embedding 的核心是把离散符号(词、类别 ID 等)映射为连续、稠密的低维向量,使语义相近的对象在向量空间中距离更近。
第14题
关于 SGD 的说法,错误的是?
A. SGD 可能收敛速度较慢 B. SGD 需要设置学习率 C. SGD 使用整个数据集计算梯度 D. SGD 代表随机梯度下降
答案:C
考点:深度学习——优化器
SGD(随机梯度下降)每步只用单个或小批量样本估计梯度,并非整个数据集(用整个数据集的是批量梯度下降),故 C 错误。
第15题
对角矩阵 $A = \text{diag}(1, 3, 3)$ 的行列式值为?
A. 6 B. 27 C. 9 D. 3
答案:C
考点:数学——线性代数
对角矩阵的行列式等于对角元素之积,$1 \times 3 \times 3 = 9$。
第16题(多选)
以下关于凸函数的性质,正确的有:
A. 两个凸函数之和仍然是凸函数 B. 凸函数的非负线性组合仍然是凸函数 C. 凸函数的任意局部最小值都是全局最小值 D. 凸函数与凹函数之和一定是凸函数
答案:A, B, C
考点:数学——凸优化
凸函数之和仍凸(A 对),非负线性组合仍凸(B 对),凸函数的局部最小值必为全局最小值(C 对)。凸函数与凹函数之和的凸凹性不确定,不一定是凸函数(D 错)。
第17题(多选)
若某层注意力权重接近均匀分布,可能由于:
A. 使用了因果掩码 B. 输入序列所有 token 嵌入相同 C. 查询和键的维度过高 D. 注意力机制中 softmax 的温度参数设置过大
答案:B, D
考点:大模型——注意力机制
所有 token 嵌入相同时打分相同,softmax 后权重均匀(B 对);温度参数过大使分布更平滑、趋于均匀(D 对)。因果掩码只屏蔽未来位置,不会让权重均匀(A 错);查询、键维度过高在未缩放时通常使点积方差变大、分布更尖锐而非均匀(C 错)。
第18题(多选)
以下关于线性相关与线性无关的说法,哪些正确?
A. 包含零向量的向量组必线性相关 B. $n$ 维向量空间中任意 $n+1$ 个向量必线性相关 C. 若向量组线性相关,则其中每个向量都可由其余向量线性表示 D. 单个非零向量构成的向量组线性无关
答案:A, B, D
考点:数学——线性代数
含零向量的向量组必线性相关(A 对);$n$ 维空间中 $n+1$ 个向量必线性相关(B 对);单个非零向量线性无关(D 对)。线性相关只保证至少存在一个向量可由其余表示,并非每个向量都能(C 错)。
第19题(多选)
已知 $\text{TP}=40$,$\text{FP}=10$,$\text{FN}=20$,$\text{TN}=30$,下列正确的有:
A. 精确率 $P = 0.8$ B. 召回率 $R = \frac{2}{3}$ C. $\text{TPR} = \frac{2}{3}$ D. 准确率 $= 0.8$
答案:A, B, C
考点:机器学习——评价指标
精确率 $P = \frac{40}{40+10} = 0.8$(A 对);召回率 $R = \frac{40}{40+20} = \frac{2}{3}$(B 对);TPR 即召回率 $= \frac{2}{3}$(C 对);准确率 $= \frac{40+30}{100} = 0.7$(D 错)。
第20题(多选)
在设计大模型训练并行策略时,通常采用 3D 混合并行策略(TP + PP + DP)。这样设计的主要原因包括?
A. 提高扩展性 B. 减少单一并行方式的通信瓶颈 C. 充分利用多节点 GPU D. 自动减少模型参数
答案:A, B, C
考点:大模型——分布式训练
张量并行、流水线并行、数据并行结合可提高扩展性(A 对)、缓解单一并行方式的通信瓶颈(B 对)、充分利用多节点多 GPU 资源(C 对)。并行策略只改变计算与存储的切分方式,不会减少模型参数量(D 错)。
第 1 题:自动驾驶障碍物检测
题目描述
在自动驾驶感知系统中,激光雷达扫描周围环境生成大量 3D 点云数据,每个点包含 $(x, y, z)$ 三个空间坐标。为识别障碍物,需要对点云数据做 K-Means 聚类。
给定 $N$ 个三维点和簇数 $K$,实现 K-Means 聚类算法,满足以下规则:
- 初始质心:取输入数据的前 $K$ 个点作为初始质心,编号 $0$ 到 $K-1$
- 距离度量:使用 3D 欧氏距离
- 收敛条件:所有质心坐标变化量均小于 $10^{-6}$,或迭代次数达到 $100$ 次时停止
- 编号保持:簇编号与初始质心对应关系保持一致
- 确定性规则:当一个点到多个质心距离完全相等时,选择编号最小的簇
样例
输入
3 2
0.0 0.0 0.0
0.0 1.0 1.0
1.0 1.0 0.0
输出
0
1
0
思路分析
第一步:观察题目性质
这是一道标准 K-Means 聚类的模拟实现题。所有”不确定性”都被题目钉死了:初始质心固定取前 $K$ 个点、平局取最小编号、收敛阈值和最大迭代次数都给定,因此结果唯一。
第二步:算法流程
K-Means 交替执行两步直到收敛:
- 分配步:对每个点计算它到各质心的距离,归入距离最近的簇
- 更新步:每个簇的新质心取簇内所有点坐标的均值
第三步:实现要点
- 比较平方距离与比较距离本身等价(开方是单调变换),省去开方更稳更快
np.argmin在多个最小值相等时返回首个最小下标,天然满足”编号最小”规则- 若某簇当前无成员(空簇),保持其质心不变,避免除零
第四步:维度变化
点云为 $(N, 3)$,质心为 $(K, 3)$;广播相减得 $(N, K, 3)$ 的差值张量,沿坐标轴求平方和得 $(N, K)$ 距离矩阵,再沿质心轴取 argmin 得长度 $N$ 的标签向量。
题解代码
import sys
import numpy as np
data = sys.stdin.read().split()
pos = 0
n = int(data[pos]); pos += 1
k = int(data[pos]); pos += 1
pts = np.array(data[pos:pos + 3 * n], dtype=float).reshape(n, 3)
centroids = pts[:k].copy()
labels = np.zeros(n, dtype=int)
for _ in range(100):
dist2 = ((pts[:, None, :] - centroids[None, :, :]) ** 2).sum(axis=2)
labels = np.argmin(dist2, axis=1)
new_centroids = centroids.copy()
for c in range(k):
members = pts[labels == c]
if len(members) > 0:
new_centroids[c] = members.mean(axis=0)
if np.max(np.abs(new_centroids - centroids)) < 1e-6:
break
centroids = new_centroids
print("\n".join(str(int(c)) for c in labels))
复杂度分析
时间复杂度:$O(T \cdot N \cdot K)$,其中 $T$ 为迭代轮数(上限 100),每轮对 $N$ 个点各算 $K$ 个常数维距离
空间复杂度:$O(N \cdot K)$,主要是每轮的距离矩阵
第 2 题:Expert Choice Routing
题目描述
混合专家模型(MoE)中,Expert Choice Routing 让每个专家主动选择得分最高的 Top-$S$ 个 Token,保持天然的负载均衡。要求不调用深度学习库,仅用 NumPy 实现以下四步:
- 门控分数与归一化权重:计算 $G = X \cdot W_g$,对每个 token 在专家维度上做数值稳定 softmax
- 每个专家选 Top-S:按归一化权重选最高的 $S$ 个 token,权重相等时优先序号小的
- 专家变换与加权聚合:被选中的 token 做对应专家的线性变换并以权重加权累加
- 零向量补全:未被任何专家选中的 token 输出为全零向量
输入约束:$N, d, E, S$ 须均为正整数且 $S \leq N$,否则只输出一个 $0$。
样例
输入
4 3 2 3
1.0 0.5 0.2
0.8 0.3 0.9
0.2 0.7 0.4
0.5 0.1 0.6
0.3 0.7
0.5 0.2
0.2 0.1
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0
0.5 0.0 0.0
0.0 0.5 0.0
0.0 0.0 0.5
输出
0.28 0.14 0.06
0.59 0.22 0.66
0.11 0.38 0.22
0.37 0.07 0.44
思路分析
第一步:观察题目性质
本题是一道矩阵运算模拟题,不涉及训练,只需照定义完成一次前向路由。所有比较的平局规则都钉死了,结果唯一。
第二步:数值稳定 Softmax
计算 $G = X \cdot W_g$ 得到 $(N, E)$ 的分数矩阵后,对每个 token 在专家维度上做 softmax。关键是减去行最大值:$\exp(g_{ie} - \max_j g_{ij})$,避免指数运算上溢为 inf。
第三步:每个专家选 Top-S
对专家 $e$,取其权重列中值最大的 $S$ 个 token。按 $(-\text{weight}, \text{index})$ 排序后取前 $S$ 个,即可在权重降序的同时让”权重相等取序号小”自动成立。
第四步:加权聚合
若 token $i$ 被专家集合 $\mathcal{E}_i$ 选中,则输出为:
$$Y_i = \sum_{e \in \mathcal{E}_i} W_{ie} \cdot (X_i \cdot W_e)$$把输出矩阵 $Y$ 初始化为全零,没被任何专家选中的 token 自然保持零向量。
第五步:合法性校验
进入计算流程前先检查 $N, d, E, S$ 是否均为正整数且 $S \leq N$,不满足则直接输出 $0$。
题解代码
import sys
import numpy as np
def fmt2(v):
s = f"{v:.2f}"
return "0.00" if s == "-0.00" else s
data = sys.stdin.read().split()
n = int(data[0]); d = int(data[1]); e = int(data[2]); s = int(data[3])
if n < 1 or d < 1 or e < 1 or s < 1 or s > n:
print("0")
sys.exit(0)
pos = 4
X = np.array(data[pos:pos + n * d], dtype=float).reshape(n, d); pos += n * d
Wg = np.array(data[pos:pos + d * e], dtype=float).reshape(d, e); pos += d * e
We = []
for _ in range(e):
We.append(np.array(data[pos:pos + d * d], dtype=float).reshape(d, d))
pos += d * d
scores = X @ Wg
m = scores.max(axis=1, keepdims=True)
expv = np.exp(scores - m)
W = expv / expv.sum(axis=1, keepdims=True)
Y = np.zeros((n, d))
for ee in range(e):
col = W[:, ee]
chosen = sorted(range(n), key=lambda i: (-col[i], i))[:s]
for i in chosen:
Y[i] += col[i] * (X[i] @ We[ee])
print("\n".join(" ".join(fmt2(v) for v in row) for row in Y))
复杂度分析
时间复杂度:$O(N \cdot d \cdot E + E \cdot S \cdot d^2)$,门控分数 $O(N \cdot d \cdot E)$,聚合阶段共 $E \cdot S$ 次 token 变换、每次 $O(d^2)$
空间复杂度:$O(N \cdot E + E \cdot d^2)$,分别存储权重矩阵和所有专家变换矩阵
小结
- 第一题是标准 K-Means 模板,核心在于利用 NumPy 广播一次性算出距离矩阵,
argmin天然处理平局规则 - 第二题是 MoE 前向路由的完整模拟,虽然流程长但每一步都是确定性的矩阵运算,关键是数值稳定 softmax(减行最大值)和排序选 Top-S 的平局处理