尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数据挖掘岗笔试真题解析:从2016年360真题看核心考点与备考策略

数据挖掘岗笔试真题解析:从2016年360真题看核心考点与备考策略 这套2016年的题我印象很深当时我正准备从传统BI转向数据挖掘方向拿这套题当模拟练手做完最大的感受是它不像后来很多公司的题那样一上来就堆深度学习而是非常扎实地考了一个数据挖掘工程师真正每天都要用的基本功——数据结构、机器学习原理、概率统计、SQL和业务思维。很多人觉得2016年的题太老没必要刷但我的看法恰好相反。数据挖掘这个岗位核心知识体系这几年并没有发生颠覆性变化。你今天去面试可能面试官不问你SVM的核函数了改问Transformer的位置编码但LR的损失函数为什么用交叉熵、AUC和准确率的适用场景、用户留存率的SQL怎么写——这些问题八年过去了依然是高频考点。这套题的价值在于它把数据挖掘岗应该具备的底层能力用一套紧凑的笔试完整呈现了一遍结构非常清晰几乎可以当一张“知识地图”来用。本文就按当时这套题的考察逻辑把这个岗位笔试的考察维度、典型题型、背后原理和备考方法一一拆开讲清楚。1. 这套题为什么值得反复刷一份2016年真题的含金量1.1 从题目结构看360数据挖掘岗的真实画像360的数据挖掘岗位在2016年那个时间点业务导向非常明显。搜索、安全、移动分发、浏览器、手机助手……这些产品线每天都在产生海量用户行为数据数据挖掘工程师的核心任务就是从这些数据里提取用户画像、预测用户行为、优化产品策略。这套笔试题的结构大致是这样分布的数据结构与算法约30%-35%机器学习基础理论约30%概率论与数理统计约15%-20%SQL与数据库约10%-15%业务场景与开放题约5%-10%这个比例透露出的岗位画像很清晰这是一个既要求你有扎实的编程和算法功底、又要求你懂机器学习原理、还要能写SQL处理数据、最后还得有业务感觉的综合性岗位。你不一定是个顶级的算法竞赛选手但你不能有太明显的短板。1.2 当年的高频考点与当前考情的对照我把当年这套题里出现过的考点和2024年前后我在面试候选人时观察到的考点做了个对照考察模块2016年高频考点当前面试高频考点变化趋势数据结构数组、链表、二叉树遍历、动态规划哈希表、堆、图、动态规划、贪心对算法深度的要求小幅提升机器学习LR、SVM、决策树、朴素贝叶斯、KNNGBDT、XGBoost、FM、深度学习基础从经典算法向集成学习、深度模型迁移概率统计贝叶斯公式、期望方差、常见分布条件概率、极大似然估计、假设检验基础部分几乎未变SQL留存率计算、分组统计、Join窗口函数、留存漏斗、AB实验取数窗口函数的考察频率大幅提升业务思维用户流失分析、推荐策略设计异动归因、增长实验设计从“会算”到“会解读”你会发现底层逻辑没变变的只是载体。数据结构依然在考机器学习原理依然在考概率统计依然在考。所以这套题的价值不在于它押中了多少原题而在于它帮你把整个知识框架搭建起来了。2. 数据结构与算法笔试环节的硬门槛2.1 数组、链表与字符串基础题背后的复杂度思维这套题在算法部分的考察有一点非常明显它不鄙视基础题反而很喜欢在基础题上做文章。比如数组类的题目常见的有一个有序数组如何在O(log n)时间内查找指定元素给定一个数组找出数组中第K大的数要求时间复杂度尽可能低。如何判断一个字符串是否是回文串如果允许删除一个字符如何判断这类题看起来简单但每一道都有“暗坑”。比如“第K大的数”最简单的做法是排序后取下标时间复杂度O(n log n)。但如果你知道快速选择算法Quick Select平均时间复杂度可以降到O(n)。笔试里不会直接说“请用快速选择”但会在题目条件里暗示“数据量非常大无法全部排序”——这时候你的答案和只会排序的人的答案含金量就完全不一样了。排序本身也是高频考点。快速排序的复杂度分析、归并排序的稳定性和应用场景、堆排序在TopK问题中的优势这些概念不能只会背结论要能把推导过程讲清楚。比如堆排序它的时间复杂度为什么是O(n log n)“建堆”的过程为什么是O(n)而不是O(n log n)这种细节恰恰是笔试中区分“背过八股”和“真懂”的关键。2.2 树、图与动态规划看你会不会“降维”处理问题在这套题里树的知识点主要集中在二叉树的先序、中序、后序遍历以及如何根据两种遍历结果还原二叉树。二叉搜索树的性质中序遍历得到有序序列。平衡二叉树AVL和红黑树的区别。如何判断一棵树是不是另一棵树的子树。图和动态规划的题目通常只出现1-2道但一旦出现就是压轴题。最短路径、拓扑排序、0-1背包、最长公共子序列这些是经典的不能再经典的题型。我当时备考的时候把LeetCode上的高频题刷了两遍但真正在笔试里遇到动态规划题时依然会卡壳。后来我总结出一个经验动态规划题的关键不是背状态转移方程而是先学会判断“这道题能不能用DP”再一步步推导状态定义和转移逻辑。一个实用的判断标准是如果一个最优化问题存在“重叠子问题”和“最优子结构”大概率可以用DP解决。什么叫重叠子问题就是同一个子问题会被多次计算。什么叫最优子结构就是整体的最优解包含子问题的最优解。用这两个标准去套比看到题目就瞎想高效得多。2.3 数据挖掘岗的算法题刷题优先级建议如果把数据挖掘岗的笔试准备看作一个项目那算法题这部分值得投入的时间不应该超过30%。因为数据挖掘岗的本质是“从数据中发现价值”不是“写出更优雅的排序算法”。但在面试中算法题又是快速淘汰候选人的手段——你算法题做不出来后面再多的项目经验都很难挽回。高效的做法是第一优先级数组、字符串、哈希表、链表。这些是数据结构的基础笔试中出现频率最高刷80道经典题基本覆盖。第二优先级二叉树和递归。树的遍历、深度、路径问题一定要吃透笔试考的概率很大。第三优先级动态规划、贪心、图。不要求全部掌握但0-1背包、最长上升子序列、买卖股票的最佳时机这类经典模型需要会做。第四优先级高端数据结构Trie、并查集、线段树。只在时间富余时再看。3. 机器学习基础从“用过”到“讲清原理”3.1 经典算法对比LR、SVM、决策树、朴素贝叶斯的高频出题方式这套题在机器学习部分的考察非常有代表性。它不会直接问“什么是逻辑回归”而是会给你一个场景然后让你选择用什么模型并说明理由。这种题目背后考察的是你对每个算法的适用范围是否真正理解。逻辑回归LR几乎是必考题。围绕它的经典问法有逻辑回归的损失函数是什么为什么用交叉熵而不用均方误差逻辑回归为什么适合做CTR预估逻辑回归怎么处理非线性问题答特征交叉、核技巧、树模型LR其中第一个问题就是典型的“看似简单、实则暗藏杀机”。你要知道如果用均方误差作为LR的损失函数损失函数变成了非凸函数梯度下降很容易陷入局部最优而交叉熵对应的损失函数是凸函数有全局最优解。进一步说从极大似然估计的角度出发LR的损失函数本身就来源于伯努利分布的极大似然不是“拍脑袋选出来的”。SVM的考点则集中在SVM的核函数有哪些各自适用场景是什么为什么SVM对高维稀疏数据比较友好线性可分、线性不可分、非线性问题分别怎么处理有一个容易混淆的点是SVM和LR都可用于分类但在特征维度远大于样本量的时候线性SVM往往比LR更稳定因为SVM只关心支持向量对全局分布不敏感而数据稀疏、特征含义明确的场景LR加L1正则往往更实用。这种对比类问题回答时一定要把适用条件讲清楚而不是直接说“SVM比LR好”。决策树和朴素贝叶斯相对基础但出题方式同样有套路。决策树常考ID3用信息增益、C4.5用信息增益率、CART用基尼指数三者各自偏好什么样的特征朴素贝叶斯常考为什么它叫“朴素”因为它假设特征之间相互独立当特征之间有明显相关性时效果会打折扣。3.2 损失函数、过拟合与调参笔试喜欢挖的细节在机器学习基础这部分笔试特别喜欢考察“你只是在调包还是真明白里面发生了什么”。损失函数方面除了刚才说的LR还常考平方损失回归问题交叉熵损失分类问题合页损失SVM对数损失逻辑回归这几者的区别和适用场景不能只背名字要能把式子写出来。比如合页损失L(y, f(x)) max(0, 1 - y·f(x))这个式子的含义是当样本被正确分类且置信度足够高y·f(x) 1时损失为0否则损失随置信度下降线性增加。理解了这一点你就明白SVM为什么追求“最大间隔”——它不只是分类正确还要求足够自信地分类正确。过拟合这个概念的考察频率极高几乎每年必考。与之配套的问题是如何防止过拟合标准答案大家都会背增加数据量、正则化、Dropout、早停、交叉验证。但笔试会进一步追问L1正则和L2正则的区别是什么为什么L1能产生稀疏解机器学习岗的候选人如果只回答“L1会把特征系数压到0”但说不出L1正则对应的先验分布是拉普拉斯分布L2对应高斯分布那我基本可以判断他的实际经验有限。调参方面GridSearch、RandomSearch、贝叶斯优化这三者的区别也开始出现在当年的题目里。核心点在于网格搜索在参数维度较高时计算量爆炸随机搜索在同样的计算预算下往往能找到更好的参数组合贝叶斯优化则通过代理模型逐步逼近最优参数适合评估成本高的场景。3.3 特征工程与评估指标容易被忽视的送分题特征工程是数据挖掘岗的核心工作但笔试中很多人在这部分失分不是因为不会而是因为没有系统整理过。常见的考察点特征归一化的方法Min-Max归一化和Z-Score标准化的区别与适用场景。类别特征如何处理One-Hot编码、标签编码、目标编码的区别。缺失值处理删除、均值填充、中位数填充、模型预测填充的适用场景。特征选择方法过滤式方差、卡方检验、互信息、包裹式RFE、嵌入式L1正则、树模型特征重要性。我当时就把特征工程整理成了一个完整的流程清单数据清洗 - 异常值处理 - 缺失值填充 - 特征构造 - 特征变换 - 特征选择。到了笔试现场凡是遇到特征相关的问题就按这个框架一步步答基本不会漏点。评估指标方面分类问题必考混淆矩阵、精确率、召回率、F1、ROC和AUC。有一个高频陷阱题在正负样本极不平衡的情况下比如欺诈检测正样本只有1%应该用什么指标答案是ROC-AUC或者PR-AUC都行但要警惕——当负样本远多于正样本时ROC曲线会显得过于乐观此时PR曲线更能反映模型性能。这类细节面试官就喜欢听你从“为什么不合适”的角度展开。回归问题则常考MSE、RMSE、MAE和R²。有一个思考点在存在离群点的情况下MAE比MSE更稳健因为MSE对误差做了平方大的离群点会把损失拉得很大导致模型过度拟合这些异常点。但如果你的业务场景恰恰需要对大误差进行重罚比如预测销售额偏差50%和5%的严重程度完全不同那MSE更合适。这类题目没有标准答案考察的是你有没有“根据业务选指标”的思维。4. 概率统计与SQL数据挖掘的两翼4.1 概率题的常见题型与贝叶斯陷阱这部分题目在整套题中占比不高但容错率极低——因为概率统计是机器学习算法的基础答不好会直接拉低整体印象。常见的高频题型包括一个袋子里有3个红球和2个白球连续取两次不放回求两次都是红球的概率。在某个疾病检测场景中患病率为1%检测准确率为99%如果某人检测结果为阳性他真正患病的概率是多少随机变量X服从均值为λ的泊松分布写出其概率质量函数。给定一组样本写出其极大似然估计的推导过程。其中第二题是最经典的“贝叶斯陷阱”。答案是50%左右不是99%。因为患病率只有1%检测准确率99%意味着有1%的假阳性率所以10000个人里有100个真病人、99个健康人被误诊为阳性阳性人群中真病人占比约100/(10099)≈50.25%。很多人在笔试中想当然地写99%就是因为没有把先验概率患病率代入贝叶斯公式。这个题考察的不仅仅是公式记忆而是“能不能在不确定信息下重新计算概率”的统计思维。4.2 SQL题考察数据提取与拆解能力SQL在这套题里的比重虽然不算高但它是数据挖掘工程师的日常必备技能。笔试中出现的SQL题通常非常贴近业务例如求用户表的留存率次日留存、7日留存、30日留存。统计每个品类的PV、UV和人均浏览次数。用SQL实现两个表的关联并指出INNER JOIN、LEFT JOIN、RIGHT JOIN的区别。找出满足某条件下连续登录3天以上的用户。留存率的计算我推荐一个标准化写法先构造每个用户的“首日活跃日期”作为基准然后计算每个用户每个活跃日期与基准日期的差值最后按差值聚合并除以首日用户数。WITH first_active AS ( SELECT user_id, MIN(active_date) AS first_date FROM user_active GROUP BY user_id ) SELECT DATEDIFF(ua.active_date, fa.first_date) AS day_diff, COUNT(DISTINCT ua.user_id) / COUNT(DISTINCT fa.user_id) AS retention_rate FROM user_active ua JOIN first_active fa ON ua.user_id fa.user_id GROUP BY DATEDIFF(ua.active_date, fa.first_date) ORDER BY day_diff;这段SQL的核心逻辑是先找到每个用户的“出生日”再看他们之后每一天是否还回来。思路清晰了SQL写起来就不会乱。4.3 核心分布的记忆点和适用场景笔试中如果出现概率分布相关的题通常是给你一个场景让你判断属于什么分布。常见的有二项分布n次独立重复试验中成功的次数比如抛硬币10次正面朝上的次数。泊松分布固定时间或空间内事件发生的次数比如一小时内到达服务台的顾客数、一篇文章中拼写错误的个数。正态分布大量独立随机因素叠加的结果比如身高、体重、测量误差由中心极限定理支撑。指数分布两个独立事件之间的时间间隔比如顾客到达的间隔、设备无故障运行时间。记忆这些东西不能靠死记硬背。我当时用的方法是把每个分布和“生活场景”绑定起来。比如你每天在路口观察等红灯的车辆数如果是“一分钟内通过的车辆数”那是泊松分布如果是“连续两辆车之间的时间间隔”那是指数分布如果是“100辆公交车中有几辆晚点超过5分钟”那是二项分布。这样绑定之后做题就是套场景不用再去回忆定义。5. 笔试之外的隐性考察业务思维与临场节奏5.1 业务场景题怎么答才不空泛这套题的最后有时会有一两道业务场景题比如“某APP的次日留存率下降了5个百分点你如何分析原因”或者“给用户推荐内容时怎么平衡点击率和用户长期体验”这类题没有标准答案但高分回答通常有一个共同特征结构清晰、逻辑完整、有数据思维。我的答题框架是四步确认指标口径次日留存率是怎么算的是新增用户还是全量用户分母和分子分别是什么拆分维度把问题按渠道、版本、机型、地区、时间等维度拆开定位下降集中在哪个子群体。提出假设并验证是新版本的影响是渠道质量变差是竞品上线抢走了用户还是节假日效应消退给出建议针对验证出的原因提出可落地的动作。这个框架在面试和汇报里同样好用。关键是让面试官看到你不光会跑模型还能在模型之外用逻辑和数据回答业务问题。5.2 时间分配与做题顺序笔试的时间通常不会太宽裕特别是算法题一紧张就容易卡壳。我自己的策略是先做会的再做可能要花几分钟想的最后做完全没思路的。具体来说第一轮5-10分钟快速扫一遍所有题目把会做的、计算量小的题先做掉保证基础分拿到手。第二轮20-30分钟做机器学习、概率统计和SQL题这些题得分确定性高。第三轮剩余时间集中攻算法题尤其是动态规划和场景设计题这类题即使不能完全做对也要把思路写好争取部分分。最后一轮5分钟检查计算题的小数点、单位、概率是否落在[0,1]范围。还有一个容易被忽略的点主观题和场景题一定要写满哪怕想法不成熟也要把思考过程展示出来。这既是给面试官看的也是给自己养成“输出型思考”的习惯。5.3 从笔试到面试这套题在面试环节的延伸价值很多人做完笔试就把它丢一边了这其实是浪费了最宝贵的复习素材。我当年在准备面试时会把笔试里做错的每一道题都做一次“复盘闭环”这道题考察的知识点是什么我当时为什么做错是知识点遗漏、是计算失误、还是读题不清正确的解题路径是什么有没有更优解比如我当年在LR损失函数那道题上吃过亏就在复盘笔记里画了一张“LR知识树”从LR的模型形式到损失函数推导到梯度下降更新公式到正则化到多分类拓展到实际应用中的注意事项。后来面试时被问到LR相关的任何问题我都能顺着这棵知识树迅速定位回答得很有条理。这套题由此变成了一张查漏补缺的“体检报告”价值远超一次笔试本身。如果让我给准备数据挖掘岗位笔试的朋友一个建议那就是题目本身会过时但题目背后考察的知识和应用能力不会过时。把每一次真题练习都当成知识体系的一次锚点比盲目刷题有价值得多。
返回列表