如果你在准备互联网公司的数据挖掘类岗位网易这场2018实习生招聘笔试是很典型的样本。数据挖掘实习生考察的不是单纯的算法题也不是纯业务分析而是“机器学习基础 概率统计 SQL/代码能力 业务敏感度”的交叉组合。当时很多同学误以为只要刷LeetCode就能过结果一上来就被概率推导和业务分析问答题打乱了节奏。回过头看这套笔试题真正想筛选的是那些“懂原理、能落地、会看业务数据”的人。这篇把当年我准备和复盘这套题目的经验整理出来按科目结构、核心难点、代码SQL、业务题型、坑点排查、备考路线六个部分展开。无论你目标是网易还是其他大厂多花二十分钟读完准备方向都会比闷头刷题清晰很多。1. 先说结论网易数据挖掘实习笔试的科目构成1.1 笔试形式与整体节奏2018年这批实习生招聘网易采用的主要是在线笔试数据挖掘岗位的题型大概分为三类选择题、编程题、问答/分析题。选择题覆盖概率统计、机器学习、数据结构、数据库基础编程题一般有一道算法题和一道SQL题问答/分析题则是典型的业务场景题给你一个网易系产品的数据现象让你分析原因或提出策略。整场考试时间大约两小时但题量并不小。我记得不少人是“选择题慢慢做最后编程和业务题没时间写”。这个问题的根源在于没有提前做时间分配。笔试不是高考不是每分都要拿到手编程题和业务题的权重往往更高选择题卡住时应该果断跳过。信息收集阶段可以在牛客网、应届生求职论坛上找到往年笔经不过很多回忆版只有题目名称没有完整题干。最有效的准备方式不是逐题背诵而是把高频考点拉出一个清单挨个吃透。1.2 考察能力矩阵我按自己复盘后的理解把这套笔试实际在考的能力整理成了一张表能力维度常见考察方式典型知识点大约占比机器学习原理选择题、简答题LR、SVM、GBDT、K-Means、过拟合、正则化30%概率统计选择题、推导题条件概率、贝叶斯、极大似然估计、常见分布20%数据结构与算法编程题数组、字符串、动态规划、二叉树15%SQL与数据处理编程题、问答留存计算、排名、聚合、窗口函数20%业务理解分析题指标设计、A/B测试、异常归因15%这个比例在不同年份会有浮动但总体结构稳定。如果你只盯着机器学习去背模型忽略了SQL和业务分析大概率拿不到offer。反过来如果只准备业务题机器学习原理不过关选择题也会大量失分。1.3 为什么这个结构值得认真琢磨网易的业务线很多包括游戏、云音乐、电商、新闻、有道、邮箱等。数据挖掘岗位在内部往往不是单纯跑模型的算法工程师而是要和数据产品、运营、推荐系统深度协作。笔试考业务题本质上是看你能否用数据逻辑理解业务问题。另外这类笔试还有一个隐性作用筛选候选人的学习意识和排查能力。比如编程题里你不仅要写对还要考虑边界条件、空值处理、大数据量情况下的效率。这些能力在实际工作中非常重要校招面试官很看重“能不能干活”而笔试是他们对“干活能力”的第一印象。2. 概率统计与机器学习题面看着眼熟失分都在细节2.1 条件概率与贝叶斯题别只背公式要会展开选择题里最容易出现的就是条件概率和贝叶斯公式。比如“已知某用户在过去7天里有3天登录今天登录的概率是多少”这类题给一个看起来很复杂的背景其实考察的就是贝叶斯更新或条件概率计算。我当时印象很深的一道类似题是一个游戏用户被系统判定为“高流失风险”的准确率是90%但正常用户也有5%的概率被误判。已知全量用户中真正高流失风险的比例为10%问一个被判定为高流失风险的用户实际高流失风险的概率是多少。这类题看起来是业务题实际就是纯贝叶斯P(实际流失 | 判定流失) P(判定流失 | 实际流失) * P(实际流失) / P(判定流失)展开分母P(判定流失) 0.90.1 0.050.9 0.135分子 0.9*0.1 0.09所以结果是 0.09/0.135 2/3。很多同学计算没问题但在“全量用户中真正高流失风险比例为10%”这个先验上栽了跟头。原因是对贝叶斯公式中的先验概率不敏感。这种题的备考方法不是刷一百道而是把每个符号对应到业务含义自己给自己出题如果先验变了结果怎么变如果误判率变了结果怎么变想明白比记公式重要得多。2.2 极大似然估计推导过程不能跳步数据挖掘岗位对概率统计的要求不止于选择题可能出现简单的推导题。最典型的就是极大似然估计。比如给出一组样本假设服从伯努利分布让你估计点击率p。这类题只要掌握流程写出似然函数取对数求导令导数为零解参数。如果样本是n次展示、k次点击L(p) p^k * (1-p)^(n-k)取对数后对p求导得到p的估计值是k/n。笔试时如果你只写答案不写过程可能直接扣一半分因为考官想看的是你的建模思路而不是口算能力。另一类常见的是正态分布均值的极大似然估计。过程类似但要注意参数是两个均值和方差。有些同学推导均值没问题对方差求导时忘记除以n还是n-1导致结果和样本方差混淆。这里要记住极大似然估计得到的方差是除以n的而样本无偏方差除以n-1这是两个不同的口径笔试容易混。2.3 机器学习模型高频考点LR、SVM、GBDT、K-Means逻辑回归几乎是数据挖掘笔试必考。选择题会问它的损失函数是什么、为什么要用sigmoid函数、怎么处理多分类、正负样本不平衡怎么办。你需要能写出逻辑回归的预测函数 h(x) 1 / (1 exp(-w^T x))以及交叉熵损失函数还要知道梯度下降更新公式。一个小技巧是遇到“为什么逻辑回归用交叉熵而不是均方误差”这种题核心回答是均方误差在sigmoid激活下是非凸函数容易出现局部最优交叉熵能保证凸性使梯度下降收敛更稳定。这个点很容易被忽略但在选择题和简答题里反复出现。SVM也是高频点重点在最大间隔思想、支持向量、核函数、软间隔。常见问法SVM为什么能处理非线性问题答案是用核函数把低维输入映射到高维特征空间。这时候补一句“RBF核本质是计算样本之间的相似度”会让答案更完整。GBDT/XGBoost则常和特征重要性、集成学习一起考。你需要理解Boosting是串行训练多个弱学习器、每个学习器拟合前一个模型的残差。选择题喜欢考“GBDT的基学习器是什么”——答案是CART回归树经常有人误写成分类树。K-Means则常考K值选择、距离度量、局部最优问题以及它对初始中心敏感的特点。2.4 偏差方差、过拟合与特征工程机器学习选择题里有一类固定题型模型在训练集表现很好但在测试集表现差应该怎么解决。答案是增加正则化、降低模型复杂度、增大数据量、做交叉验证等。这里要理解偏差-方差分解高偏差是欠拟合高方差是过拟合两者对应不同的处理方式。在笔试中我建议大家把“偏差方差”当成框架记下来遇到模型泛化问题先判断属于哪一种。比如训练误差低、测试误差高就是高方差训练误差本身就高是高偏差。很多业务题也会借用这个概念比如询问推荐系统线上收益下降候选人很容易瞎猜原因但用偏差方差去类比反而能给出结构化的回答。特征工程是另一个看似不直接考、实际渗透在编程题和业务题里的能力。常见问法“给定一份用户行为日志你会如何构造特征来预测用户是否付费”这时要分几类回答用户基本特征、历史行为特征频次、最近一次时间、累计时长、序列特征连续登录天数、行为间隔、交叉特征。回答时不需要写代码但维度要清晰。3. 算法与SQL笔试中真正的“手撕现场”3.1 常规算法题怎么准备数据挖掘岗位的算法题难度通常不会到竞赛水平但也不会是“判断链表是否有环”这类基础题。它的定位更像是在考察你的工程实现能力比如字符串处理、数组操作、简单的动态规划。准备时不需要沉迷难题但基础的数据结构和常见题型要熟练。我记得当时有几个方向可以重点练数组的滑动窗口、前缀和、哈希表优化、递归转迭代、字符串匹配。数据挖掘场景下算法题可能套一个业务壳比如“给定用户访问日志统计连续访问天数超过N天的用户”其实本质是数组排序扫描问题。别被业务壳吓到先把数据结构抽出来。做题时有个习惯很重要先写思路再写代码。笔试的在线编辑器没有IDE那么智能容易写错语法。我一般会先在草稿纸或注释里写“排序 - 去重 - 扫描连续段”再实现。这样即使最后的代码有小bug面试官也能看到你的思维过程。3.2 SQL必会的几类操作SQL题在数据挖掘笔试中占比很高因为它直接反映了你能不能处理真实的数据表。必会的SQL操作包括聚合函数、分组过滤、多表连接、子查询、去重、日期函数。尤其是留存率的计算属于网易这类互联网公司的高频题需要熟练写出“按照某日的活跃用户计算次日留存”。一个简化版的次日留存SQL长这样SELECT t1.active_date, COUNT(DISTINCT t1.user_id) AS dau, COUNT(DISTINCT t2.user_id) AS retained_users, COUNT(DISTINCT t2.user_id) / COUNT(DISTINCT t1.user_id) AS retention_rate FROM active_log t1 LEFT JOIN active_log t2 ON t1.user_id t2.user_id AND t2.active_date DATE_ADD(t1.active_date, 1) GROUP BY t1.active_date;这个SQL的关键在于理解“次日活跃”的定义今天活跃的用户里有多少人明天还活跃。很多同学会忘记LEFT JOIN后要加DISTINCT导致同一用户被多条记录重复计算。另外如果你是在Hive环境里做还要注意分区条件比如WHERE dt 2018-03-01避免全表扫描。窗口函数也是高频考点尤其是排名、累计求值。比如“按用户统计其历史累计消费金额”可以用SELECT user_id, order_date, order_amount, SUM(order_amount) OVER(PARTITION BY user_id ORDER BY order_date) AS cumulative_amount FROM orders;窗口函数能把很多看起来很复杂的SQL题简化成一行比子查询方案清晰得多。如果你还不熟悉ROW_NUMBER()、RANK()、DENSE_RANK()的区别建议考前集中练习一下。网易笔试的SQL题经常是给你一张表然后问你“每个用户最近一次下单的时间”或“每个品类下销量排名前3的商品”这些都能用窗口函数秒解。3.3 Python数据处理笔试中的隐藏考验有些笔试题会直接让你写Python代码或者在一个综合场景里给你一段数据让你用Python处理。这个环节常见操作包括读取CSV、去重、缺失值处理、分组聚合、时间序列重采样、数据标准化。如果是用pandas最基本的流程是import pandas as pd df pd.read_csv(user_behavior.csv) df[date] pd.to_datetime(df[date]) df df.drop_duplicates(subset[user_id, date]) daily_dau df.groupby(date)[user_id].nunique().reset_index() daily_dau.columns [date, dau]这段代码虽然短但包含了很多知识点数据类型转换、去重、聚合、重命名。笔试中容易出错的地方是groupby后没有reset_index()导致后续处理时列索引怪怪的还有nunique()和count()的区别一个统计唯一值一个统计非空值用错会影响结果。如果笔试允许用pandas优先用pandas因为它表达力强、代码短。如果明确要求用原生Python那就要会写字典统计频次、列表推导式、以及简单的排序技巧。准备时不要只看不写建议在本地跑一遍以下场景读取一份CSV统计每个用户的活跃天数再按活跃天数排序。把这个场景练熟大部分Python数据处理题都能应对。3.4 考场上的时间分配策略时间分配是我最想强调的一点。许多人败在“每道题都想拿满分”。笔试环节中算法题和SQL题通常是最后的大题分值高选择题则是每题一两分。如果你的选择题卡了十分钟后面大题写不完损失很大。我的建议是拿到试卷先快速浏览所有题目标记出哪些是你确定会的哪些要思考哪些完全没思路。优先做有思路的题尤其是编程题中的简单题。选择题遇到犹豫超过两分钟的先按第一直觉选一个并标记后面有时间再回头检查。在时间不够的情况下确保编程题有完整的解题思路即使代码有bug也要写清楚注释。另外在线笔试时要注意输入输出格式。有些题目需要自己处理多行输入有些是核心代码模式只让你补全函数。不同平台格式不同考试前可以在牛客网上用对应公司的模拟卷练一下避免现场看不懂输入输出。4. 业务场景题网易游戏、云音乐、严选背后的数据判断4.1 业务题为什么是数据挖掘实习生的重点在2018年那批笔试题型中业务题占比不会低因为数据挖掘实习生入职后要面对的真实问题往往不是“调一个XGBoost”而是“某个功能上线后指标下降了你怎么排查”。这种问题没有标准答案但可以通过结构化的分析方法体现你的水平。网易的业务线很丰富笔试题目也喜欢挂靠具体的产品场景。比如游戏部门会问“某游戏版本更新后付费人数下降怎么定位原因”云音乐会问“推荐歌单的点击率下降你怎么分析”电商线会问“严选商品的加购率低如何优化”。这些题背后考察的是你对漏斗、留存、A/B测试、用户分层的理解。我觉得准备业务题最有效的方法是建立“问题拆解框架”。不管题目背景是什么都能用一套逻辑去回答确认数据真实性 - 拆维度定位 - 提出假设 - 设计验证方案 - 给出建议。这套框架比记忆具体业务细节更重要因为面试官想看的不是你对某个业务有多熟而是你是否具备数据思维。4.2 常见业务题拆解框架以“某天开始网易云音乐每日歌单点击率下降了5%分析原因”为例我在笔试/面试中常用的回答顺序是这样的先确认指标定义和波动幅度点击率点击歌单次数/曝光歌单次数下降5%是相对上一天还是相对近7天均值然后拆维度是整体下降还是某个版本、某个渠道、某个用户群体、某个时间段、某个内容分区下降。比如“仅仅iOS端下降”“仅仅周末下降”“仅仅新用户下降”这些都指向不同原因。接着提出假设如果是推荐算法调整可能影响排序和曝光结构如果是内容供给问题可能是热门歌单数量减少如果是产品改动可能是播放页按钮位置变化如果是外部因素可能是节日结束导致行为回落。每个假设都要给出验证方式比如做版本对比A/B测试或者用历史同时段数据做环比。回答这类题时要把“能落地的验证方案”作为亮点输出。比如“可以通过埋点查询点击用户在歌单页的停留时间确认是否为内容质量问题”这就比空泛地说“检查推荐系统”要好很多。网易的面试官很看重候选人是否懂埋点、懂用户行为数据因为数据挖掘工程师经常要和这些数据打交道。4.3 指标设计与A/B测试业务题里还会考你如何定义指标。比如“如何衡量一个音乐推荐系统的好坏”不能只回答“用户听歌时长”要分层使用广度活跃用户数、渗透率、深度人均听歌时长、人均播放次数、质量跳过率、收藏率、分享率、商业指标付费转化率、会员收入。分层的答案会显得更有经验。A/B测试也是高频点。问法通常是“新策略需要上线你怎么评估效果”。回答时要注意几点样本量是否足够、实验周期是否覆盖足够多种用户行为、实验组和对照组是否同分布、显著性水平如何设定、指标是否经过多重检验校正。很多同学只答出“随机分组对比均值”忽略了实验周期和样本量这在网易笔试里会被认为是业务经验不足。如果你能顺势提到“做A/B测试前可以先做流量分层避免不同实验之间互相污染”“评估核心指标的同时要关注护栏指标比如实验导致点击率上升但用户时长下降”会明显拉开和其他候选人的差距。5. 常见坑点与排查技巧实录5.1 我踩过的坑第一坑是“轻视概率题”。我当时觉得机器学习才是重头概率统计就是简单求一下结果选择题里几道条件概率和分布题全都不确定。网易这种公司特别偏爱用概率题考察逻辑严密性建议把“条件概率、全概率公式、贝叶斯、常见分布二项、泊松、正态、期望方差”都过一遍。第二坑是“SQL本地没环境”。在线笔试的SQL编辑器没有提示表名和字段名一旦拼错整个结果就错。我后来养成的习惯是先把题目里的表结构抄到注释里再对着字段写代码减少拼写错误。另一个常见问题是过度依赖子查询导致SQL写得又长又难读能用窗口函数解决的就别用多层嵌套。第三坑是“编程题不测边界”。数据挖掘笔试的编程题虽然偏业务场景但边界条件一样是扣分点比如数组为空、输入长度为1、除零、浮点数精度。写完后至少花两分钟在脑子里跑一遍边界用例这是最划算的检查。5.2 低分陷阱速查表陷阱具体表现应对办法只记结论不会推导选择题里关于SVM/贝叶斯原理的问题全靠猜每个高频模型要能写出损失函数和关键推导步骤SQL结果有重复计数用户活跃记录存在多条忘记去重时刻记得COUNT(DISTINCT user_id)不要直接COUNT(user_id)业务题只定性不定量说“可能是推荐算法问题”却不说怎么验证用“拆分维度 建议指标 验证方式”三步回答时间分配失衡选择题花太久大题没时间写先浏览全卷按分值权重分配时间忽略样本量A/B测试直接说结果显著要讨论样本量、实验周期、置信水平特征工程思路混乱特征类型重复交叉说不清含义按“基础信息、历史行为、序列行为、交叉特征”分类组织这张表不仅是笔试速查也适用于实际工作中的数据分析。很多问题不是“不会做”而是“没有结构化思考”导致答案显得散、没有说服力。6. 备考路线与资源建议6.1 复习节奏四周安排法如果你的准备时间在四周左右我建议按三段走。第一周打基础。集中看《统计学习方法》中逻辑回归、SVM、决策树、K-Means这几章敲一遍公式推导同时把概率统计的贝叶斯和极大似然估计过一遍。这个阶段不刷题只看书目标是建立知识框架。第二周到第三周专项突破。上午刷机器学习选择题下午写SQL题和Python数据处理题晚上抽一道算法题。这个阶段要模拟“真题场景”打开牛客网的在线编程环境习惯在无IDE辅助的情况下写代码。第四周综合模拟。整套卷子计时做下来重点训练时间分配和心态。做完后整理错题尤其是选择题里做错的知识点回翻教材补齐。6.2 书籍与刷题资料常被推荐的资料是李航《统计学习方法》和周志华《机器学习》但如果时间有限不建议从头到尾精读。更高效的方法是拿历年真题和牛客网题库当索引哪块不会就翻对应章节。比如看到SVM的题目不理解就回去看SVM那一章而不是先把整本书啃完。SQL练习可以找SQLZoo、LeetCode数据库篇以及牛客网的SQL专项。Python数据处理则直接用pandas官方文档加本地练习。数据结构算法部分用《剑指Offer》和LeetCode热题100题即可覆盖笔试难度。6.3 考前一晚和考试当天注意事项考前一晚不要再做新题。把之前整理的错题和公式表看一遍尤其是贝叶斯公式、逻辑回归损失函数、SQL窗口函数语法。早点休息在线笔试需要长时间盯屏幕精神状态影响比你想的大。考试当天提前半小时检查网络、摄像头和浏览器兼容性关闭无关软件弹窗准备好草稿纸和笔。草稿纸用来写推导和设计SQL不要直接在编辑器里乱试。如果遇到题目不会先用排除法做选择题编程题写出思路和关键步骤业务题按“确认数据、拆维度、提假设、给方案”的框架写满千万不要留白。最后再分享一个我个人的体会笔试到最后其实拼的不是你“知道多少”而是“在有限时间内能稳定输出多少”。网易数据挖掘实习笔试这套组合拳筛选的就是那些能扛住压力、快速组织思路、把知识落到代码和分析上的人。准备过程虽然辛苦但这种结构化思维能力到了正式做数据挖掘工作之后依然非常值钱。