又到校招季后台一直有同学在问“网易数据挖掘算法工程师笔试到底考什么”。我去年参加了2023届提前批这场笔试也帮几位学弟学妹做过几次针对性的复盘今天干脆把备考笔记整理出来。文章不聊虚的只讲笔试中会遇到的知识模块、典型算法、做题节奏和避坑经验覆盖数据结构、机器学习、深度学习、进阶算法四个部分想冲数据挖掘或者算法岗的朋友都可以直接拿去做复习清单。先说一个整体判断网易这种大厂的数据挖掘算法岗笔试重点不是纯背模型而是“代码能力 算法原理 业务直觉”三件事一起考。选择题和大题会穿插很多看似零散的知识点比如字符串匹配、排序、聚类、KNN、粒子群、强化学习这些看起来跨度很大但它们背后都指向同一个东西——你有没有建立一个足够完整的算法知识网络。1. 提前批笔试到底在考什么整体认知与知识体系拆解1.1 数据挖掘算法工程师的能力模型数据挖掘算法工程师这个岗位和普通后端开发或者纯算法研究岗不一样。它既要你懂数据结构和基础算法又要求你熟悉常见的机器学习模型还要理解业务场景里的数据流和特征工程。笔试题目往往不是单一维度而是交叉考察给你一个业务场景比如用户流失预测、商品推荐排序、异常流量识别然后问你怎么做特征选择、用什么模型、怎么评估甚至还会让你手写某个核心算法。从我参加的那场笔试来看考察内容大致分为四块基础算法与数据结构数组、链表、栈、队列、树、图、字符串匹配、排序、贪心、动态规划这部分以手撕代码题为主。机器学习与数据挖掘理论特征工程、回归、分类、聚类、降维、模型评估、过拟合处理这部分选择题和简答题为主。深度学习与前沿技术CNN、RNN、Transformer基础、注意力机制、图像分类、强化学习基本概念。工程与综合算法复杂度分析、概率统计基础、业务场景设计、甚至一些安全或者工程实现细节。这个能力模型不是随便拍的。你去看各大厂数据挖掘岗位JD会发现“扎实的编程基础”“熟悉常见机器学习算法”“有业务落地经验”永远是出现频率最高的三条要求。笔试就是在有限时间内快速确认你有没有这三项底子。1.2 提前批和正式批的区别提前批笔试通常比正式批题目更灵活难度不一定低但筛人更看“潜力”。正式批题量大、模块固定刷过题库基本能稳住。而提前批会出现一些“反套路”的题目比如让你现场推导某个算法的复杂度或者给你一个真实业务指标让你设计解决方案。我当时的感觉是提前批更看重你是不是真的理解算法本质而不是背了一堆模型。同样考KMP正式批可能只需要你写出匹配函数提前批却会追问next数组的物理意义、为什么能跳过那么多字符、如果模式串里有重复前缀和后缀会怎样。这些细节恰恰是区分“会背代码”和“真懂算法”的分水岭。所以如果你正在准备提前批复习重点不要放在“刷了多少题”上而要放在“每个算法为什么这样设计”上。后面我会逐个拆解笔试中出现频率最高的算法把原理、手撕重点、易错点一次讲清楚。2. 数据结构与基础算法硬核手撕环节2.1 字符串处理与KMP算法字符串匹配是数据挖掘笔试题的常客尤其是KMP算法。热搜词里有一个很典型的例子模式串 pabacaba要求计算next数组。我把这道题的完整推导过程写出来大家对照着理解。不同教材对next数组的定义略有不一致但核心思想一致。我用最常见的“前缀函数”计算方式来说明next[i]表示模式串前i1个字符组成的子串中最长的相等真前缀和真后缀的长度。注意是“真前缀”和“真后缀”也就是不能等于整个子串本身。对abacaba逐位计算位置i当前子串最长相等真前后缀next[i]0a无01ab无02abaa13abac无04abacaa15abacabab26abacabaaba3得到next数组为[0,0,1,0,1,2,3]。如果题目用的是“失配时j回退位置”的定义即next[0]-1那么结果会是[-1,0,0,1,0,1,2]两种写法都能通过关键是你必须看清题目注释。KMP的难点不在计算next数组本身而在于理解它为什么高效。朴素的字符串匹配在失配时只往后移动一位而KMP利用已匹配部分的前后缀信息让模式串一次跳过多余的比较位置时间复杂度从O(n*m)降到O(nm)。笔试手撕时建议写两个函数一个计算next数组一个执行匹配主流程逻辑清晰不容易错。2.2 排序算法全家桶排序算法是笔试送分题也是失分题。送分是因为考察频率高失分是因为很多同学只记得“快排是O(n log n)”这种结论但手写堆排序时经常在down调整那里卡壳。我整理了一个排序算法速查表笔试前可以反复看算法平均时间复杂度最坏时间复杂度空间复杂度稳定性冒泡排序O(n²)O(n²)O(1)稳定快速排序O(n log n)O(n²)O(log n)不稳定堆排序O(n log n)O(n log n)O(1)不稳定归并排序O(n log n)O(n log n)O(n)稳定计数排序O(nk)O(nk)O(k)稳定手撕排序算法时有个技巧优先写归并排序因为它的分治结构清晰、边界条件少而且稳定。快速排序虽然平均性能好但极端情况下会退化到O(n²)笔试官有时会问“怎么避免快排退化”你至少要知道随机选主元或者三数取中。堆排序更特殊它不要求额外空间但很多人写着写着就把heapify函数里的参数搞混了。记住一个要点建堆是从最后一个非叶子节点开始往上调整而不是从根节点开始。每次交换堆顶和当前末尾元素后只需要对堆顶做一次下沉调整。2.3 图论与搜索算法数据挖掘岗位对图论的考察没有算法岗那么深但基础的搜索算法是避不开的。高频考点有三个Dijkstra最短路径、Kahn拓扑排序、二分图匹配。Dijkstra算法适合非负权图核心是贪心加优先队列。每次从未确定最短路的节点中选一个距离最小的节点然后用它去松弛邻居。写成代码时优先队列里存的是(距离,节点编号)初始化时起始节点距离为0。这个算法在推荐系统里的“基于图的路径计算”中也会用到所以笔试官偶尔会问业务场景比如“在用户-商品二部图中怎么计算用户之间的距离”底层思路就是图论算法。Kahn拓扑排序解决的是依赖关系问题比如课程学习顺序、任务调度。它的思路非常朴素统计每个节点的入度把所有入度为0的节点入队列依次弹出并对邻居节点入度减1如果某个邻居入度变为0就继续入队列。如果最后弹出的节点数不等于总节点数说明图中有环。二分图匹配的HK算法是匈牙利算法的优化版。笔试一般不会让你手撕完整HK算法但会问思路先用BFS把图分层再用DFS找增广路复杂度从O(VE)降到O(E√V)。用户推荐和广告投放场景经常会用到为匹配值得重点理解。3. 机器学习与数据挖掘核心算法选择题和大题的重灾区3.1 聚类与分类算法基础数据挖掘笔试的机器学习模块聚类算法几乎是必考。K-Means是最基础的你至少要能说清楚它的流程随机选K个初始质心交替执行“分配样本到最近质心”和“重新计算质心”两个步骤直到质心不再变化。但笔试官更想听到的是K-Means的缺点和处理方案初值敏感、需要预知K值、对异常值和球形分布敏感。所以后面的K-Means、二分K-Means这些改进点也要知道。KNN算法是另一个高频考点。热词里提到了“KNN算法的应用能力包括哪三个方面”我理解的是分类、回归和异常检测。分类就是K个邻居投票决定类别回归是K个邻居的目标值取平均异常检测是计算样本到K个邻居的平均距离距离明显大于绝大多数样本时视为异常。这三个场景在数据挖掘项目里都很常见笔试时如果遇到“KNN能做什么”这类开放题照着这三个方向答基本不会跑偏。KNN的短板也需要知道计算复杂度高、维度灾难问题突出所以通常需要配合特征选择和降维使用比如PCA。3.2 优化算法与启发式方法当题目跳出常规模型开始问“你怎么调超参数”“怎么避免陷入局部最优”时就到了启发式算法的地盘。模拟退火和粒子群算法是两道最常见的考题。模拟退火借用了物理退火过程。它允许以一定概率接受比当前解更差的解这个概率由温度控制温度越高接受概率越大随着温度降低接受差解的概率越来越小最终收敛到近似最优解。关键参数有三个初始温度、降温速率、终止温度。初始温度要足够高否则搜索范围不够降温速率太慢会导致运行时间过长太快则容易过早收敛。粒子群算法的思路更接近群体智能。每个粒子有位置和速度两个属性迭代时每次更新会参考两个最优值个体历史最优和全局最优。速度更新公式是 v wv c1r1*(pbest-x) c2r2(gbest-x)其中w是惯性权重c1和c2是加速常数。理解了这个公式笔试里不管是推导还是编程都能应付。另外PID算法也值得提一下。虽然它属于控制论范畴但最近几年算法岗笔试越来越喜欢跨领域出题。增量式PID的核心思想是根据误差的比例、积分、微分三项来决定输出量。放在数据挖掘场景里你可以把它理解为一种反馈调节机制比如在线学习时根据损失变化调整学习率。3.3 提升模型与检索算法机器学习模块里集成学习是必考重灾区XGBoost更是其中的顶流。官方语言总结起来就是XGBoost是GBDT的工程优化版本它使用二阶泰勒展开逼近损失函数在目标函数中加入正则化项控制模型复杂度并且支持列抽样和缺失值自动处理。笔试手撕XGBoost几乎不可能但你必须能看懂类似“XGBoost和GBDT的区别是什么”这种问题。答题角度有三个一是损失函数上XGBoost用二阶近似、GBDT一般用一阶二是XGBoost目标函数带了正则项有更好的泛化能力三是XGBoost在工程上支持并行、缓存、剪枝训练效率更高。BM25算法则是信息检索和推荐系统方向的热门考点。它是TF-IDF的进阶版核心思想是一个词在文档中出现的次数越多越重要但如果这个词在很多文档里都出现它的区分度就会下降。BM25引入文档长度归一化长文档的词频需要打折短文档的词频权重更高。推荐系统召回阶段经常用到BM25做文本相关性打分这个算法笔试里以简答题形式出现。工业异常检测也是数据挖掘的经典落地场景。题目通常会给你一个生产线上传感器采集的数据让你设计异常检测方案重点考察的是你有没有“无监督居多、样本不平衡、季节趋势要考虑”这些经验意识。4. 深度学习、强化学习与前沿技术储备4.1 深度学习基础必须掌握虽然数据挖掘岗不是专门的算法研究员但深度学习基础题的占比逐年上升。图像分类就是一个最常见的方向。目标检测、语义分割这些方向可以不深入但CNN的基础结构包括卷积层、池化层、全连接层、激活函数的作用必须能说出来。图像处理相关的算法里Sobel算子和拉普拉斯算子都是求图像梯度的方法。Sobel是一阶导数算子通过两个方向的卷积核分别检测水平边缘和垂直边缘拉普拉斯是二阶导数算子对噪声更敏感所以实际用的时候要先做高斯平滑再拉普拉斯也就是LoG算子。这类知识点在图像类数据挖掘任务里经常会用到笔试里可能以判断题或者图像处理小问答出现。EVA-02这类预训练模型则是学术界和工业界都在追的方向。它属于视觉Transformer家族通过大规模对比学习预训练获得通用的视觉表征放到分类、检测、分割任务上都能微调使用。笔试不会深挖它的网络结构但你需要知道“预训练微调”这个主流范式以及它为什么比从头训练效果好。4.2 强化学习与采样方法强化学习在数据挖掘笔试里占比不高但偶尔会在“开放题”里出现比如让你设计一个推荐系统的强化学习奖励机制。基础概念至少要知道状态、动作、奖励、策略、价值函数。Q-Learning是一种基于价值迭代的方法核心是查询Q表格更新公式为 Q(s,a) Q(s,a) α*(r γ*max(Q(s,a)) - Q(s,a))。理解这个公式就能答上一问。变分推断中的KL散度和ELBO也是近几年高频理论题。KL散度衡量两个概率分布的差异ELBO是变分下界它等于对数似然的证据项减去KL散度项。在VAE里编码器输出的隐变量分布要和先验分布尽量接近目标就是最大化ELBO。这类理论概念虽然在实际业务中不常直接写但作为基础素养笔试选择题里碰到一两道很正常。4.3 工程与工具类考察点网易笔试对工程工具的考察也有一定偏好。和算法相关的无非是复杂度分析、常见算法库、工程实现细节。音频重采样、哈希算法、规则引擎这些交叉领域的知识点也有概率出现但如果复习时间紧迫可以适当放一放优先吃透前面的核心内容。工程题里暗藏一个小陷阱有些问题表面在考“弱哈希算法怎么修复”实际上在考你有没有接触过生产环境中的安全合规要求。同理像SM2、SM3、SM4、ZUC这类国产密码算法如果简历里写了做过风控或者数据安全方向笔试官就可能顺带问一句。我建议不用专门去背但至少知道它们分别属于非对称加密、哈希、对称加密和序列密码做到“有印象”就行。5. 笔试实战策略和刷题经验5.1 从笔试倒推复习计划如果距离笔试还有三到四周我建议按下面这个节奏安排第一周数据结构与手撕算法。集中刷数组、链表、栈、队列、树、图、贪心、动态规划的基础题重点是快速排序、归并排序、堆排序、KMP、Dijkstra这些高频题。第二周机器学习与数据挖掘理论。把聚类、KNN、朴素贝叶斯、逻辑回归、决策树、随机森林、XGBoost的原理和优缺点过一遍每个模型都要能回答“能解决什么问题”和“有什么局限”这两个问题。第三周深度学习与综合应用。复习CNN、RNN、注意力机制、图像分类基础同时也把特征工程和模型评估指标AUC、PR曲线、F1强化一下。第四周模拟笔试和错题整理。严格控制时间做套题做完之后把错题对应的知识点全部标出来再回头翻一遍。刷题平台不必贪多LeetCode和牛客网足够。算法题每天保持5道精做别只求AC要边做边思考“如果我是面试官我会追问什么”。5.2 常见失分点和避免方法笔试最常见的失分点有三个我给每个配一段实战经验第一边界条件考虑不周。比如二分查找的循环条件写while(leftright)还是while(leftright)KMP里“失配后模式串跳到哪个位置”堆排序里“堆的大小是动态变化的”。这里的建议是每写完一段算法代码至少推演一遍空数组、单元素数组、全相同元素数组这三个特殊用例。第二时间复杂度和空间复杂度算错。选择题里经常给一段代码让你判断复杂度很多人一看有嵌套循环就写O(n²)却忽略了内层循环可能提前break。建议平时做题时养成“数基本操作次数”的习惯特别是递归算法要会列递推式求复杂度。第三选择题耽误太久。笔试时间整体是偏紧的选择题如果纠结超过两分钟就要果断跳先做能拿分的大题。数据挖掘算法岗的代码题一般需要20到30分钟调试必须留足时间。5.3 手撕代码的真实做题技巧再分享三个我在实际笔试中验证过的技巧先搭框架再补细节。拿到代码题后先写函数签名、主流程、注释把核心逻辑串起来再回头实现细节。万一时间不够这部分伪代码也能帮你拿到一定分数。代码尽量简洁清晰。阅卷系统和人工判分都可能关注代码风格。变量名别用a、b、c至少用i、j、idx、pos这类有意义的简短命名函数名能体现作用。写完用例自测。在线笔试的IDE一般支持本地测试哪怕只跑一个最简单的用例也能帮你发现五成以上的低级错误。保留一组自测用例在笔记里每次做题都先跑一遍。6. 个人经验与资料建议最后说点我自己的体会。网易这场提前批笔试给我的最大感受是它不追求技巧酷炫更看重基础扎不扎实。数据挖掘方向的考题覆盖面确实宽从KMP、堆排序到聚类、XGBoost再到强化学习、图像分类但每个知识点的考察深度并不会真的深入科研级别。你只需要把“最核心的原理”和“最常见的应用场景”吃透就能稳定拿到大部分分数。我当时复习时踩过几个坑。一个是前期花了大量时间抠SVM的SMO算法、反向传播的完整推导结果考试考得很少反而是一些基础概念比如KNN的三个应用场景、K-Means的改进方法我差点没答全。另一个是刷题只看不写以为脑子里过了就是会了真正上机写代码时连递归边界都要想很久。建议你从今天开始不管题目多简单也一定要亲手敲一遍。资料方面基础算法刷LeetCode热门100题和剑指Offer机器学习理论看李航的《统计学习方法》前四章和西瓜书的重点章节深度学习基础看邱锡鹏老师的《神经网络与深度学习》。这三套资料够了不要再囤积太多重要的是把核心知识反复吃透。如果时间实在不够优先保证这些内容排序和KMP的手撕代码、K-Means和KNN的原理、XGBoost和GBDT的区别、AUC和F1的计算逻辑。把这几块稳住其他内容就算遇到也能靠已有知识猜出个大概。祝你笔试顺利等你的好消息。