1. 从笔试题看第四范式在考什么
每年秋招季,AI公司的笔试题都会被拿出来反复琢磨。第四范式作为做机器学习平台和AI落地解决方案起家的公司,它的2019校招建模笔试题在当年引起过不少讨论——不是因为题目特别难,而是因为考察方向非常"第四范式":不考手推SVM,不考CNN反向传播,而是把大量篇幅放在特征工程、业务建模、结构化数据上。
先说个背景。2019年前后,AI行业正处在从"模型炫技"转向"业务落地"的节点。第四范式的核心产品是机器学习平台,服务的客户集中在金融、零售、制造这些传统行业。这意味着他们的建模工程师面对的不是ImageNet,不是BERT,而是成千上万张的表结构数据、客户行为日志、风控规则库。所以笔试题目基本围绕一个核心问题:给你一堆业务数据和业务目标,你如何把它变成一个可上线、可解释、有效果的模型方案。
这篇文章不打算复述原题(毕竟题目版权和时效性都在),而是结合当年笔试的考察逻辑,拆解这类AI公司建模笔试的典型题型、解题思路、准备方法。不管你是准备校招还是社招,只要目标岗位是机器学习/数据挖掘方向,这套分析都有参考价值。
2. 题型拆解:五大类必考方向
结合当年考生回忆和同类AI公司笔试风格,第四范式的建模笔试题大致可以归为五类。每一类背后都对应一个实际工作场景,这也是它和普通算法题最大的区别——几乎所有题目都能在真实业务里找到影子。
2.1 特征工程与数据预处理
这类题在笔试中占比最高,一般会给一张业务表,包含数值型、类别型、时间型字段,甚至夹杂缺失值、异常值、重复记录。问题通常是:你会如何构造特征、处理缺失值、选择特征?
考察的核心不是你会不会调用fillna,而是你有没有一套可复用的特征工程方法论。比如面对时间戳字段,能不能想到拆分出"距上次行为间隔""近7天行为频次""工作时段标记"这类衍生特征。面对类别特征,能不能根据基数和目标关系选择Label Encoding、One-Hot还是Target Encoding。
常见的失分点在"只答操作、不讲依据"。比如很多考生会写"用均值填充缺失值",但说不清什么时候该用均值、什么时候该用中位数、什么时候该单独分桶。这类题目想看到的是你的判断逻辑:特征分布是否倾斜、缺失是否与目标相关、填充方式对树模型和线性模型的影响有什么不同。
2.2 模型选择与算法原理
第二类是模型相关,但一般不会让你手写损失函数梯度。更多是给出一个业务场景,让你选择合适的模型并说明理由。比如:预测用户是否会逾期,数据有10万样本、200个特征,其中大量类别型变量,你会选择什么模型?
这类题目要拿高分,需要建立一套模型选型框架。最基础的框架是:数据规模多大、特征类型是什么、可解释性要求高不高、上线环境有没有推理延迟限制。比如风控场景天然要求可解释性,你直接说用深度神经网络可能就不是最优解,而XGBoost/LightGBM加SHAP解释会更稳妥。
另一个高频考点是"模型对比"。比如逻辑回归和决策树的优缺点对比、XGBoost和随机森林的差异、Bagging与Boosting的本质区别。这些概念如果只是背定义,很难应对追问,最好能用自己的话把底层逻辑讲清楚。我从实际面试经验来看,能把"GBDT为什么用负梯度拟合残差"用三句话讲明白的候选人,模型题基本都能拿高分。
2.3 业务理解与建模方案设计
这是第四范式笔试最有辨识度的部分。会给出一个完整业务问题,比如"某银行信用卡部门想要降低客户流失率,现有数据包括客户的个人信息、近6个月交易流水、客服交互记录,请设计一个完整的建模方案"。
这种题没有标准答案,但考察维度非常明确:你对业务目标的理解准不准、能不能把业务问题转化为数学问题、方案里有没有考虑到数据口径、样本定义、标签设计、评估指标、上线监控这些工程细节。
一个常见的误区是把方案写成"机器学习项目八股文"——数据清洗、特征工程、模型训练、评估,每一步都点到但每一步都说得肤浅。真正能拿高分的方案往往在细节处见真章。比如会主动讨论"流失用户"如何定义:是连续3个月无交易还是6个月无交易?沉默期设定多长会影响正样本数量和业务干预节奏。再比如评估指标的选择:流失预测是典型的不平衡分类问题,单纯看准确率没有意义,应该看AUC还是PR曲线、Top 10%用户召回率,不同指标对应不同业务侧重。
2.4 代码实现与算法落地
编程题通常不会太难,比LeetCode中等题略简单,但会嵌入数据处理和模型训练的语境。常见的题目有:手写K折交叉验证、实现一个简单的梯度下降、用Pandas完成特定数据变换、手写F1分数的计算逻辑。
这类题考察的是基本功是否扎实。我见过不少候选人理论聊得头头是道,一写代码就露馅——K折交叉验证的索引切分写错、数据标准化时把均值和方差用全量数据计算导致数据泄露、算混淆矩阵时行列搞反。这些细节恰恰是笔试出题人想筛掉的。
准备这类题目没有捷径,就是多写。把Sklearn的StratifiedKFold、GroupKFold底层逻辑自己实现一遍,把Pandas常用操作(groupby、merge、pivot、apply)过一遍,基本就能覆盖80%的考点。
2.5 开放题与业务敏感度
最后会有一两道开放题,比如"你怎么看待AutoML对建模工程师的冲击""如果你来设计一个反欺诈模型,最重要的三个点是什么"。这类题目没有对错,但有优劣。
高分答案通常有一个共同特征:不是只谈技术,而是把技术放在业务约束和成本收益的框架下谈。比如谈AutoML,不是焦虑取代,而是说AutoML能解决特征组合搜索和超参调优的重复劳动,但业务逻辑梳理、样本定义、冷启动方案、模型风险监控这些环节仍然依赖人来决策。这种视角的差异,往往就是普通候选人和优秀候选人的分水岭。
3. 实战演练:典型题目与解题思路还原
光拆题型不够,我们来实际操作一遍。下面还原四道当年笔试风格的典型题目,给出完整的解题思路。这四道题分别对应特征工程、模型方案、算法实现、业务开放题,基本就是整套笔试试卷的缩影。
3.1 特征工程题:客户流失预测的表单处理
假设题目给出一个DataFrame,包含用户ID、注册时间、最近登录时间、近30天登录次数、账户余额、用户等级(普通/黄金/铂金/钻石)、是否完成实名认证,要求构造不少于8个特征,并说明每个特征的设计动机。
一个让我印象很深的思路是,有候选人直接把这个表拆成四个维度去构造特征:时间维度、频次维度、价值维度、身份维度。这个分类意识本身就能体现结构化思维。
时间维度上,除了"最近登录时间"直接用,更关键的是构造"注册到现在的天数"和"距今多少天未登录"。后者往往比单纯的最近登录时间更有业务含义,因为用户活跃度的衰减趋势是流失的核心信号。
频次维度上,"近30天登录次数"本身可以用,但还可以细分为"近7天登录次数"和"近30天与近7天的比值"。这个比值很有意思,它反映了近期活跃度是上升还是下降。比如一个用户近30天登录了15次,但如果其中12次都集中在第一周,说明最近两周其实在流失的边缘。
价值维度上,账户余额直接使用外,还可以根据余额分位数做分桶。这里个人建议做成有序类别特征而不是直接等宽分箱,因为账户余额分布通常是长尾的,等宽分箱会在低余额区间产生大量空箱。
身份维度上,用户等级和实名认证都可以利用。实名认证本身就是一个强特征,结合等级可以做交叉特征——比如"高等级但是未实名认证"这种异常组合,往往暗示账户存在异常或者用户使用意愿不高。
特征工程题的关键不只是特征数量,而是每一个特征都有清晰的业务假设。你构造一个特征,就要能说清楚:我观察到了什么现象、这个现象为什么会与目标相关、这个特征在什么条件下会失效。
3.2 模型方案题:信贷风控模型设计
题目背景:某互金平台有100万注册用户,其中5万人发生过借贷行为,逾期率为2%。平台希望建立风控模型,对新增借贷申请进行风险评分。你手头有:用户注册信息、电商消费数据、社交行为数据、历史借贷记录。请设计完整方案。
这道题首先需要拆解业务约束。样本量只有5万用户发生借贷,其中逾期仅1000人左右,这个正样本规模直接决定了模型复杂度上限。如果选择深层神经网络,很容易过拟合,可解释性也无法满足金融监管要求。比较稳妥的方案是选择GBDT类模型(XGBoost或LightGBM),配合逻辑回归做交叉验证和解释性补充。
特征设计要围绕四个数据源展开。注册信息主要提取身份特征,比如年龄、职业、地区,这些特征稳定性高,但区分度相对有限。电商消费数据能挖掘消费能力和稳定性,比如月均消费金额、消费类目集中度、夜间消费占比——夜间消费占比在当时被很多团队验证与逾期风险存在相关性。社交行为数据的价值在于评估社交网络的稳定性和质量,比如联系人数量、通话时长分布、深夜通话比例等。
标签定义上有一个容易被忽略的细节:观察期和表现期的窗口设置。不是所有逾期都算负样本,通常需要定义"首次逾期超过30天"才标记为负样本,用来排除临时性还款困难的情况。更严谨的做法是区分"短期逾期"和"长期逾期",分别建模或分别设计权重。
评估指标方面,因为正负样本比例悬殊,不能用准确率。AUC可以作为整体排序能力的参考,但更贴近业务的是提升度指标——比如根据模型评分从高到低排序,Top 5%用户能否覆盖60%以上的逾期用户,这个数字直接决定了风控策略的ROI。
方案的最后一定要落到"上线后如何监控和迭代"。模型上线不是终点,要设计PSI(群体稳定性指标)监控特征分布漂移,设定每日评分分布对比,发现衰减就启动重训练。这在笔试中写出来,会明显拉开与其他考生的差距。我当时带过的实习生里,能主动写这一段的不到20%。
3.3 代码题:手写K折交叉验证算F1
代码题一般会给一个简化版任务。比如:给定一个二分类预测结果数组y_true和y_pred(均为0/1),手写F1分数计算函数,然后实现一个5折交叉验证的框架代码。
先算F1,核心是精确率和召回率的计算。需要先算混淆矩阵的四个值:TP(预测为正实际为正)、FP(预测为正实际为负)、FN(预测为负实际为正)、TN(预测为负实际为负)。精确率是TP/(TP+FP),召回率是TP/(TP+FN),F1是2精确率召回率/(精确率+召回率)。
很多考生会在一个地方栽跟头:直接用Sklearn的f1_score交卷,但题目明确要求手写。这时候即使结果一样,评卷人也会认为你基本功不扎实。手写一遍其实只需要十几行代码,但考察了你是否真正理解混淆矩阵的含义。
交叉验证部分,推荐手写循环而不是直接调cross_val_score。手写的好处是你能在每一折里控制数据处理流程,避免数据泄露。一个典型的泄露场景:先对全量数据做标准化,再切分训练集和验证集,这样验证集的均值和标准差其实已经"看过"了,评估结果会偏乐观。正确的做法是只在训练集上计算均值和标准差,然后应用到验证集上。这个细节在工作中极其常见,也是面试官喜欢追问的点。
3.4 开放题:AutoML会不会取代建模工程师
开放题没有标准答案,但回答的思路框架很重要。我的建议是不要陷入"会还是不会"的二元对立,而是分析AutoML能做什么、不能做什么、边界在哪里。
AutoML擅长的是超参搜索、特征组合搜索、模型结构选择这类在明确目标函数下的全局寻优问题。但建模工程师的大量工作其实发生在AutoML介入之前和之后。之前是对业务问题的理解、对数据口径的确认、对标签定义的推敲、对特征工程业务假设的建立。之后是对模型结果的业务解释、对风险边界的把控、对上线后效果的持续监控。
可以有观点:AutoML在标准化场景(比如常规风控评分卡)确实能替代大部分调参工作,但在非标准场景(比如新业务冷启动、多目标冲突、强约束条件下)仍然需要人来定义问题和设计约束。这个回答既承认了技术趋势,也守住了建模工程师的价值定位,比较符合第四范式这类公司对候选人"理解AI落地方向"的期待。
4. 准备策略:有效刷题与知识体系构建
笔试准备如果只是刷题,效率很低。更有效的做法是围绕"业务建模能力"构建自己的知识体系,再通过刻意练习把知识转化成解题速度。
4.1 建立机器学习核心知识框架
第一步是梳理机器学习核心知识框架。建议按这个顺序过一遍:特征工程、经典模型(线性模型、树模型、SVM、KNN)、集成学习(Bagging/Boosting/Stacking)、模型评估(交叉验证、评估指标、过拟合与欠拟合)、概率图模型(可选)、深度学习基础(了解适用边界即可)。
每一块都要做到能用自己的话讲清楚。比如特征工程这一块,要能回答:类别特征有哪些编码方式,各在什么场景下用?连续特征为什么要分箱,分箱的坏处是什么?文本特征如何向量化,TF-IDF的TF和IDF分别解决什么问题?时间特征能衍生哪些子类型?
推荐一个自检方法:找一面墙或打开空白文档,尝试不看资料,把某个主题的完整知识脉络复述出来。如果卡住了,说明这块掌握不透彻,回去查漏补缺。这个方法的效率远高于反复看教程,因为它强制你输出而不是被动输入。
4.2 刷题与面试题库的选择
刷题方面,推荐三个渠道。第一个是Kaggle竞赛的入门级比赛(比如Titanic、House Prices),重点不是名次,而是通过完整实践理解建模流程中的每个环节。第二个是各类公众号和GitHub整理的机器学习面试题库,不要直接背答案,而是先自己答一遍,再对照参考答案看差异。第三个是经典教材的课后题,《统计学习方法》和《机器学习》(西瓜书)的课后题质量很高,尤其是推导和证明类题目。
刷题频率上,建议每天保持1-2小时的代码手写练习加2小时的知识梳理。代码手写练习不仅仅是算法题,还包括数据处理操作。我记得当年准备面试时,每天会随机抽三个Pandas操作场景(比如时序数据重采样、多表关联聚合、窗口函数计算)手写实现,这个习惯帮我避免了很多笔试现场的"低级错误"。
4.3 业务建模案例的积累方法
对于业务建模方案设计题,建议提前积累3-5个完整的案例,覆盖不同场景。比如:电商用户复购预测、金融风控评分、内容推荐召回排序、流失预警、异常检测。每个案例都按照统一的框架整理:业务目标与约束、数据源与口径、样本设计与标签定义、特征工程思路、模型选择与理由、评估方案、上线与监控方案。
积累案例的资料来源有几个:Kaggle的竞赛方案分享(尤其是高名次队伍的solution write-up)、技术大会的演讲PPT、大厂技术博客的实践文章。整理时不要只摘录结论,而是尝试还原作者的思考链条——为什么会选择这个特征、为什么这个评估指标更合理、如果数据量减少一个数量级方案要不要调整。
我个人的体会是,案例积累到一定程度会产生"迁移能力"。当你面对一个没见过的业务问题时,会发现它能映射到某几个已知案例的组合,这时候方案设计就不再是从零开始,而是组装和适配。
4.4 实战模拟与时间管理
笔试的时间压力往往被低估。第四范式的笔试时长两个半小时左右,题量大约以6-8道题为主,包含简答和编程。如果没有提前模拟,很容易出现前面简答题写太详细导致编程题时间不够的情况。
模拟建议:找几套历年题或同类公司的真题,严格限制2.5小时完成。注意几个时间分配原则。简答题控制在每道15-20分钟,分值权重最高的方案设计题可以放宽到35-40分钟。编程题每道预留至少25分钟,如果卡住超过10分钟,果断跳过先做后面的题目。
还有一个细节:笔试中的简答题,阅卷人更关注框架完整度和关键词命中。建议用"总-分"结构作答,第一句先给出核心结论,再展开说明理由。避免大段背景铺垫,笔试题不是论文,看到得分点才是关键。我记得有位阅卷朋友聊过,一份卷子停留时间通常不超过3分钟,段落开头如果没有直接出现得分关键点,很容易被忽略。
5. 避坑经验与常见失分点
从历年笔试情况和身边同学反馈来看,有几类问题反复出现。踩过一次就会长记性,但这些教训写出来能让后来者少走弯路。
5.1 特征工程中的目标泄露
目标泄露是笔试中的高频扣分点,但很多情况下考生自己意识不到。最典型的是在构造特征时用了未来的信息。比如预测用户是否流失,但在特征中加入了"该用户是否在近7天内提交了注销申请"——这个特征在预测时点根本不可得,因为提交注销申请本身就是流失后的行为。
还有一种隐蔽的泄露是用全量数据统计做特征编码。比如用全量数据的Target Encoding结果直接作为特征,这相当于让模型在训练时看到了验证集的标签信息。这类问题在实际工作中经常出现,笔试考的就是你有没有这个敏感度。
5.2 模型评估指标选错
评估指标选错在业务建模方案题中是一个典型的失分点。很多考生习惯性地写AUC、Accuracy,完全不区分场景。对于不平衡分类问题,Accuracy基本没有参考价值,AUC也不够直观。流失预测场景里,业务方真正关心的是:我触达Top 10%的疑似流失用户,能挽回多少比例真正的流失用户。所以你要用"提升度"或者"Top-K召回率"才能说明业务收益。
如果实在判断不清用什么指标,一个万能的表述方式是把多个指标并列:"关注AUC评估排序能力,同时使用PR曲线下的面积评估少数类的识别效果,最后从业务角度报告Top 10%召回率。"这既体现了全面性,也规避了押错指标的风险。
5.3 方案设计只谈模型不谈落地
模型方案设计题最常见的失分点是"模型做完就结束"。真实的业务建模流程是:问题定义→数据探索→特征工程→模型训练→评估→上线→监控→迭代。笔试方案如果能覆盖全链路,哪怕某一环节讲得不够深,整体框架分也会很高。
所谓"谈落地",至少包括三个层面。第一是数据层:训练的样本怎么来,线上推理的输入格式怎么保障。第二是性能层:模型单次推理耗时不能超过多少毫秒,用什么方式部署,是嵌入现有系统还是独立服务。第三是监控层:模型效果衰减如何感知,特征分布漂移如何预警,多久需要重新训练一次。把这些写进方案,明显比只写特征和模型高一个段位。
5.4 代码题中的隐藏陷阱
代码题除了逻辑正确,还有几个容易丢分的小细节。变量命名是否可读会直接影响阅卷人的好感度,建议不要用x、y1这类无意义命名,而是用tp、fp、precision这类有含义的名字。边界条件的处理也容易被忽略,比如除零保护、空数组处理、长度为1的数组切分。
另外一个经常被忽视的点是代码注释。笔试代码题不需要写大量注释,但关键步骤写上简短的注释(比如"仅用训练集计算均值防止泄露"),能帮阅卷人快速理解你的思路,也可能在细节上捞回一些分数。
6. 从笔试到面试:后续环节的准备建议
笔试只是第一关,第四范式的面试通常在笔试后一到两周内进行。面试的深度比笔试更高,尤其是简历上的项目经历会被深挖。如果笔试通过了,建议花时间做以下三件事。
第一,把笔试中没答好的题目重新复盘一遍,尤其是方案设计题。面试官很可能会追问:"笔试那道方案题,你当时为什么没有考虑冷启动问题?"提前复盘能让你在面试时展现出学习能力和自我迭代意识。
第二,准备一个最熟悉的项目案例,能用STAR法则讲15分钟以上。重点不是做了什么,而是为什么这样做、遇到什么问题、如何解决的、最终效果如何验证。我当时面试时被追问最多的是评估指标的选择逻辑:"为什么用这个指标而不是那个指标?"如果你能说清楚指标背后的业务含义,面试官会认为你真的做过项目而不是只跑通了代码。
第三,了解公司业务和产品方向。第四范式主打的是低门槛机器学习平台与行业解决方案,面试中可能会问你对AutoML、迁移学习、隐私计算这些技术方向的看法。提前准备自己的立场和依据,比现场临场发挥要稳得多。
7. 实操后的一些个人体会
写到这里,想分享一点个人经验。我见过不少候选人,机器学习基础非常扎实,但笔试成绩却不理想,原因几乎都是"不会翻译"——脑子里有知识,但没法把知识翻译成阅卷人想看的答案。
这里有一个很管用的技巧:在动笔之前先列答题提纲。哪怕是一个非常简化的提纲(场景→方案→细节1→细节2→风险点),也能确保你的答案结构完整、逻辑清晰。很多考生是想到哪写到哪,结果分数都丢在组织上而不是知识点上。
另一个体会是,建模岗位笔试本质上是在考察你的"结构化思维"。同一个问题,有人能拆成数据、特征、模型、评估、落地五个层面,有人只盯着模型跑分。前者答题自然有层次,后者往往密密麻麻写一大堆仍然让阅卷人抓不住重点。所以准备笔试不只是背知识点,更是在训练自己面对一个模糊业务问题时的拆解能力。这种能力,短期靠刷题可以提升,长期还是要靠在实际项目中刻意练习。
回到第四范式这组笔试题,它折射出的行业信号是:AI公司真正需要的不是只会调包调参的工程师,而是能从业务问题出发、设计完整技术方案、并且知道如何把它落地的建模人才。不管你最终是否加入这家公司,按这个标准去准备,总不会错。最后再分享一个小技巧:平时做项目时,刻意给自己增加一个环节——写一份"建模备忘录",记录每个决策背后的理由。这份备忘录既是你的经验沉淀,也是未来笔试面试最好的素材库。