2018 DeeCamp AI训练营笔试B卷复盘:从数学基础到工程实践全解析 在AI圈混久了每年的“人工智能训练营”笔试题目都会被翻出来当经典教材看。2018年创新工场DeeCamp那套在线笔试尤其第二套B卷直到今天还有人在各个技术群里讨论。原因很简单那套题几乎涵盖了入门级AI工程师所需要的全部底层能力——数学、机器学习基础、工程能力、以及开放性思维。更关键的是它的出题思路和现在很多大厂算法岗笔试题高度相似甚至更干脆、更考验基础。这篇文章不是“官方答案”而是我结合当年参加者的复盘、公开的讨论帖以及自己多年做算法面试题目的经验把这套B卷的典型题目拆开揉碎逐类分析出题意图、解题思路和备考方法。无论你是准备今年的AI训练营、还是正在刷算法岗笔试题这篇都应该能帮你少走很多弯路。1. 2018年DeeCamp笔试全貌出题逻辑与考核维度设计1.1 B卷的定位与考场体验DeeCamp是创新工场联合多所高校和AI企业发起的公益性质人工智能训练营2018年那届尤其火爆。训练营培养目标是“让AI初学者快速上手产业级项目”所以笔试环节不以刁难人为目的而是筛选出“基础够扎实、思维够灵活、手上有真功夫”的候选人。第二套B卷在全套试卷里属于中等偏上难度的组合卷。和A卷的“大而全”不同B卷更有针对性选择题占比高、知识面覆盖广、编程题偏工程实现、开放题则直接考察你对AI落地场景的理解。整套卷子做完大概需要90分钟时间上并不宽裕尤其是编程题部分很多人会在最后一道题上栽跟头。我见过不少人在桌上吐槽“怎么连矩阵求导都考”也有人说“选择题两分钟一道后面开放题反而写不完”。这说明B卷的节奏设计是有意图的它不希望你花大量文字去阐述空泛概念而是希望你用准确、快速、可量化的方式证明自己的理解。1.2 出题人到底在考什么四个考核象限把B卷所有题目类型拉出来看会发现它其实可以放进四个象限里。第一个象限是数学基础。概率论、线性代数、微积分中的核心公式几乎是必考。这些不是学校考试那种“死记硬背”而是直接放在机器学习场景里考。比如给你一个高斯分布的表达式让你判断它和另一个分布的KL散度或者给你一个矩阵A问你它的特征值分解在PCA中有什么用。第二个象限是机器学习基础。这部分覆盖监督学习、无监督学习、模型评估、正则化、损失函数等内容。考法通常是“以下哪种方式能有效防止过拟合”之类的概念判断题或者是给出训练曲线让你判断模型状态。题目不难但选项之间区分度很高靠的是真正理解而不是背结论。第三个象限是编程与工程能力。这一块通常包括简单的代码补齐题、数据结构题以及一个完整的编程题。B卷的编程题不考复杂算法而是模拟真实的工程场景比如处理一个CSV数据文件、写一个简单的类别特征编码函数。它考察的是你能否写出清晰、健壮的代码而不是纯粹刷题能力。第四个象限是开放题与综合素质。一般会有一到两道“设计题”或“论述题”比如“请设计一个智能客服系统并说明关键模块”。这种题目没有标准答案但很能反映一个人的系统思维和工程落地意识。很多候选人前面做得不错到这儿反而不知道怎么写后面我会专门讲怎么组织这类回答。这四个象限覆盖了从理论到应用的全链路也解释了为什么DeeCamp的学员毕业后在企业里普遍适应得很快——他们本来就是按“能做项目的人”标准筛出来的。2. 数学与机器学习基础核心试题复盘与解题思路2.1 概率与线性代数一个典型题的完整推演B卷里有一类高频题型给定一个含参概率分布要求计算期望或方差或者判断两个分布之间的关系。这类题的核心考点是“你熟不熟悉常用的概率分布及其性质”。举个例子假设X服从参数为p的伯努利分布Y 2X - 1。问你E[Y]和Var(Y)。这个题表面简单但很多人会在符号上翻车。正确求解是E[X] p所以E[Y] 2p - 1Var(Y) Var(2X - 1) 4Var(X) 4p(1-p)。看到没有线性变换系数对期望和方差的影响是“期望线性缩放、方差平方缩放”这个知识点在推导线性回归和逻辑回归的误差条时特别常用。线性代数部分B卷偏爱考矩阵运算和特征值相关内容。一个非常典型的题是给定对称矩阵A如何把它用于数据降维。这个题本质上是在问PCA的实现原理。标准回答是先把数据归一化然后计算协方差矩阵接着对协方差矩阵做特征值分解取最大的k个特征值对应的特征向量组成投影矩阵。题目里真正容易出错的是“是否需要对数据进行中心化”——答案是必须否则第一主成分会被均值方向带偏。2.2 最优化与损失函数为什么梯度下降是灵魂B卷选择题里几乎每年都有一道和梯度下降相关的题目。比如“当学习率设置过大时训练过程会出现什么现象”选项包括“收敛变快”“损失震荡不降”“梯度爆炸”“过拟合”。答案是“损失震荡不降”和“梯度爆炸”都有可能但最直接的表现是损失不收敛。学习率背后的数学逻辑值得多说两句。参数更新公式是 θ : θ - η·∇L(θ)。当η太小时每次更新的步长非常短收敛极慢当η太大时更新步长可能直接越过最优点在最优值两侧来回震荡。极端情况下如果损失函数是类似y x²这样简单凸函数学习率大于2会直接导致发散。这个临界推导过程很简单x_{t1} (1 - 2η)^t·x_1当|1 - 2η| 1时x_t就会爆炸。知道这个推导后你就明白为什么实践中人们常用0.1、0.01这类学习率起步——在这个量级下二次型损失函数基本能保证单调下降。B卷还喜欢让考生比较不同损失函数的特性。比如平方损失和交叉熵损失在分类问题上的区别。平方损失对概率输出做梯度更新时梯度幅度会和sigmoid导数相乘导致在预测概率极端错误时梯度反而接近于0即学习速度很慢。交叉熵则不同它的梯度形式为(p - y)预测和真实差别越大梯度越大天然适合分类问题。2.3 经典模型对比题不可忽视的区别题另一类高频考点是模型对比。典型问法“逻辑回归和线性回归的区别是什么”“L1正则化和L2正则化各自的优缺点是什么”“随机森林和梯度提升树在构造方式上有什么本质区别”。这些题目看似基础但也是区分“背过八股”和“真懂”的分水岭。比如L1和L2正则化如果你只是背“L1产生稀疏解、L2防止过拟合”那在B卷里只能拿一半分。完整的回答应该包含为什么L1正则化的损失函数中包含|w|在0点处不可导且在0点附近的梯度更新会反复跨过原点最终把某些权重压到0L2正则化的梯度是2λw权重越大惩罚越大因此权重只会变小而不会精确为0。关于随机森林和GBDTB卷的考法通常是“哪个模型对异常值更敏感”。正确答案是GBDT因为GBDT每棵树拟合的是损失函数的负梯度近似残差而平方误差下的残差对异常值非常敏感一个超大的离群点会主导后续所有树的拟合方向。随机森林每棵树独立采样、独立训练最后投票求平均天然对异常值有更强的鲁棒性。这个区别在实战中经常被忽略直到数据里出现脏值才开始痛苦。3. 编程能力与工程细节代码类题目的破题示范3.1 伪代码与代码补齐看到题别急着写B卷的编程题不一开始就让你写几百行而是先来一两道“代码补齐”题。这类题一般给出一个函数框架中间留几个空让你把核心逻辑填完整。比如一个简单的k近邻分类函数已经做完了距离计算让你补充投票逻辑。这种题目看似轻松实际上非常考验编码习惯。我的建议是做这种题之前先把整个函数读完整搞清楚输入输出的类型和形状。很多人栽在“返回值的类型不对”上比如要求返回类别标号结果返回了概率。补充逻辑时顺手加上边界条件处理也是一个好习惯。例如k的值大于样本总数时怎么办出现并列票数怎么办。虽然笔试环境下不一定能跑测试用例但阅卷人看了会自动加分——这代表你在真实项目中会考虑异常分支而不是理想化的“数据永远干净”。3.2 数据结构选型一道模拟题的三次优化B卷里有一类工程题非常有意思给定一份包含用户ID、商品ID、评分值的数据让你统计每个用户的平均评分。这道题看起来无比简单不少人第一反应是用两层for循环遍历但数据量一上来就崩。第一次优化是把结构改成字典用户ID作为key评分列表作为value。这样每个用户的评分可以直接累加和计数复杂度从O(m×n)降到O(N)N是所有评分数。这个优化对纯Python场景就已经够用了。第二次优化是考虑内存。如果用户量有一千万所有用户都存一个列表对象太浪费。工程里常见的做法是用两个字典一个存总分sum_dict一个存计数cnt_dict最后再相除。这样内存从“存每个评分”降到“存每个用户的聚合值”。第三次优化是面试里才会深挖的如果数据不是全量加载而是流式到达呢这时候你需要在线更新sum_dict和cnt_dict而不是先收集再统计。DeeCamp笔试不会考到流式计算那么深但这个思路让我后来在处理实时特征计算时非常受益。所以做这类题时别急着提交多想想数据规模、内存限制和实时性要求这些才是工程题的隐含考点。3.3 工程常识题大数据量下的避坑思路B卷的选择题部分偶尔也会出现一两道“大数据量场景下你会选择哪种方案”的题目。比如“当训练数据量远大于内存容量时以下哪种方式最适合处理数据”。正确的思路往往指向“流式读取、分块处理”或者“使用支持外存的算法”。这类题对于有实习经验或做过真实项目的人非常简单但对纯刷题选手有一定杀伤力。因为纯算法题里从来不涉及“内存装不下”这种约束。为了应对这类考点你在准备时可以多了解一些批处理、采样、分桶的基本概念哪怕只是知道名字也能帮助你在选择题中快速排除错误项。我记得当年这道题还有一个细小陷阱选项里有“直接修改操作系统参数扩大虚拟内存”这种看似工程化、实际很荒谬的项。出题人有时候就是故意放一个“看起来有道理、实际不靠谱”的选项进去验证你是否真的处理过大数据。4. 开放式问题AI思考题的高分作答框架4.1 设计题如何用AI解决一个现实问题B卷开放题经常会给你一句话“请选择你熟悉的场景设计一个人工智能系统来解决其中某个核心问题并说明关键模块。”例如当年的典型变体是“设计一个外卖配送时间预测系统”。拿到这种题先别急着写代码而是按下面这个框架组织答案基本上能拿一个完整的分数。第一步是定义问题和评估指标。你要说清楚“我们要预测的到底是送达时间的均值还是分位数”因为外卖场景中超时损失远大于早到收益所以预测p90甚至p95比预测平均值更实用。这是很多人想不到的点。第二步是特征设计。对送餐时间预测来说特征可以分成几组历史订单特征商家出餐平均时长、骑手历史配送时长、实时状态特征骑手当前订单数、天气、交通、地理空间特征距离、商圈拥堵指数。这个结构化的特征列表比零散说“使用时间、距离”要专业得多。第三步是模型选型。这类问题通常会优先考虑梯度提升树类模型因为特征规模适中、数据包含大量离散特征、并且需要可解释性。如果要引入实时数据则可以将GBDT与线性模型进行stacking或者改用简单的深度模型比如Wide Deep结构。第四步是系统落地。要说明训练和推理流程提到离线特征存储、在线特征拼接、模型周期更新等环节。哪怕只简单描述也能让阅卷人看出你有工程意识。4.2 伦理与偏见题站在今天回看一道经典思考题2018年的B卷已经有关于AI伦理和偏见的题目这在当时非常超前。典型的考法是给你一个招聘筛选AI让你谈谈它可能产生哪些偏见以及如何缓解。我当时的回答核心是“偏见来自数据”如果历史招聘数据本身存在性别偏好那么模型学到的就是性别偏好。所以第一步不是调模型而是做数据审计——检查标签和特征之间的相关性尤其是敏感属性性别、年龄、地域等是否被其他特征间接替代。比如“是否毕业于某所高校”这个特征可能间接编码了地域信息。缓解措施可以从数据、模型、评估三个层面回答。数据层面可以重采样或做对抗性去除模型层面可以加入公平性约束项评估层面则要按敏感属性分组去看准确率和误报率不能只看整体指标。这个话题放到今天来看依然极具讨论价值。你在回答这类问题时不需要给出一个“完美无偏”的方案也不存在但一定要体现出你意识到了偏见的来源、传导路径和可行的干预手段。这就已经超过了绝大多数候选人的水平。4.3 追问为什么开放题比选择题更能拉开差距选择题做对靠基础扎实开放题拿高分靠的是思维框架。B卷把开放题放在最后就是希望你在前面的基础题之后用更高层次的结构化思维来展示自己的综合能力。很多人开放题写不好原因不是不懂技术而是回答缺乏结构。想到什么写什么然后越写越乱。我建议给回答设定一个“三段式”问题定义与指标——方案设计——落地路径与风险分析。这样即使你的方案不是最优的阅卷人也能快速理解你的思路。另一个常见问题是“只顾设计、不顾成本”。如果让你设计一套自动驾驶感知系统你却说“用20台激光雷达”这在产业视角下是不现实的。加上成本考量比如“以视觉为主、激光雷达为辅在L2/L3场景下平衡性能与成本”会让你的回答更接地气。5. 从DeeCamp笔试延伸到今天的学习路径5.1 当年考卷给当下学习者的三条可迁移经验DeeCamp那套笔试题虽然过去了几年但背后考察的能力框架始终不过时。第一条经验是“数学基础要真的能推导不能只记结论”。B卷里很多选择题如果不动手推导光凭直觉很容易选错。比如贝叶斯公式计算后验概率的题选项之间的差距非常小只有扎实计算才能选对。第二条经验是“模型理解要重点关注比较与选型”。把不同模型的适用场景、精度与效率、可解释性差异整理成一个对比表格比单独看模型的原理更有效。B卷之所以爱考对比题就是因为真实项目中你永远在做选择而不是在“应用某个唯一正确模型”。第三条经验是“开放题要专门练”。很多人在准备笔试时刷完选择题就结束了完全没练过文字回答。其实开放题恰恰是最容易“考前突击拿分”的部分。你找十道历年真题按“问题—指标—方案—风险”框架写一遍考场上会顺手很多。5.2 结合热词看AI笔试的新动向这几年AI培训和大模型相关的笔试题目又有了新变化。“人工智能训练”这个词从当年的DeeCamp演变成了包含大模型微调、数据配比、RLHF、评测链路等新内容。比如现在讨论得很多的“人工智能Harness”概念本质上是指一套测试与评估的框架类似“模型体检中心”让模型在可控场景下跑通各种测试验证能力边界和安全性。这类内容如果在当年的开放题里出现考察方式大概率是“请设计一套大模型评估方案”。再看“人工智能Skills”或“Agent技能”这类热词笔试会引导你思考“如何把大模型从对话工具变成能调用工具、执行任务的智能体”涉及工具调用、记忆管理和任务编排。还有“OAGOntology-Augmented Generation”这类新的架构范式强调用结构化知识库增强生成结果比单纯靠参数记忆更可控。现在的AI笔试题越来越贴近工程落地和DeeCamp当年强调项目能力的方向完全一致。5.3 大作业与训练营笔试只是敲门砖很多人过了DeeCamp笔试后以为万事大吉结果在训练营的大作业环节被虐得体无完肤。2018年的训练营是分组做真实项目题目覆盖自动驾驶、医疗影像、金融风控等方向。你需要在七天左右的时间里从数据清洗、模型调参到部署演示全部跑通强度非常大。所以如果你现在目标也是参加类似的AI训练营我的建议是笔试阶段就开始培养“全流程”意识而不仅仅刷题。找一个小数据集自己从清理到建模再到简单的API封装走一遍你会发现笔试里的很多选择题在实际做项目时会以另一种方式重新出现。比如你在清洗数据时发现特征分布严重不平衡你会立刻想起B卷里那道“类别不平衡怎么处理”的选择题会用上采样、下采样、调整loss权重等方案来解决。6. 备考实操与踩坑实录时间分配、心态与自查清单6.1 我的实际答题节奏建议当年做B卷时我给自己定了一个时间分配方案选择题和填空题用45分钟编程题30分钟开放题15分钟。这个比例针对的是“选择题分值高、覆盖广”的B卷特点。如果某个选择题卡了超过3分钟立即跳过并标记千万别恋战——后边的编程题可能只需要10分钟就能拿满。第1到20题是最基础的知识点题通常1到2分钟就能解决一个。这部分要保证高正确率因为它决定了你的下限。第20到30题会出现模型对比、概念辨析类题目这时候要特别小心文字陷阱。我当时因为粗心看错了一个选项里的“不能”两个字直接丢了一道题。编程题留30分钟是底线。如果前面选择题超时我会先暂停没完成的开放题把编程题守住。因为编程题是“会就是会、不会就是不会”如果因为时间不够导致没写完实在太亏。开放题则可以边打字边想容错率更高。6.2 考前对照检查清单在真正进入笔试之前建议按照下面这个清单快速自查一遍。数学部分至少应该能手推线性回归的最小二乘解、逻辑回归的梯度更新公式、朴素贝叶斯后验估计能默写概率分布伯努利、二项、高斯的期望方差公式。机器学习部分要能在两分钟内说清楚过拟合与欠拟合的判别指标、交叉验证流程、以及L1/L2正则化的区别。深度学习部分即使2018年DeeCamp笔试深度学习占比不高也建议掌握CNN、RNN的最基本结构以及它们的参数量计算方式。编程部分至少熟练Python的dict、list、set操作能处理简单的CSV数据会写基本的类和数据预处理函数。开放题部分准备好一个自己熟悉的行业场景并提前设计一个AI应用方案。6.3 最容易踩的三类坑第一类坑是“想得太复杂”。选择题里有时候出现两三个看着非常高级的选项比如“使用强化学习中的Actor-Critic架构”之类的。但题目问的可能只是一个简单的逻辑判断高级选项往往是干扰项。B卷的出题人喜欢用专业名词制造迷惑你要做的是回到基础定义去分析问题。第二类坑是“编程题重逻辑轻输入输出”。有些人大思路对了但在输出格式上翻了车。比如题目要求保留两位小数结果直接用print输出原始浮点数或者要求按行输出结果输出了逗号分隔。这些细节在笔试中会被严格扣分在真实项目里会导致下游任务直接报错。第三类坑是“开放题不写评估方案”。设计一个系统时如果只谈了模型和特征却不谈如何评估效果会让阅卷人觉得你缺乏闭环思维。无论什么开放题最后一定要补一句“通过A/B测试或离线指标线上监控来验证改进效果”这一个细节就能让你的答案脱颖而出。我记得当年B卷交卷后群里有不少人讨论最后一道开放题“如何看待AI在某些岗位上替代人类”。有一个高赞回答让我印象很深他说“AI不是替代人而是替代任务中重复、可标准化的部分同时放大人在决策、创造和情感交互中的价值”。这种观点在那个年代就很有前瞻性。放到今天的AI浪潮里看这句话依然说得通——无论是大模型还是智能体最终目标都是把人的精力从低价值劳动中释放出来。最后再分享一个我自己的经验备考DeeCamp笔试时别只盯着原题刷更要把错题对应的知识点回归到教材和项目中重新推演一遍。当年我在概率题上错得最多后来把《概率论与数理统计》前四章重新推导了一遍顺带把线性回归、朴素贝叶斯这些模型的原理也打通了。那段时间的积累比后来刷的几十套题都更有价值。笔试只是起点真正让你走远的还是那份愿意把每个细节琢磨透的耐心。