1. 这份A卷到底在考什么——先看清DeeCamp笔试的筛选逻辑
先说结论:如果你拿到的是一套创新工场DeeCamp 2018年人工智能训练营在线笔试第一套A卷,那你手里的东西远不止是一张试卷,它是一个典型的“AI算法岗入门级能力画像”。我见过不少同学把这种卷子当成普通期末考试来准备,狂背公式和名词解释,结果考完觉得“都会做”,最终却没有收到面试通知。原因很简单:这份卷子考的不是你“知道什么”,而是你在有限时间里“能推导什么、能实现什么、能不能用最直白的方式讲清楚一个复杂模型”。
先交代一下背景。DeeCamp是创新工场面向全球高校学生发起的人工智能训练营,2018年是第二届。那年报名人数相比第一届有了明显增长,筛选压力集中在前置的在线笔试环节。A卷是当时使用的多套笔试卷之一,覆盖数学基础、机器学习理论、深度学习、编程实现、开放问答几大模块,整体风格非常贴近“工业界面试笔试题”而非“学校期末题”。它不要求你背住某个框架的API,也不考你读过多少篇论文,它要求的是:给你一个具体问题,你能从数学定义出发,推导到可实现的算法,再落地到可运行的代码,回答完整链路。
这和很多同学熟悉的考试完全不同。学校考试是“知识点覆盖型”,老师划重点、你背熟就能拿分;DeeCamp这套卷子更像“能力验证型”,题目数量不算夸张,但每一道都需要推导过程和结构化表达。如果你只写一个最终答案、不展示推导,分数大概率是不完整的。换句话说,阅卷人看的不只是答案对不对,而是你的思考过程能不能复现。这也是工业界考察候选人的通用标准——毕竟训练营最终要面对的是真实项目,不是标准答案题库。
那它具体考了哪几块?我整理了一下,大致可以分成四块:数学基础(线性代数、概率论与最优化)、机器学习与深度学习理论、编程实现与算法题、开放题与综合问答。下面我一块一块拆开讲,每一块都会告诉你它考察的是什么能力、为什么考这个、以及怎么准备才是有效的。
2. 数学基础模块——真正拉开差距的是“会用”而不是“会背”
2.1 线性代数:不是考计算,是考你对矩阵运算的直觉
A卷里线性代数相关的题目,表面上看起来是特征值、特征向量、矩阵分解这些老生常谈,但实际考察的深度比大多数学校的期末卷要狠。举个例子,它不会直接问你“什么是SVD”,而是会给你一个具体的数据场景,比如让你用SVD做降维,并要求你解释为什么保留最大的若干个奇异值就能近似原矩阵,而且近似误差的界是什么。这种题考的就是一个核心能力:你懂不懂SVD的本质是一种“低秩近似”。
我当时复习线代时踩过一个坑:把大量时间花在手工计算行列式、逆矩阵上,结果笔试时根本不考这些。真正用得上的反而是一些看起来很“基础”的东西:矩阵乘法怎么从行向量视角理解、特征值分解的几何意义、向量内积与投影的关系。我建议复习时抓住几个关键点:特征值与特征向量的计算与几何含义、SVD与PCA的关系、矩阵求导法则(尤其是对向量和矩阵求导的链式法则)、二次型的正定性判断。这些不是孤立的知识点,它们是后面理解神经网络反向传播、正则化项、损失函数设计的地基。
顺带一提,矩阵求导在A卷里几乎必考。深度学习的反向传播本质就是链式法则在矩阵形式上的反复应用。如果你对“损失函数对权重矩阵的导数”这个概念没有直觉,光靠死记梯度公式是走不远的。一个可行的复习方式是:把最简单的线性回归用矩阵形式写出来,然后手动推导一遍梯度公式 dL/dW,推完再对照反向传播的代码,很多疑问会迎刃而解。
2.2 概率统计:贝叶斯和极大似然估计是两条主线
概率统计是A卷的重头戏,考察方向非常聚焦,几乎没有出现“掷骰子算概率”这类低阶题,重点集中在两件事:贝叶斯公式的应用和极大似然估计的推导。
贝叶斯公式之所以被反复考察,是因为整个机器学习体系的底层逻辑都是贝叶斯的:先验、似然、后验。A卷里会经常出现“给定某类疾病检测的准确率和假阳性率,求检测为阳性时真正患病的概率”这类题,表面上是朴素贝叶斯,实际上是在考察你能否区分P(A|B)和P(B|A)。这个区分能力在后续学习朴素贝叶斯分类器、正则化项的贝叶斯解释、生成模型与判别模型的对比时,都会反复用到。
极大似然估计则是另一个重头戏。你需要掌握完整的推导链条:写出似然函数、取对数、求导、令导数为零、解出参数。我印象比较深的是,A卷里给了高斯分布的一组样本,要求你推导均值和方差的MLE估计,并且要说明为什么方差估计是有偏的。这道题的区分度在于:很多人会背均值的MLE是样本均值,但方差估计的“有偏性”讲解往往含糊。如果你能自己推导一遍,再顺带提一下修正的无偏估计量是除以n-1而不是n,这道题的分数基本就稳了。
除了以上两点,常见分布的期望和方差(伯努利、二项、泊松、均匀、正态)、条件概率与独立事件、大数定律与中心极限定理的直观理解,也会偶尔出现。复习时可以提前把所有常见分布的期望方差整理成一张表,笔试前过一遍。
2.3 最优化:梯度下降和拉格朗日乘子法
A卷的数学题里,最优化通常会以两种形式出现:一是直接要求比较批量梯度下降、随机梯度下降、小批量梯度下降的异同和适用场景;二是给一个带约束的优化问题,要求用拉格朗日乘子法求解,或者解释对偶问题的含义。
梯度下降这道题,重点不在于背出三种方法的定义,而在于说清楚它们背后的权衡:批量梯度下降每次迭代利用全部数据,方向稳定但计算量大;随机梯度下降每次只用一个样本,计算快但噪声大;小批量梯度下降则是两者的折中,配合学习率衰减,在工业界最常用。一个比较加分的答法是提一下“为什么小批量梯度下降在GPU上效果好”,因为GPU的并行能力正好能同时计算一个小批量的矩阵运算,这种细节能体现出你真的跑过实验,而不是只读过书。
拉格朗日乘子法通常会联系到SVM的对偶问题。如果你能在推导形式化写法时,顺带说清楚原问题和对偶问题之间的关系,以及KKT条件在什么情况下生效,这道题就远超平均水平了。我当时复习时采用的方法是:找3道带约束优化题,分别用拉格朗日乘子法完整推导一遍,再对比几何直觉(约束曲面上的切平面与目标函数梯度的关系)。只有亲手推过,考场上才不会手忙脚乱。
3. 机器学习理论题——既考模型推导,也考你讲清楚的能力
3.1 经典模型的核心考察点
A卷里机器学习理论题覆盖面比较广:线性回归、逻辑回归、决策树、SVM、K-Means、KNN、朴素贝叶斯,基本都考到了,但每一类模型的出题角度都有套路可循。
线性回归的核心考察点是:目标函数怎么写、正则化怎么加、L1和L2的区别在哪里、闭式解怎么推导。尤以L1与L2的区别为高频考点,你可以从“L1产生稀疏解、L2产生小权重”这一结论出发,再补一段说明为什么L1能产生稀疏解——因为L1约束在坐标轴上有尖角,最优解更容易落在坐标轴上。能把这个几何直觉画出来再加上数学表达,这道题就拿分很稳了。
逻辑回归和SVM的对比是另一个高频方向。出题形式往往是“请比较逻辑回归和SVM的异同”,这时候不能只答“一个是概率模型一个是最大间隔模型”,要补充细节:逻辑回归的输出可以解释为概率,SVM的输出是距离间隔;逻辑回归天然处理多分类(softmax),SVM通常用OvR或OvO策略;逻辑回归对数据分布敏感,SVM在小样本高维场景下表现更稳。能这样答,说明你对模型的适用边界有真正的判断力。
决策树的核心考点围绕信息增益、增益率、基尼指数展开。你需要能写出信息熵公式并解释含义,同时能说明ID3、C4.5、CART三者的区别。我当时整理了一张对照表,复习效率很高,也分享给你参考:
| 算法 | 特征选择标准 | 适用问题 | 特点 |
|---|---|---|---|
| ID3 | 信息增益 | 分类 | 对取值数目多的特征有偏好 |
| C4.5 | 增益率 | 分类 | 可处理连续值和缺失值 |
| CART | 基尼指数 | 分类/回归 | 二叉树,剪枝后性能稳定 |
聚类方面,K-Means几乎必考。除了能写出算法步骤(初始化质心、分配样本、更新质心、重复迭代),还要能回答“K-Means的目标函数是什么”“K-Means有哪些局限性”“如何选择K”。目标函数是所有样本到所属质心距离的平方和,这个公式要会写;局限性要从初始化敏感、对非凸簇无效、对异常值敏感几个角度展开;选择K的方法可以提肘部法则,但最好能补充说明它的主观性较强,这也是面试官常问的。
3.2 深度学习:网络结构、反向传播、防止过拟合三条线
A卷里的深度学习题数量不多但分值很高,考察重点非常经典。网络结构这块,CNN至少要知道卷积层、池化层、全连接层各有什么作用,并且会计算卷积输出尺寸:输出尺寸 = (输入尺寸 - 卷积核尺寸 + 2 * padding) / stride + 1。这个公式看起来很基础,但每年都能卡住不少人,尤其是padding和stride同时存在时容易算错。
反向传播是深度学习理论题里最核心的一道,A卷通常会给一个两层网络或者一个带sigmoid和MSE损失的小网络结构,要求你用链式法则逐步计算梯度。这里特别提醒一下:不要只背公式,一定要有手推的能力。我当时练的时候每道题都写到“把每个中间变量的值代入、算出具体数值”为止,笔试时遇到类似的题就非常顺手。还有一个经验是:sigmoid函数的导数可以写成 σ'(x) = σ(x)(1 - σ(x)),这个形式在计算时能节省很多时间,记得优先使用。
防止过拟合这块,常见手段包括L1/L2正则化、Dropout、早停、数据增强、批归一化(BN),答题时最好分成“为什么有效”和“适用场景”两层来写。例如Dropout之所以有效,是因为它强迫网络不依赖某一个特定神经元,相当于训练了多个共享参数的子网络的集成;但它的副作用是训练和推理阶段的尺度变化,所以测试时权重要乘以保留概率(或者用Inverted Dropout),这个细节很能区分“真正用过”和“只读过”的人。
3.3 模型评估与调参:精确率、召回率、F1、偏差方差
模型评估这部分的出题形式通常是:给一个分类器在某测试集上的混淆矩阵,要求计算精确率、召回率、F1值,并讨论类别不平衡场景下哪一指标更有参考价值。精确率 = TP / (TP + FP),召回率 = TP / (TP + FN),F1是两者的调和平均。这个调和平均的设计思路很有考究:F1对精确率和召回率中的较小值更敏感,因此只有在两者都较高时F1才会高。如果题目问“在医疗诊断中更看重哪个指标”,答案是召回率,因为漏诊的代价远高于误诊。
偏差和方差的区分也是一道经典题:高偏差对应欠拟合,高方差对应过拟合;增加训练数据对高方差有效,对高偏差无效;正则化强度的提升会增加偏差但降低方差。这类题目回答时最好画一个简略的偏差方差曲线图,同时配合说明模型复杂度与泛化误差的关系,既直观又能体现出分析框架的完整度。
4. 编程与算法题——考场不认“我思路是对的”,只认“跑不跑得过”
4.1 笔试环境与语言选择的策略
编程题是这场笔试里最直接拉开实战与理论差距的模块。先说一个战略层面的建议:除非你C++有绝对优势,否则优先使用Python。原因有三:一是Python的库很全,算法题里常用的排序、堆、队列都有现成实现,省去手写数据结构的时间;二是Python写代码量更少,在限时环境下就是硬优势;三是机器学习相关的字符串处理、矩阵操作题,用Python几乎不会出错。
但这不意味着Python没有坑。有一类同学会在笔试里花大量时间处理输入输出,导致题目逻辑还没写完就被迫交卷。我的建议是提前准备几套常用的输入处理模板,比如从标准输入读取多行数字、按空格分割转换成整数列表、处理不定行数的输入流。这些代码在考试前就写好并记住,考场上直接默写,能省出10分钟到15分钟的时间。
4.2 高频算法模板:二分、双指针、动规、DFS/BFS
从DeeCamp以及同类AI营的笔试来看,算法题难度整体在校招笔试里属于中等偏上,但高频题型非常明确:
- 二分查找及其变体(查找目标值、查找左右边界、在旋转数组中查找目标值)。
- 双指针法(两数之和、有序数组去重、滑动窗口最大值)。
- 动态规划(背包问题、最长公共子序列、最长上升子序列、编辑距离)。
- 图或树的遍历(二叉树的层级遍历、岛屿数量、连通分量)。
- 排序与堆(Top K问题、合并K个有序数组)。
这些模板需要达到“闭眼默写”的程度。笔试时没有时间现场推导状态转移方程,尤其是动态规划题,你得在3分钟内判断出这是背包还是区间DP,然后直接从记忆里调出模板。我当年准备时,每个模板至少手写了三遍,写到第3遍的时候速度已经能稳定在5分钟内,这个熟练度在考试时特别重要。
4.3 手写实现题:K-Means、PCA、Softmax交叉熵
A卷里还有一类非常有意思的题目:直接要求你用Python手写某个机器学习算法的核心步骤。这类题既考算法基础,也考代码实现能力,是纯面试笔试里的高频题。
以手写K-Means为例,核心代码量其实不长,但有几个细节值得注意:初始化质心时要用np.random.choice随机选择样本点;分配样本时计算的是欧氏距离,用广播机制避免显式循环;更新质心时用簇内样本的均值。一个容易出错的细节是,当某个簇为空时质心如何更新——正确的做法是保留上一次的质心或重新随机初始化,如果直接除零就会崩溃。笔试时能把这种边角条件处理好,阅卷观感会好很多。
手写PCA的考察点是:先对数据中心化(减去均值),再计算协方差矩阵,然后用特征值分解或SVD得到特征向量,最后投影到前k个主成分。这里有一个常见误区是忘记中心化,导致第一主成分实际上是均值方向而不是最大方差方向。此外,主成分方向是特征向量而不是特征值,很多同学一紧张就写反了,需要特别注意。
4.4 时间不够时的得分策略:暴力解也能拿一半分
编程题通常不只一道,难度从简单到困难递增。我的建议是:先把所有题目都看一遍,然后严格按照“易到难”的顺序做题,不要在一道题上卡超过20分钟。如果一道题暂时没有好的解法,先写一个暴力版本,保证样例能过,再在暴力基础上优化。很多同学觉得暴力解丢人,但笔试的得分规则是部分正确也计分,暴力解的得分率往往比空着高得多。
另外,复杂度估算的能力很重要。如果你看到n的最大值是10^5,那么O(n^2)的算法很可能超时,这时候就要优先思考O(n log n)或O(n)的解法;如果n只有100,暴力枚举可能是最稳妥的策略。这种基于数据规模判断算法取舍的能力,是平时刷题时最容易积累的,也是笔试时的护身符。
5. 开放题与综合问答——拉开差距的地方不在代码
5.1 开放题的核心是什么:向真实世界要问题
A卷的最后部分通常是一两道开放题,从“AI+教育如何落地”“如何用AI技术改进传统行业”到“设计一个智能客服系统”不等。这类题没有标准答案,但阅卷人会从几个维度打分:问题定义是否清晰、数据方案是否可行、模型选型是否有依据、评估指标是否合理、有没有考虑风险和失败案例。
开放题最大的陷阱是“答得很宽、但没有任何落地感”。例如回答“用AI改进医疗”时,如果只写“用深度学习做病灶识别”就太空了。一个高分回答应该拆解为:先限定一个具体场景(比如肺结节CT影像的辅助筛查),再说明数据来源和标注方式(收集医院历史影像,由放射科医生标注),模型选型(2D/3D CNN或者检测网络),评估指标(敏感度和特异度平衡,因为漏诊和误诊的代价不同),以及落地难点(数据隐私合规、模型可解释性、医生接受度)。能够按这个结构作答,已经比绝大多数“AI改变世界”式的空话强太多。
5.2 结构化的回答框架:问题定义、数据、模型、评估、风险
如果你想在开放题上拿高分,建议掌握这个通用框架:问题定义 → 数据方案 → 模型设计 → 评估指标 → 风险与边界。
问题定义要求你明确:具体解决谁的什么问题,输入是什么、输出是什么。数据方案要回答:数据从哪里来、如何清洗、正负样本比例是否失衡、隐私和标注成本怎么处理。模型设计要结合问题的特性和数据量,说明为什么选这个模型:数据量小选线性模型或SVM,数据量大且是图像类选CNN;语言类选RNN或Transformer(2018年时更常见的是LSTM)。评估指标要有针对性:回归用RMSE/MAE,分类用准确率/精确率/召回率/F1。风险与边界是很多同学会漏掉的部分,但恰恰是体现成熟度的关键:数据漂移、对抗样本、模型偏见、算力成本,写出来就是加分项。
这个框架平时准备两三道题,考场上套用起来会非常顺。我当时的做法是提前准备了三个方向的应用场景——医疗、金融、教育,每个方向都用一个具体的子问题练过这个框架,后来考试时遇到“AI+教育”的开放题,基本是默写加微调,节省了大量思考时间。
5.3 结合2018年的技术背景:那一年什么最火
如果你拿到的是2018年的A卷,开放题的背景通常与当年的技术热点相关。那年AlphaGo带来的关注热潮尚未消退,人脸识别、自动驾驶、智能语音助手、AI+医疗影像都已经成为创业和学术的热点。回答开放题时,如果能结合当年的热点技术背景,会更容易踩中出题人的预期。例如谈到计算机视觉落地时,提到“基于深度卷积神经网络的目标检测模型在工业质检中的应用”,就比泛泛而谈“AI很厉害”更有说服力。
但这不意味着你要去追热点。“热点”只是背景板,最终分数取决于你方案本身的完整度和逻辑性。我当时考场上的策略是:从自己最熟悉的应用领域切入,宁可做一个“小而完整”的方案,也不做一个“大而空”的展望。这其实是DeeCamp选拔的目标导向——训练营培养的是能动手解决实际问题的工程师,不是评论家。
6. 备考路线图与临场细节——把我踩过的坑提前告诉你
6.1 两周冲刺计划:数学推导、模型综述、编程手感三轮走
如果你拿到这套卷子时还有大约两周时间,我建议按三轮安排复习,效率和效果比较均衡。
第一轮(第1到3天):集中过数学基础。线性代数重点复习特征值分解、SVD、矩阵求导;概率统计重点复习贝叶斯公式、极大似然估计、常见分布;最优化重点复习梯度下降变体、拉格朗日乘子法。这一轮的输出物是:每块内容能不看笔记写出核心公式和推导关键步骤。
第二轮(第4到8天):集中刷机器学习与深度学习理论。把常用模型(线性回归、逻辑回归、决策树、SVM、K-Means、朴素贝叶斯、CNN、RNN)的推导和面试常见问题全部过一遍,同时整理表格对比相似模型的异同。这一轮的输出物是:每个模型能不看资料说出目标函数、优化方法、适用场景、优缺点四个维度。
第三轮(第9到14天):编程题和模拟测试为主。每天2道高频算法题+1道手写机器学习模型实现,最后2天各安排一次完整的模拟笔试,严格限时。模拟测试非常重要,它能帮你发现“知识点会但时间不够用”的致命问题,提前调整做题策略。
6.2 三个我亲历过的备考坑
第一个坑是“只看不推导”。我第一遍复习时习惯仔细看书上的推导过程,觉得看懂了就等于掌握了。结果一合上书,连逻辑回归的损失函数对参数的梯度都写不利索。后来的教训是:所有的公式推导必须亲手在纸上过一遍,直到能独立默写完整链条,才算真正掌握。
第二个坑是“死磕难题,丢基础分”。有一段时间我沉迷刷偏题怪题,觉得简单的题没挑战。但DeeCamp这类笔试的基调是基础为主、中等难度为辅、难题极少。把时间和精力大量花在难题上,性价比很低。正确的策略是:把基础题和中档题练到接近满分,难题尽力而为,如果有余力再突破。
第三个坑是“编程题不练手感,以为会思路就行”。笔试的编程题和LeetCode刷题有一个明显的区别——你要在指定时间内完成多道题,而且不能依靠编译器的实时报错来改Bug。平时练习时,一定要养成不看提示、一次写完、再集中调试的习惯,这比刷题数量重要得多。
6.3 临场答题的几个实战技巧
最后分享几个临场技巧,都是踩过之后总结出来的。
第一,拿到试卷先花2到3分钟快速浏览全部题目,标记出会做的、需要思考的、大概率要放弃的。先做会做的,拿到基础分,再回头啃中档题,难题放到最后。
第二,数学推导题注意把关键公式写在最显眼的位置。阅卷是按步骤给分的,即使最后结果算错了,正确的公式和清晰的推导步骤依然能拿到大部分分数。千万别只写结论不写过程。
第三,手写代码题要注意变量命名的可读性,就算最后没写完,阅卷人也能从你的思路里看到代码框架和逻辑。如果完全没思路,写一段注释说明你的解题思路,也比空着强——这至少证明你有分析过程。
第四,开放题留足时间,至少10到15分钟。很多同学前面数学题花太久,导致开放题只能草草写两行,非常可惜。开放题分值高、可写性强,只要按框架展开,是最容易获得稳定分数的一块。
第五,带一个能快速画图的东西。草稿纸或者白板,在答题时画出偏差-方差曲线、神经网络结构图、K-Means迭代过程图,不仅能帮助你整理思路,还能让答案更清晰直观。有些题(比如解释过拟合)光用文字描述非常啰嗦,一张图加三句话就讲清楚了。
这套A卷看起来只是通往DeeCamp的一道关卡,但它的考察逻辑其实和很多AI算法岗的面试笔试高度一致。认真吃透它,收获的就不仅仅是一次笔试的通过率,而是对整个AI基础体系的一次有效复盘。准备过程中你感到的每一次“推不下去”“写不顺”,都是在帮你定位知识盲区——这些盲区越早暴露,越值得庆幸。