每年一到七月底八月初,社区里就开始冒出各种“XX秋招笔试题”的帖子,今年轮到了第四范式。作为国内做AI平台和机器学习解决方案的代表性公司,第四范式的笔试题目一直以“覆盖面广、藏坑点多、工程和算法结合紧”著称,2020年的这轮秋招IEG方向的笔试题,整体难度属于中等偏上,但真正拉开差距的不是会不会做,而是能不能在有限时间里把会做的题做对、把不会做的题抢到分。
我花了两个晚上把能找到的2020第四范式秋招IEG笔试题翻出来重新做了一遍,也把当年自己在准备这类笔试时踩过的坑、总结的方法一并整理出来。这篇文章不是简单的题目答案罗列,而是想带着你把这个岗位的笔试拆开看——它会考什么、为什么考这些、不同基础的候选人分别该把重心放在哪里。不管你是正在准备秋招的2025届选手,还是想跳槽到AI公司做算法平台的工程师,这篇文章应该都能给你一些实实在在的参考。
1. 先把IEG和笔试题型这件事聊明白
1.1 IEG到底在招什么样的人
很多人第一次看到“IEG”这几个字母,会下意识联想到游戏业务——毕竟腾讯有个互动娱乐事业群也叫IEG。但在第四范式的招聘语境里,IEG指的是Intelligent Enterprise Group,也就是智能企业事业群,核心方向是用机器学习技术去解决企业级客户的实际问题,比如智能运营、精准营销、风险管理、供应链优化等等。
这个定位直接决定了笔试的出题风格:它不会像纯研究岗那样考太多推导和论文复现,也不会像纯后端岗那样只考网络和操作系统,而是更偏向“懂算法、会工程、能落地”的复合型要求。笔试题目中算法题和机器学习基础题往往各占半壁江山,同时还会穿插一两道和业务场景结合的开放题,用来考察你把技术转化为业务价值的能力。
1.2 2020年这场笔试的题型结构
虽然不同批次的试卷在具体题目上会有差异,但整体结构基本稳定,可以归纳为四大块:
| 模块 | 题型 | 题量占比 | 考察重点 |
|---|---|---|---|
| 算法与数据结构 | 编程题 | 40%左右 | 动态规划、图论、贪心、字符串处理 |
| 机器学习基础 | 选择题/简答题 | 30%左右 | 模型原理、损失函数、特征工程、评估指标 |
| 工程能力 | 选择题 | 15%左右 | Python/Golang基础、Linux命令、分布式概念 |
| 场景开放题 | 简答/设计题 | 15%左右 | 业务建模思路、技术方案设计 |
这个结构对候选人来说是很友好的——因为它的考核面广,但每一块的深度都在可控范围内。换句话说,只要你基础扎实,哪怕不是顶会paper作者,也有机会拿到不错的分数。反过来也说明一个问题:临时抱佛脚式的刷题策略,在这个笔试里基本行不通。
2. 算法编程题的出题套路与实战拆解
2.1 动态规划依然是绝对的主角
从我找到的2020年题目回忆版来看,编程题里动态规划相关的题目至少占了一半。有一道题让我印象很深,大致是给一个数组,要求将数组分割成若干连续子数组,每个子数组的和不能超过给定阈值,问最少能分成多少段。这道题看起来像贪心,但实际上直接贪心会出错,必须用DP预处理前缀和,再做区间划分的决策。
这类题目的核心套路是:先想清楚状态定义,再想转移方程,最后看能不能优化空间复杂度。很多人在笔试现场卡住,不是因为不会DP,而是因为一上来就想着写最优解,结果在边界条件上反复纠结,浪费了大量时间。我自己在2020年准备阶段做过一个统计,DP题目如果状态定义正确,平均只需要两分钟左右就能写出转移方程,真正耗时的是边界判断和初始化。所以建议你拿到题目后,先在草稿纸上把状态定义和转移方程写清楚,再动手敲代码。
另外还有一个实用技巧:如果DP的转移方程里有明显的“从一个区间内取最值”的操作,一定要优先考虑用单调队列或者线段树来优化,第四范式的笔试题不会刻意卡这种复杂度优化,但如果你能用优化方案做出来,面试官在简历筛选和后续面试中会对你留下更好的印象。
2.2 图论题不是考模板,是考变形能力
有一道题是典型的图论变形:给定一个有向图,每个节点有一个权值,要求找出一条路径,使得路径上节点权值之和最大,且路径上不能出现重复节点。这道题猛一看像是DAG上的最长路问题,但实际上图中可能有环,不能直接做拓扑排序加DP。
我当年的处理方式是:先用Tarjan算法把强连通分量缩点,缩点之后图就变成DAG了,然后再做带权的最长路径DP。这种“缩点+DAG上DP”的组合是竞赛里的经典套路,在笔试题里出现也完全不意外。如果你对Tarjan不熟,这道题基本就只能拿到部分分数。所以如果你还在准备阶段,我建议把图论的基础算法过一遍:链式前向星建图、拓扑排序、Dijkstra、Floyd、Tarjan缩点、二分图匹配判断,这些属于高频考点,值得反复练习。
2.3 字符串处理题的隐藏考点
字符串相关的题目在2020年那批笔试题中也出现过,我记得有一道是要求判断一个字符串能否通过删除若干字符变成另一个字符串的子序列。这道题很多人第一反应是用双指针,确实也是标准解法,但题目在输入规模上做了文章——字符串长度可能到了10的6次方级别,用Python的普通双指针循环虽然能过,但如果你的代码里用了字符串切片或者频繁调用replace之类的方法,大概率会超时。
这说明一个很重要的点:写算法题的时候,你必须清楚自己用的语言在处理大规模输入时的性能特征。同样是双指针,Python里用索引访问比用for循环遍历切片快得多;同样是字符串处理,Java里用StringBuilder比字符串拼接高效一个数量级。这些细节在LeetCode上可能感觉不到,到了笔试的时限环境里,就是过与不过的区别。
3. 机器学习基础题的关键得分点
3.1 模型原理考题背后的深层逻辑
机器学习基础部分通常以选择题和简答题为主,覆盖的考点包括逻辑回归、SVM、决策树、GBDT、XGBoost、神经网络等。有一道高频题目是问“逻辑回归和SVM在损失函数上的本质区别是什么”,看似简单,但答好的关键在于你要说出两者对“分类边界附近样本”的处理态度不同——逻辑回归用对数损失,对所有样本都有梯度贡献,而SVM的合页损失只关心支持向量附近的样本。
这种题目考察的不是你背了多少公式,而是你是否理解模型设计的动机。我建议你在准备这类题目时,不要只看结论,而是要把每个模型的“为什么这么设计”搞清楚。比如GBDT为什么用负梯度拟合残差,XGBoost为什么加入二阶导信息和正则项,这些问题的答案才是面试官真正想看到的。
3.2 评估指标题最容易丢分
评估指标这块,我印象最深的一道题是关于不平衡分类的。题目给出一个正负样本比例接近1:99的数据集,问应该优先关注哪个指标。很多人上来就选准确率,这是经典的错误答案。在这种数据集上准确率可能高达99%,但没有实际意义。正确做法是关注精确率、召回率、F1值或者AUC,同时可以考虑使用PR曲线而非ROC曲线来评估,因为ROC曲线在极端不平衡下会显得过于乐观。
这类题目真正的考点不是指标公式,而是你在真实业务场景中的判断力。第四范式的笔试比较务实,它希望你具备“面对一个实际业务问题,能选对评估方式”的能力,而不是只会背诵公式。准备这个模块时,一定要把精确率、召回率、F1、AUC、LogLoss这些指标放在同一个框架下对比理解,搞清楚它们各自适合什么场景。
3.3 特征工程题的答题思路
有一道简答题是给了一个用户行为日志表,要求设计特征来预测用户是否会购买某个商品。这是一个典型的开放题,没有唯一标准答案,但评分维度通常有三个:特征覆盖度是否全面、是否考虑了时间窗口、是否有合理的交叉特征。
我自己的答题思路一般是分三层:第一层是用户自身的统计特征,比如历史购买次数、平均消费金额、最近一次购买时间距今天数;第二层是商品的特征,比如商品类目、价格区间、历史销量;第三层是用户和商品的交互特征,比如用户购买过该品牌的其他商品数量、用户最近浏览过该商品多少次。如果你能在答案里体现出“时间窗口衰减”的意识,比如加上“过去7天”和“过去30天”的对比特征,得分会明显更高。
4. 工程能力题:看起来简单,实际全是坑
4.1 Python语言基础题的高频陷阱
工程能力部分的题目在难度上不高,但覆盖面很广。有一道题是问Python里列表和元组的本质区别,大多数人都能答出“可变与不可变”,但题目进一步追问“为什么元组不可变”的时候,很多人就卡住了。
这里我分享一个当年自己总结的回答思路:元组不可变的本质原因是它在内存中的布局是固定的,解释器可以对元组做更多优化,比如在哈希场景下作为字典的键,同时元组可以作为集合元素而列表不行。从这个角度回答,就能体现出你对Python底层机制是有理解的,而不只是背了结论。
另外还考过Python闭包和装饰器的执行顺序问题,GIL对多线程的影响,字典的哈希冲突处理机制,这些都属于Python面试中的“老八股”,但依然值得认真准备,因为它们的区分度一点都不低。
4.2 分布式与Linux指令题
有几道题涉及分布式基础概念,比如问CAP理论中在分区容错性无法避免时,系统应该优先保证一致性还是可用性。这种题没有绝对正确答案,关键是要说明不同场景下的取舍逻辑。如果是金融交易系统,优先保证一致性;如果是推荐系统,优先保证可用性。在答题时把场景和取舍理由说清楚,就能得高分。
Linux相关的题目以实用命令为主,比如查端口占用、看进程资源占用、统计日志行数等。有一道题是要求写出“找出当前目录下所有大于100MB的文件并将其路径输出到文件”的命令,标准的答案是用find命令配合-size参数,再用重定向输出。如果你在实际工作中用过这些命令,这类题基本是送分题。
4.3 开放设计题的答题框架
笔试题的最后往往有一道开放设计题,我记得2020年的一道题目是:如果让你设计一个企业级的智能推荐系统,你会怎么做。这类题目没有标准答案,但评分是有套路的。我建议你按照“数据层-特征层-模型层-工程层-评估层”五个维度来组织答案,每个维度用两三句话说明核心思路和关键选型,这样既能体现你的整体架构能力,又能展示你在关键点上的深度思考。
具体来说,数据层要说明数据的来源、清洗方式、存储选型;特征层要说明特征体系的构建思路,实时特征和离线特征怎么融合;模型层要说明候选召回、粗排、精排的模型选型和理由;工程层要说明在线服务的性能要求、缓存策略、降级方案;评估层要说明离线指标和线上AB实验的配合方式。把五个维度答完整,就算具体选型上有些不足,整体分数也会很可观。
5. 实战训练方法与踩坑经验汇总
5.1 不同基础的人该怎么准备
如果你是科班出身、算法基础扎实,准备重点应该放在机器学习基础和工程题上,因为这部分决定你是否能在一票竞争者中脱颖而出;如果你是非科班转行或者基础相对薄弱,算法题就需要投入更大精力,建议按“数组/链表→栈/队列→树/图→DP/贪心”的顺序系统过一遍。
这里再说一个比较现实的建议:第四范式笔试的算法题难度不低,但并不是每题都要AC才有希望进面试。按照2020年的情况,三道编程题你只要能完整做对一道、另一道拿到大部分case的分数、第三道用暴力解法拿到部分分,基本上就能过笔试线了。所以考试时如果你在某道题卡了超过20分钟,果断跳过,把时间留给后面的题,这个策略我在多次笔试实战中验证过,非常管用。
5.2 我踩过的几个真实大坑
先说第一个坑:选择题的“多选”陷阱。第四范式的笔试选择题有多选题,而且错选、漏选都不得分。很多人在准备时习惯做单选训练,到了考场上也默认当成单选来做,结果漏选丢分。我的建议是涉及机器学习概念的题目,尤其是模型对比类的,多选的概率很高,做题时宁可多花一点时间检查每一个选项,也不要急着提交。
第二个坑是代码题的环境问题。笔试平台用的是牛客网,但它的代码编辑器和LeetCode的交互方式有一些差异,比如不会自动帮你处理输入输出,需要自己写完整的main函数和标准输入输出逻辑。很多人平时用惯LeetCode的核心代码模式,一到牛客网手写输入输出就出错。我建议你在笔试前至少用牛客网刷十道以上的题目,把输入输出的各种格式都练熟,尤其是读取一维数组、二维数组和字符串的方式。
第三个坑是时间分配。2020年那场笔试总时长是120分钟,题量在20道左右,平均每道题只有五六分钟。如果你在编程题上卡太久,后面的选择题和简答题就很被动。我的经验是:先花三到五分钟快速浏览一遍所有题目,给每道题打一个优先级标记,然后先做选择题和简答里自己有把握的题,把基础分稳稳拿住,再回头死磕编程题。这个顺序可能和你平时的习惯不一样,但在这种限时笔试中确实能最大化总分。
5.3 建议收藏的复习资料清单
最后整理一份我觉得比较实用的复习清单,都是公开资料,不涉及任何内推渠道或者“内部题库”:
- 算法方面:LeetCode的Hot 100题和牛客网的剑指Offer系列,两轮刷完基本就能覆盖笔试里80%以上的算法考点。
- 机器学习方面:李航的《统计学习方法》前八章是重点,配合PRML里关于概率图模型和核方法的基础章节做补充。
- 工程方面:把Python的GIL机制、装饰器、迭代器、生成器这四个高频考点彻底吃透,Linux的话重点掌握grep、find、awk、sed、top、ps这几条命令。
- 业务思维方面:多看看各个大厂技术博客里关于推荐系统、风控系统、智能营销的架构文章,重点关注特征设计、模型选型、AB实验这三块。
笔试只是秋招万里长征的第一步,它能帮你拿到面试资格,但真正决定offer的还是在面试中展现出的综合能力。如果这篇文章能让你在准备第四范式笔试的时候少走一些弯路,少踩一些我当年踩过的坑,那这个整理就是值得的。祝正在准备秋招的朋友们笔试顺利,面试也顺利。