DeeCamp AI训练营笔试复盘:从数学基础到算法编程的备考指南
2018年春天我还在读研究生。实验室群里突然传开一条消息创新工场的DeeCamp开始报名了。我当时一脸懵只知道这是一家知名投资机构办的AI训练营后来才搞清楚这个名字是Deep Learning和Camp的合体——说白了就是在暑假把一大群学AI的年轻人拉到一起上课加做真实产业项目。那时候人工智能岗位招聘火热谁不想在简历上多一段能打的经历所以报名人数远超预期。申请流程里第一关就是在线笔试我参加的就是2018年第一套B卷。那场笔试过去好几年了但直到今天我面试候选人或辅导学弟学妹时还是会翻出当年对这套卷子的复盘给他们看。这篇文章就把我印象里的DeeCamp 2018在线笔试第一套B卷从题型拆解到答题策略从头到尾讲一遍。正准备申请AI训练营、算法实习或者校招算法岗的同学都可以拿来当一份“AI基础能力体检清单”参考。1. DeeCamp 2018笔试到底在筛什么样的人1.1 项目背景为什么这一年的竞争特别激烈DeeCamp是创新工场发起的公益性质AI人才培养项目从2017年开始办2018年是第二期。和普通培训班不一样它把“课程集训”和“产业实战”拧在一起前一半时间请学术界和工业界的讲师密集讲课后一半时间分组做项目项目数据大多是合作企业提供的真实业务数据。对当时的学生来说这种“能写进简历的真实AI项目经历”诱惑力很大。到了2018年人工智能的热度已经不只停留在论文里遍地开花的感觉越来越明显大厂都在批量招算法工程师自动驾驶、安防、医疗影像、金融风控这些方向全都缺人。但缺人归缺人招人却越来越谨慎——因为市场上一堆简历写着“熟悉深度学习”一问细节就露馅。DeeCamp要解决的就是“学界到产业之间的断层”所以它必须挑那些基础扎实、能快速上手的学员。这也是为什么第一轮就上在线笔试报名的人太多了靠人力一个个面试不现实必须用一套标准化的题先卡一道门槛。2018年的报名者里有刚入学的研究生有马上要找工作的应届生还有一些已经在业界工作了一两年想转AI的人。大家背景差别很大有计算机科班出身的也有物理、数学、自动化、通信这些邻近专业半路转过来的。这套笔试的意义就是既照顾科班选手也看跨专业同学有没有把核心基础补到位。说白了它考的不是谁更聪明而是谁在AI这条路上“底子踩实过”。1.2 笔试在整套筛选流程中的位置DeeCamp的申请流程大概是先在官网填报名表、传简历通过初筛后会收到在线笔试邮件笔试成绩过关再进面试最后综合评估发入营通知。在线笔试处在“简历初筛之后、正式面试之前”位置很微妙。为什么不在简历环节就直接刷掉一大部分人因为简历的区分度实在有限。我后来帮实验室老师筛过实习生简历太清楚了十份简历里至少有六份写着“熟悉Python”“了解机器学习”但真要问写过什么项目、项目里模型怎么调的很多人支支吾吾。而面试本身的成本很高尤其是DeeCamp要接待的是大批量学生。笔试反而是性价比最高的筛选方式一台电脑一个小时就能同时测出数学功底、机器学习概念、编程能力和逻辑思维。面试官拿到成绩单心里基本就有数了。再从参加者的角度看这套笔试也是给所有人的一次“信号释放”官方通过考题告诉你我们不关心你背了多少概念名词我们关心你能不能把概念用在具体问题上。所以笔试里专门有开放题和应用场景题这跟传统那种纯考记忆的选择题完全不是一回事。很多人拿到卷子就意识到这不是一场普通的期末考而是一场“AI工程能力预检”。1.3 整体卷面结构题型比例与时间分配结合我自己的考试经历以及后来和同期朋友、网上同学交流的信息2018第一套B卷大概是这样的结构考试时长90分钟左右题量在40题上下大部分是选择题和判断题中间夹杂1到2道编程题最后有一道开放性的应用设计题。A卷和B卷内容框架一致区别主要在题目顺序和部分数值上B卷据传难度稍微平缓一点但梯度拉得也不小。卷面大致可以分成四块数学基础模块占大约25%。重点在线性代数、概率统计和微积分比如矩阵特征值、条件概率、贝叶斯公式、联合分布、最大似然估计。机器学习与深度学习理论模块占大约35%。包括模型评估指标、正则化、过拟合、常见算法原理、神经网络结构、激活函数等。逻辑推理与编程模块占大约25%。一部分是纯逻辑题一部分是给一段伪代码或Python代码让你判断输出还有一道完整的小编程题。应用与开放题模块占大约15%。会给你一个真实感很强的业务场景让你描述怎么用AI方案解决。这个比例不是凭空来的数学占四分之一说明它默认“AI是数学的工程化”机器学习和深度学习占大头说明这是考察核心逻辑和编程保底说明它要求你“不只会推公式还要能落地”开放题最后把关说明它更在意你有没有大局观能不能从需求梳理到模型部署想完整链路。现在回过头看这套笔试的定位很聪明它不追求每一道题都难到让人做不出来而是用层层递进的方式把“背过几天课件的选手”和“系统学过且动手实践过的选手”区分开。2. 核心题型拆解一道题背后考的是哪层能力2.1 数学与概率题AI理论的底盘数学模块里最常出现的考点我印象最深的有三类线性代数的矩阵运算与特征分解概率统计里的贝叶斯公式与最大似然估计微积分里的偏导与链式法则。第一类矩阵和特征值。题目不会直接让你“求一个3×3矩阵的特征值”这么粗暴而是会包装一下比如给你一个协方差矩阵问主成分分析PCA要做的核心操作是什么。如果只背过PCA的结论“降维去相关性”但不知道它本质是在对协方差矩阵做特征值分解这题就很容易选错。我当时做题时的习惯是看到选项里有“特征向量按特征值大小排列选取主成分”这种描述基本就能锁定答案。第二类概率题几乎是必考的。贝叶斯公式本身不难难的是题目场景绕。比如说一个疾病检测准确率95%、误报率5%、人群发病率1%问检测出来阳性的人真正患病的概率是多少。这就是教科书级别的贝叶斯题但很多人在笔试现场会栽在“把分子分母搞混”上。标准做法是先设事件A为“患病”B为“检测阳性”然后套公式P(A|B)P(B|A)P(A)/P(B)。这里P(B)P(B|A)P(A)P(B|非A)P(非A)代入0.95×0.01与0.05×0.99最终结果大概是16.1%远低于直觉里的“95%”。这种题考的不是公式记忆而是你能不能把文字描述正确翻译成概率符号。第三类反向传播依赖的链式法则。深层神经网络里的梯度计算本质就是链式法则的反复叠加。笔试里可能出现这样的题给定一个复合函数zf(g(x))问你∂z/∂x怎么分解。有些同学因为平时用PyTorch太顺手自动求导用习惯了反而不会手推。这种题请一定拿笔写几步不要心算我们实验室后来在模拟面试里发现很多人不是不懂链式法则而是“因为懒所以错”。数学题这一块给我的最大启示是出题人考的并不是“你会不会算”而是“你知不知道这个数学工具在AI里是干嘛用的”。所以复习的时候一定不要把线性代数、概率论当纯数学去刷题要想每个知识点在机器学习里的对应物矩阵对应数据表特征分解对应降维概率分布对应样本生成最大似然对应模型参数估计。2.2 机器学习与深度学习基础题概念会在场景里叛变这一模块是整套卷子的重头戏考得非常细。我当时的感觉是每道单选题的四个选项都长得很像好像某个老师在故意“埋雷”。考来考去最核心的就那几个点。第一个高频考点模型评估指标。尤其是精确率、召回率、F1这几个概念不是考定义而是考场景选择。比如一个垃圾邮件过滤器我们希望“宁可漏掉垃圾邮件也不要误删正常邮件”这时候应该优先关注哪个指标答案是精确率因为误删正常邮件的代价太高。又比如一个癌症筛查系统我们希望“尽量不错过一个真患者”那就该优先关注召回率。再问F1是什么是精确率和召回率的调和平均为什么用调和平均而不是算术平均因为在两个指标都重要的时候调和平均对“某一项特别低”更敏感能逼着模型均衡发展。这些延伸逻辑光背定义是不行的。第二个高频考点过拟合与正则化。题目常常这么出模型在训练集上准确率99%在验证集上准确率80%问最合理的解决方案是什么。可选的包括“加更多训练数据”“降低模型复杂度”“增加正则化系数”“减少特征数量”……按道理都对但出题人要你选“最根本”的一项。更靠谱的排法是把“增加训练数据”放在第一位因为数据量不够才是泛化能力差的根源后面几项都是补救措施。正则化的原理也是常考点L1为什么会产生稀疏解L2为什么会让权重尽量小背后的几何直觉要清楚。L1在损失函数里加的是绝对值它在最优解附近形成“菱形”约束角点更容易落在坐标轴上于是对应权重被压缩成0L2加的是平方和形成“圆形”约束让权重向原点收缩但不直接变成0。这个解释几乎每年面试笔试都会用到一定要能说出口。第三个高频考点经典ML算法的区别。比如朴素贝叶斯为什么“朴素”就因为它假设特征之间条件独立这个假设在现实中很难成立但恰恰让计算变简单所以它在文本分类这种特征相关性相对弱的任务里反而能打。再比如SVM和逻辑回归的区别SVM关注的是距离决策边界最近的样本支持向量逻辑回归则让所有样本都参与损失计算SVM对高维小样本数据有优势逻辑回归在大规模数据上训练更快、天然输出概率。这些对比靠“背概念”很容易混淆最好的方法是一边做题一边画一张对比表下次遇到直接查。深度学习的题则更直接激活函数为什么用ReLU而不用sigmoid因为sigmoid在两端饱和梯度接近0深层网络反传时梯度连乘直接消失ReLU正区间梯度恒为1能缓解梯度消失问题。但ReLU也有坑负区间输出恒为0如果一个神经元的输入总和一直为负它可能“死掉”所以后来又有了Leaky ReLU。LSTM为什么能解决RNN长期依赖因为它有输入门、遗忘门、输出门通过门控机制决定保留多少历史信息。这些道理现在大家耳熟能详但我记得当年笔试正好考了一道“为什么LSTM比传统RNN更不容易梯度消失”的选择题很多人只答得出“有门控”但说不出“遗忘门可以逼近恒等映射让梯度顺畅回传”。这一层理解恰恰是把“读者”和“实践者”区分开的关键。2.3 逻辑推理与编程题能写代码才是硬通货逻辑推理题在B卷里占比不算多但很有意思。数字推理、图形规律、条件真假判断都出现过。这类题对AI从业者来说并不只是“脑筋急转弯”它考察的是模式识别能力。举个例子给你一串数字2, 6, 12, 20, 30, 42问下一个是多少。如果你能看出它们是n(n1)的形式答案就是56。这种找规律的能力跟算法设计时找递推关系本质上是相通的。所以即便平时不刷行测题我也建议在笔试前练几十道找规律题不是为了碰原题而是为了让大脑保持“找模式”的敏捷状态。编程题部分DeeCamp当年用的是在线OJ系统支持Python、C、Java等主流语言要手写代码并跑通测试用例。难度大概在LeetCode中等偏下不会出现太偏的数据结构。我印象里B卷考了一道和“字符串处理”相关的题需要你判断某种子串的出现次数。这类题看起来简单实际是陷阱高频区一是边界条件比如空字符串、字符串里有大小写混排、数字夹杂符号二是性能如果笔者的解法写成了三层循环在数据量大的时候就会超时。比如你要统计一个字符串里某个子串出现的次数当然可以用Python里现成的str.count()但这种题往往要求你不能用内置API或者字符串特别长O(n×m)的朴素匹配会超时。这时候要么用KMP要么用滑动窗口加哈希。虽然很多人说“笔试不用写最优解能过就行”但我建议第一版就写一个复杂度明早的版本然后在注释里补一句“如果数据量增大可以换成KMP”这样阅卷的人能一眼看到你的算法意识。我当时遇到编程题后的策略是先花两分钟读题把输入输出样例在草稿纸上翻译成“输入x程序要返回y”再开始动手。写完代码后至少在心里跑三组测试普通情况、极端边界、重复元素。这套流程看起来繁琐但能挡住70%以上的低级错误。2.4 开放题从“会知识”到“会落地”的分水岭开放题是很多人的恐惧来源但恰恰是这套卷子里区分度最高的题。我记得题目大致是选择一个你熟悉的业务场景比如零售、教育、医疗、金融等设计一个AI解决方案描述需要哪些数据、用什么模型、怎么评估效果。A卷和B卷的开放题很相似本质上都是“给你一张白纸看你往上面画什么”。我第一次看到这种题也有点蒙但后来总结出一套结构化的答题框架现在也经常用来给学弟学妹做模拟面试一共四步说清楚业务问题。不要一上来就讲模型先定义问题是要做分类、回归、排序还是聚类比如“预测下个月某门店的销售额”是回归问题“识别图片里的商品”是分类问题。说清楚数据来源。模型只是流水线的一部分数据从哪里来、怎么清洗、标签怎么获取才是工程落地最头疼的事。说清楚模型选型与技术线路。为什么用这个模型而不用那个要给出理由不要罗列一堆名词。说清楚评估指标与上线方式。离线评估用什么指标上线后怎么监控如果效果不好怎么迭代。我当时选的场景是“连锁餐饮店的智能进货预测”从历史销售数据、天气、节假日、周边活动这些维度出发预测每个门店每天的食材需求量。模型选型上我提了梯度提升树和时间序列模型结合评估指标用平均绝对百分比误差MAPE。整个描述大概写了三四百字我没追求什么高级词汇只求逻辑闭环。后来和同学复盘发现大家的共识是开放题不看你方案多宏大而看你会不会从小切口切入并完整推理。3. 实操复盘从收到笔试邮件到交卷的全过程3.1 考前一周怎么复习最划算现在很多人一听说线上笔试第一反应是“刷题、刷题、刷题”。但DeeCamp这种侧重基础面的笔试刷题效率很低更划算的做法是“三线并行”。第一条线把机器学习和深度学习的基础概念快速过一遍。这里我建议找一份高质量的知识点清单按“模型评估、经典算法、神经网络、训练技巧”四个文件夹来分每个概念只记三件事这个是什么、解决什么问题、有什么典型场景。不要贪多90分钟能考的内容是有限的核心永远是那些“面试必问款”。第二条线补数学短板。如果你不是数学科班出身优先看概率统计和线性代数因为这两块的出题概率远高于微积分。我在考前突击的时候专门做了一套“贝叶斯×矩阵特征值”交叉训练把所有能想到的场景题都过了一遍结果考场上碰到的概率题基本没卡壳。第三条线做两套模拟题找节奏。时间不充裕的话不用做太多关键是模拟真实的答题节奏。比如我一般在周日早上打开电脑给自己掐表90分钟中间不碰手机、不上厕所完全按考试状态来。第一次模拟我发现自己竟然在前十道数学题上花了25分钟导致后面开放题只能草草结尾。发现问题后我立刻调整策略数学题如果30秒没有思路就先标记跳过。这个调整直接改变了正考那天的体验感。3.2 考试当天的动作清单与时间分配正考那天我提前半小时坐到电脑前做了一连串准备动作检查摄像头、确认浏览器和在线笔试平台的兼容性、准备好电源线、把草稿纸和水放到位、把手机静音丢到另一个房间。千万别小看这些琐事我见过因为浏览器打不开题目而慌到整场崩溃的案例。时间分配上我的经验是“前紧后松、敢于跳过”。卷面90分钟、40题左右平均每题只有2分钟出头但不同类型题的耗时完全不一样。我是这样分配的数学题和逻辑题25分钟内必须做完因为这两类题计算量大容易超时控制不住。机器学习和深度学习选择题30分钟左右检查时要重点看多选题那是丢分重灾区。编程题最多留20分钟如果10分钟没思路就先写一个暴力解保住部分分。开放题留15到20分钟宁可少写点也不能空白。这个分配听起来机械但考试就是需要用流程化对抗压力。我还给自己定了一个“看见题不看选项先想答案”的习惯比如问过一个常识性知识点我先在心里给出自己的回答再去看选项这样能减少被干扰项带偏的可能。这个技巧在单项选择里特别好用因为出题人设置干扰项时最容易套住那些“本来会做但被选项绕晕”的人。3.3 两道典型题的完整答题演示前文提到的疾病检测概率题我当时是这么写的假设人群中患病率P(A)0.01检测准确率P(B|A)0.95误报率P(B|非A)0.05。那么P(B)0.95×0.010.05×0.990.00950.04950.059所以P(A|B)0.95×0.01÷0.059≈0.161也就是16.1%。这道题如果直接套公式可能只花40秒但如果不写中间推导计算时很容易把0.0095漏掉。我特意在草稿纸上分步写验算无误后才选了答案。另一道开放题我的答题思路是“先破题、再搭框架”。破题就是明确业务场景是“连锁餐饮食材进货预测”这是典型的回归问题目标变量是未来一天各SKU的需求量。搭框架时按数据、特征、模型、评估四层展开数据用历史销售流水、门店属性、天气、节假日、周边商圈活动特征上做滞后特征、滚动均值、日历特征模型先用梯度提升树做基线再对比LSTM是否带来提升评估指标用MAPE因为“预测偏少比偏多更可怕”缺货损失远大于库存积压。最后我补了一句“上线后要设计A/B测试并设置人工审核兜底防止模型在节假日等突发场景下失控”。这句话其实是我在实习时踩过坑后才学到的但那时答题直觉告诉我出题人想看到的不只是模型更是工程意识。4. 踩坑实录与高频问题速查4.1 五个最容易丢分的细节第一多选题漏选、多选。很多平台按“完全选对才得分”计算少选半个选项都是零分。所以遇到多选题第一遍先把确定错的排除第二遍再逐项推理不要凭感觉一次选完。我B卷里就有一道“以下哪些方法可以缓解过拟合”多选ABCD四个选项乍看全对但有一个是“增加模型层数”它其实是加重过拟合很多同学就被骗了。第二计算题的“单位”和“精度”问题。概率题里百分比和小数换算出错代价是致命的。建议统一用小数计算最后再转百分比不要在草稿纸上来回转换。填空题的话分数取值要看清题目要求是保留两位小数还是三位小数少一多位都算错。第三写编程题时没有处理边界输入。比如输入为空、输入只有一个元素、字符串里有大小写混合。我在平时陪练时发现至少一半人栽在这种“明知道测试用例会考”的地方。所以编程题写完主逻辑后请立刻补上防御性判断宁可多写两行也不裸奔。第四开放题写得太“模板”。很多学生一看到开放题就写“我打算用CNNRNNAttention做智能客服”五个名词堆在一起但根本没讲清楚业务目标、数据、评估。阅卷人最反感这种“技术词汇拼盘”因为这不是方案是名词列表。第五时间分配失衡。我在考场上亲眼看到同考场有同学在最后一道开放题只剩5分钟的时候才开始写结果只写了两行“用深度学习模型预测”。这属于典型的“前面单题死磕”所致。如果遇到一道选择题算了好多遍还算不出来果断跳过把时间留给后面更容易拿到的分数。4.2 常见问题排查速查表在线笔试这类考试除了题目本身环境和心态也会制造很多意外。我整理了一张问题表基本覆盖当年和后来朋友们提到过的坑常见问题可能原因解决办法交卷时系统提示答案未保存单题答题超时自动跳页平时练习习惯手动保存考试中留意每题旁边的保存状态标志编程题本地能跑、OJ报错输入输出格式不匹配仔细读题目中输入输出样例用sys.stdin而非input()读多行摄像头人脸识别不通过室内光线太暗、戴眼镜反光开考前调整灯光尽量保持面部无遮挡提前半小时测试多选题少选也零分平台计分规则如此做题时看题面有没有提示“少选不得分”不确定的选项宁可不选不必须全对所以要逐个排除后谨慎选择开放题写不完前面耗时太多拿到卷子先把开放题看一遍心里有个底再按“8分钟数学5分钟逻辑”的节奏压迫自己这张表看着很简单但每一行背后都有真实案例。比如“本地能跑OJ报错”这个我当年自己就遇到过写Python时用了input()一行一行读OJ输入是多行一次性给完结果总是读不完全。后来改成sys.stdin.read()统一读取问题立刻消失。4.3 笔试之后无论过没过这份经验都不会白费笔试结束后的几天我焦虑地刷了好几遍邮箱最后收到了面试通知。但后来认识的一个朋友笔试没过他一开始很沮丧觉得自己“不适合AI”。我劝他换个角度想这套卷子帮他提前暴露了自己的基础漏洞比到面试时再暴露要划算得多。他后来花了三个月补齐概率论和编程第二年顺利拿到了另一家AI公司的实习offer。笔试这件事最稀缺的不是那一个结果而是它在短时间内给你的“能力扫描”。我自己从这场笔试里带走的也不只是一张入场券。那套“业务问题→数据→模型→评估”的答题框架后来直接被我用在实习述职、秋招面试和实际项目汇报里。到现在我带实习生还是会让他们先试着用这个框架写一份项目规划再上手写代码。可以说DeeCamp 2018的第一套B卷是我在AI这条路上第一次被系统性地“体检”了一遍。如果让我给后来者一句实在话别把这场笔试当成一次性的应试把它当成一次免费的AI基础能力测试。考得好你给自己争取了训练营的机会考得不好你也拿到了一张明确的“查漏补缺地图”。无论结果是哪种认真做一遍都稳赚不赔。
