大厂真题 / 备考技巧
27届算法岗笔试变了!ML编程题成为标配
核心变化
2027届暑期实习笔试出现了一个非常明显的趋势:算法岗笔试开始必考一道机器学习编程题。
目前已确认的公司:
| 公司 | 算法岗题量 | ML题数 | 研发岗是否受影响 |
|---|---|---|---|
| 美团 | 4道 | 1道 | 否(3道传统算法) |
| 携程 | 4道 | 1道 | 否 |
| 蚂蚁 | 3道 | 1道 | 否 |
去年只有少数公司在算法岗笔试中考ML编程题,今年已经三家确认。ML编程题正在变成算法岗笔试的行业标配。
ML编程题 vs 传统算法题
传统算法题考的是数据结构、动态规划、贪心、图论,需要自己设计算法逻辑,C++/Java/Python 都可以用。
ML编程题完全不一样:
- 只能用 Python
- 核心是三个库:numpy、pandas、sklearn
- 不是手推数学公式,而是写出可运行的代码
- 比如用 sklearn 实现 KMeans 聚类,用 pandas 做特征工程
最大区别:传统算法题可以靠思维硬想,ML编程题不会就是不会,考场上临时学库函数来不及。
真题示例:蚂蚁算法岗 - 节点分类器
题目要求实现一个单层 GraphSAGE-Mean 节点分类器:
- 给你一张图的邻接表和节点特征
- 用 numpy 做矩阵运算(一跳平均聚合)
- 用岭回归闭式解求权重向量
- 用 Sigmoid 做二分类预测
- 仅允许使用 numpy/pandas/sklearn
三类人的反应:
- 传统算法选手:完全看不懂
- 有ML基础但没练过编程题的:大概知道思路,但写不出来
- 练过ML编程题的:套路题,10分钟搞定
58道ML真题考点分布
| 考点 | 题数 | 占比 | 代表公司 |
|---|---|---|---|
| 分类算法(随机森林/LR/朴素贝叶斯/KNN) | 12 | 21% | 蚂蚁、美团 |
| 聚类算法(K-Means/DBSCAN/PCA+K-Means) | 9 | 16% | 阿里云、蚂蚁 |
| 深度学习基础(损失函数/反向传播/LayerNorm) | 7 | 12% | 华为 |
| 特征工程(归一化/TF-IDF/PCA/Pipeline) | 5 | 9% | 蚂蚁 |
| 回归算法(线性/多项式/岭回归) | 5 | 9% | 美团、华为 |
| 推荐系统(协同过滤/NDCG) | 5 | 9% | 阿里云 |
| Attention 注意力机制 | 4 | 7% | 华为 |
| SVM(特征权重/核矩阵) | 3 | 5% | 蚂蚁、美团 |
| 异常检测(孤立森林/PCA重构误差) | 3 | 5% | 蚂蚁、美团 |
| 图神经网络(GraphSAGE) | 2 | 3% | 蚂蚁 |
| 时序与概率(HMM/ACF) | 3 | 5% | 混合 |
核心结论:分类 + 聚类合计 21 道,占了 36%,是绝对重点。
各公司偏好差异
蚂蚁(19道,最多)
偏好 sklearn 工具链调用。高频考点:随机森林、TF-IDF 文本特征、PCA 降维。独家考点:GraphSAGE 图神经网络。
美团(10道)
偏好经典 ML 算法,部分题目禁用 sklearn,要求纯 numpy 手写实现。比如手写 SVM 核矩阵、手写 DBSCAN。
阿里云(7道)
偏好推荐系统和聚类。协同过滤、NDCG、K-Means 是高频考点。
华为(12道)
偏好深度学习组件底层实现。Attention、LoRA、反向传播是高频考点,大部分只用 numpy。
备考优先级:优先练蚂蚁和美团的题,考点最通用。华为的深度学习组件题比较独立,投华为算法岗再单独准备。
三个库最常考什么
numpy(几乎每道题都用)
np.array / reshape / flatten # 数组创建和变形
np.dot / @ # 矩阵乘法(Attention、线性分类必用)
np.linalg.norm # 距离计算(K-Means 核心)
np.linalg.inv / np.linalg.solve # 岭回归闭式解
np.exp / np.log # Sigmoid、Softmax、交叉熵
np.argmax / np.argsort # 分类预测、排序
sklearn(蚂蚁/美团高频)
StandardScaler # 数据标准化
PCA # 降维
KMeans # 聚类
RandomForestClassifier # 随机森林分类
LogisticRegression # 逻辑回归
DBSCAN # 异常检测
pandas(数据预处理题)
pd.DataFrame # 创建表格
df.iloc / df.loc # 行列切片
(x - min) / (max - min) # 归一化
三阶段备考路线
第一阶段:基础 API 熟悉(3-5天)
- 刷 numpy 数组操作:创建、变形、索引、矩阵乘法
- 学会 sklearn 标准流程:
fit→transform→predict - 熟悉 JSON 输入输出格式(阿里系 ML 题必备)
- 做 3-5 道基础 ML 题练手:K-Means、KNN、交叉熵
第二阶段:高频题型专项(1周)
- 分类算法:随机森林、逻辑回归、朴素贝叶斯(最高频)
- 聚类算法:K-Means、DBSCAN、PCA+K-Means
- 回归算法:线性回归、岭回归闭式解
- 特征工程:StandardScaler、TF-IDF、PCA
- 每个考点做 2-3 道真题
第三阶段:进阶拓展(3-5天)
- Attention 注意力机制(华为必考)
- 推荐系统/协同过滤(阿里云必考)
- 异常检测/GraphSAGE(蚂蚁特色)
- 纯 numpy 手写实现(美团特色)
建议至少达到第二阶段水平,第一二阶段加起来大概 2 周时间。
最容易踩的坑
1. 输入输出格式
阿里系 ML 题几乎都是 JSON 格式输入:
import json
import numpy as np
data = json.loads(input())
train = np.array(data['train'], dtype=float)
test = np.array(data['test'], dtype=float)
2. StandardScaler 的坑
训练集用 fit_transform,测试集只用 transform,绝对不能对测试集重新 fit:
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) # 训练集:fit + transform
X_test = scaler.transform(X_test) # 测试集:只 transform
3. 数值稳定性
# Softmax 数值稳定版
def stable_softmax(S):
S = S - S.max(axis=1, keepdims=True)
exp_S = np.exp(S)
return exp_S / exp_S.sum(axis=1, keepdims=True)
# Sigmoid 数值稳定版
def sigmoid(x):
x = np.clip(x, -500, 500)
return 1.0 / (1.0 + np.exp(-x))
4. 不会的题先看能不能调 sklearn
很多题目本质上就是:读数据 → 标准化 → 调模型 → 输出。如果题目没限制不能用 sklearn,直接调库是最快的。
小结
- 研发岗不受影响,还是传统算法题
- 算法岗必须额外准备 numpy/pandas/sklearn,花 1-2 周时间
- 分类 + 聚类是绝对重点,占 36%
- 优先练蚂蚁和美团的题,考点最通用
- 铁律:不会的库函数考场上临时学来不及,必须提前练