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

资讯详情

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

唯品会校招数据挖掘真题解析:机器学习与SQL考点全梳理

唯品会校招数据挖掘真题解析:机器学习与SQL考点全梳理 一份笔试真题背后藏着的往往不只是知识点清单更是一个公司在某个阶段的技术栈、业务痛点和人才偏好。唯品会2018校招这套数据挖掘与机器学习笔试题A卷我在刷题的时候反复看了好几遍越看越觉得它不是一个普通的考试而是一面镜子照出了电商行业对数据岗位的真实期待。这篇文章不打算给你逐题抄答案而是从这套题的命题逻辑出发把数据挖掘和机器学习备考中真正值得花时间的地方一条条掰开揉碎了讲清楚。无论你是正在准备校招的应届生还是想转行做数据的职场人这篇文章都值得你花十五分钟认真看完。1. 唯品会这套笔试到底在考什么1.1 电商数据挖掘岗的真实工作场景决定了命题方向先别急着背知识点。你要理解一件事一家做品牌特卖的电商公司它的数据挖掘工程师每天面对的究竟是什么问题。唯品会的核心业务是“限时抢购品牌特卖”这个模式决定了它和淘宝、京东的日常运营逻辑不一样。闪购场景下每一场活动的流量分配、库存深度的预测、用户点击转化的预估、复购时机的判断都直接和收入挂钩。所以数据挖掘岗位每天打交道的不只是高深的算法模型更多的是一些非常落地的问题下一场活动某件商品能卖出去多少件、哪些用户会在这个时间段打开App、某个品牌清仓应该给多大折扣才能既清掉库存又保住毛利。这套笔试题的命题思路本质上是顺着这条业务链路来设计的。它看起来在考机器学习算法实际上是在筛选“能听懂业务语言、能处理真实数据、能搭建可用模型”的人。这也是为什么很多同学刷题的时候觉得“知识点我好像都会但答题的时候总觉得差口气”——因为单纯的算法理论背诵根本应付不了这种贴近业务场景的考察方式。1.2 试卷结构的常见命题思路拆解从A卷的整体题型分布来看大致可以归纳成四大模块数据挖掘基础概念题覆盖数据预处理、特征选择、评估指标等偏理论的内容。机器学习算法原理题重点考察逻辑回归、决策树、SVM、集成学习等经典算法的推导和适用场景。SQL与数据处理实操题结合电商业务场景要求写SQL或描述处理思路。综合分析与开放设计题给出一个业务问题让你设计完整的建模方案。这四个模块其实是有一条暗线的拿到一份真实的电商数据你能否把它清洗干净、构造出有效特征、选择合适的模型、评估模型效果最后再把模型结果翻译成业务行动。整份试卷模拟的就是这样一个完整的工作流。备考的时候如果只看算法不看数据预处理或者只刷LeetCode不练业务思维的SQL都会在某一环上卡住。2. 数据挖掘基础考点从数据预处理到特征工程2.1 数据清洗与预处理的必考逻辑数据预处理在笔试中虽然常常以选择题形式出现但它的重要性恰恰是很多考生低估的。现实中的电商数据远没有教科书那么干净用户浏览日志可能有大量空值、订单表可能有重复记录、价格字段可能出现0或负数这样的异常值。笔试中关于数据清洗的考察通常集中在缺失值处理和异常值检测两个方向。缺失值处理上常见的策略有删除法、均值/中位数填充、众数填充和模型预测填充。选择题喜欢考察的是“在什么场景下用什么填充方式”。比如用户年龄字段缺失如果直接用均值填充会拉低整个样本的年龄分布对后续的用户分群产生偏差但如果换成中位数填充至少能抵抗极端值的影响。如果是时间序列数据比如每日销售额则更适合用前后值的线性插值。这不是一个“记住三种方法”就能得分的题而是需要你真的理解不同填充方式对数据分布的影响。异常值检测的常见手段一个是基于统计学的3σ法则一个是基于分位数的IQR方法。3σ法则假设数据服从正态分布超过均值±3倍标准差的值判为异常IQR方法则不看分布形态用四分位距来划定边界。笔试中容易挖坑的地方在于如果数据是长尾分布比如订单金额3σ法则会把大量本身正常的高价值订单误判成异常这时候用IQR或者基于业务规则的手动阈值反而更合理。这个细节能区分出你是“背过算法”还是“做过数据”。2.2 特征工程面试官真正想看到的思考方式特征工程在数据挖掘笔试题里的权重往往比很多人想象的要高。原因很简单真实业务场景中算法模型的选择相对成熟真正拉开差距的是谁能从同样的原始数据里挖出更有效的信号。笔试中特征工程相关的题目通常不会让你直接写代码而是给出一个业务场景问你“你会构造哪些特征”。比如给定用户的历史购买记录让你预测这个用户未来30天内是否会再次购买。比较naive的回答是最近一次购买距今天数、过去30天购买次数、累计消费金额。但这些特征太基础了显不出水平。更进一步的回答应该包括用户购买品类集中度用熵或基尼系数衡量用户购买时间间隔的均值与标准差反映消费节奏用户对促销活动的敏感度活动期间的购买占比用户购物车转化率的趋势是上升还是下降最近一次浏览到购买的转化时长面试官想看到的不是你堆出一百个特征而是你有清晰的逻辑先描述用户的基本属性再刻画用户的行为模式再进一步挖掘用户对特定运营动作的反馈。这种分层构造特征的思维方式才是这道题真正的考点。如果只是简单罗列几个统计指标即使数字算对了也拿不到高分。2.3 评估指标为什么准确率不是万能的机器学习评估指标这块是笔试的送分题也是最容易丢分的题。很多同学把Precision、Recall、F1背得滚瓜烂熟但一到具体场景就选错。电商场景下最典型的例子是“预测用户是否会购买”。假设100个人里只有2个人真的买了如果你做个模型把所有用户都预测为“不买”准确率是98%。这个数字看起来很好看但模型一点用都没有。所以在正负样本极不平衡的情况下准确率这个指标会严重失真应该关注的是AUC、Recall或者F1。而如果业务目标是“尽量别漏掉潜在购买用户”比如营销短信发送场景那Recall的优先级就要高于Precision反过来如果目标是“推送精准、别打扰用户”比如App弹窗场景那Precision就更重要。另一个常考点是ROC曲线和AUC值的理解。AUC的本质是随机抽一个正样本和一个负样本模型给正样本打分高于负样本的概率。这个定义在笔试中经常以判断题形式出现很多人记成了“AUC是曲线下的面积”就草草了事但真正理解它的概率含义才能在做排序类题目时游刃有余。KS值在风控场景中很常见它衡量的是模型区分正负样本的最大差距笔试中如果出现金融风控背景的题KS和AUC的关系也是高频考点。3. 机器学习核心算法考点从原理到推导的复习清单3.1 逻辑回归与最大似然估计最常出现的推导题逻辑回归是电商数据挖掘笔试中出现频率最高的算法没有之一。原因很简单它在工业界应用最广可解释性强训练快而且和推荐系统、点击率预估这些核心业务直接挂钩。笔试对逻辑回归的考察通常不满足于“知道sigmoid函数”而是要求你完整推导损失函数的来历。一个典型的推导链条是这样的从线性回归的预测值出发用sigmoid函数映射到0~1区间作为正类概率。然后用最大似然估计写出所有样本的联合概率取对数后化简得到交叉熵损失函数。最后用梯度下降法求参数更新公式。很多同学能写出最后的损失函数形式但问一句“为什么用交叉熵而不用均方误差”就卡住了。这里的关键在于逻辑回归的预测值是概率交叉熵从最大似然推导而来和概率分布的距离度量天然契合而均方误差假设误差服从高斯分布和伯努利分布的输出不匹配而且均方误差配合sigmoid会导致梯度消失训练速度慢。梯度下降的几个变体批量梯度下降、随机梯度下降、小批量梯度下降也是高频考点。笔试中常见的问法是“随机梯度下降和批量梯度下降的优缺点”你不仅要知道SGD收敛快但噪音大、BGD稳定但计算慢还要能说明在亿级样本的广告点击率预估场景下为什么工程上一定选SGD或Mini-batch GD。3.2 决策树与集成学习GBDT和XGBoost的考点方向决策树这块ID3、C4.5、CART三者的区别是笔试的常青树。ID3用信息增益选特征偏好取值多的特征C4.5用信息增益率加了分裂信息的惩罚项CART用基尼系数而且只生成二叉树。这个考点看似简单但延伸出去的坑不少。比如“信息增益和基尼系数有什么本质区别”信息增益基于熵的变化量基尼系数直接衡量样本集合的不纯度两者在数学形式上不同但在分类效果上往往差异不大。集成学习是笔试的重头戏。Bagging和Boosting的区别必须能说清楚Bagging是并行训练多个独立模型再投票降低方差Boosting是串行训练、每个模型关注前面模型的错误样本降低偏差。随机森林和GBDT分别是两者的代表。GBDT的考点非常细。你要能解释清楚“负梯度”和“残差”的关系GBDT在每一轮拟合的是损失函数对当前模型预测值的负梯度在平方损失情况下负梯度恰好等于残差所以很多人误以为GBDT一直在拟合残差其实在自定义损失函数时拟合的是广义残差。XGBoost在GBDT基础上的改进点也需要掌握目标函数加了正则化项防止过拟合、对特征值做了预排序和近似分桶加速分裂点查找、支持列抽样、能自动处理缺失值。这些点随便挑一个都能出简答题。还有一个高频对比题随机森林和GBDT在电商场景中怎么选。我的实践经验是如果特征维度高、有大量离散特征且样本量足够大随机森林训练快、对噪声鲁棒、不容易过拟合如果追求极致精度、特征多为连续数值且样本量较大GBDT/XGBoost/LightGBM的表现通常更好。笔试中只要结合具体场景说清楚“方差和偏差的权衡”基本就能拿到大部分分数。3.3 聚类与降维无监督学习的考察重点无监督学习在电商数据挖掘笔试中占比不如监督学习大但K-Means和PCA属于必考内容。K-Means的考点集中在三个方面K值怎么选、初始中心点怎么定、距离度量用什么。K值选择最常用的方法是肘部法则画出簇内误差平方和SSE随K变化的曲线找拐点更鲁棒的做法是轮廓系数算每个样本的簇内聚合度和簇间分离度的综合指标。初始中心点的选择上K-Means是最常被考察的优化方法核心思想是让初始中心点尽可能分散避免落入局部最优。距离度量默认是欧氏距离但如果特征量纲差异大比如金额和次数必须先做标准化否则金额会完全主导距离计算。PCA的考点主要在于理解它的本质对协方差矩阵做特征值分解取前K个最大特征值对应的特征向量构成投影矩阵实现降维。笔试容易考的点是PCA到底是有监督还是无监督答案是它不利用标签信息所以是无监督降维。另一个坑是PCA和线性判别分析LDA的对比LDA利用了类别标签目标是最大化类间距离、最小化类内距离所以它是有监督的。在特征维度高达数千、且后续要接LR做分类的场景中用PCA做预处理可以显著降低训练时间这一点在答题时可以结合电商用户画像的场景来展开。4. SQL与数据处理能力电商数挖笔试的隐藏关卡4.1 电商场景下SQL高频考点梳理SQL在数据挖掘笔试中占的比重很多应届生会严重低估。唯品会这类电商公司日常取数、分析、建特征七成以上的时间都在和SQL打交道。笔试中SQL题的典型特征是场景化不会让你干巴巴地写一个简单查询而是会结合用户表、订单表、商品表来考察。最常考的一类是窗口函数比如用ROW_NUMBER()实现分组TopN。典型的题目找出每个品类下销售额排名前3的商品。很多人第一反应是用GROUP BY加ORDER BY但你会发现无法优雅地取到每组的前N条。正确思路是用ROW_NUMBER() OVER (PARTITION BY 品类 ORDER BY 销售额 DESC) 给每个品类内的商品编号再包一层子查询筛选编号小于等于3的记录。这个考点几乎年年出现值得反复练。留存率计算是另一个高频题型。电商公司非常关注用户留存笔试题往往会给你一张用户登录表里面只有user_id和login_date两个字段让你算每日新增用户的次日留存率。这个题的核心技巧是用DATE_SUB把登录日期往前推一天然后和用户的首次登录日期做关联。第一天注册、第二天还来登录的人数和第一天注册总人数的比值就是次日留存率。这里容易出错的地方是把“当日活跃用户数”和“当日新增用户数”搞混留存率的分母一定是新增用户不是当日活跃用户。还有一类是行列转换。比如用户标签表里每个用户有多行标签记录需要转成一列一个标签的形式。这就要用到CASE WHEN配合聚合函数做行转列或者用GROUP_CONCAT将多行值拼接成一个字符串。这类题考察的是对数据结构的理解在特征工程阶段经常要用到。4.2 大数据生态工具在笔试中的涉猎深度除了SQL唯品会这类有一定规模的电商公司笔试还会顺带考一些大数据生态工具的概念通常以选择题为主考查你是否了解Hive、Spark的基本使用场景。Hive的核心逻辑是“把SQL翻译成MapReduce执行”所以HiveQL和传统SQL的差异点是考察重点。比如Hive中不支持等值连接以外的复杂连接条件、支持分区表来减少全表扫描、用分桶表来优化抽样和join效率。笔试如果问“在大数据量环境下如何优化一个跑得很慢的Hive查询”可以从分区裁剪、小文件合并、数据倾斜处理等几个角度回答。数据倾斜是最常见的坑某些热门商品的记录量远大于其他商品导致单个reduce任务处理时间过长。解决办法通常是加随机前缀打散热点key或者先用子查询过滤掉极端数据。Spark的考察一般不会太深能说清楚RDD、DataFrame的区别以及Spark和MapReduce在迭代计算上的性能差异就够了。RDD是弹性分布式数据集DataFrame在RDD基础上加了schema信息方便做优化。和MapReduce相比Spark关键的优势是内存计算迭代式机器学习算法可以避免频繁的磁盘读写。笔试中能用寥寥几句话讲明白这个对比逻辑就能证明你不是只背了概念。5. 笔试实战技巧与备考建议5.1 时间分配策略别在选择题上恋战校招笔试的题量往往不小时间紧凑。以A卷这类包含推导题和SQL编程题的试卷为例合理的时间分配大概是选择题和基础概念题控制在25%的时间算法推导题控制在30%SQL和处理题控制在25%剩下的20%留给综合设计题。选择题是拿分的基础但不值得花太多时间纠结。一个经验是选择题里如果犹豫超过两分钟果断先选一个并做标记等后面大题全部搞定再回头检查。因为一道选择题的分值通常只有综合题的几分之一把时间耗在上面太不划算。推导题需要特别注意书写步骤的完整性。很多同学会觉得思路对就行最后一步结果写出来就完事了。但面试官看推导题的时候更看重的是你的思维是否严密。比如逻辑回归的推导从定义预测函数到写出似然函数、取对数、求偏导、得到梯度更新公式每一步都要写清楚。哪怕最后的化简结果算错了只要前面的过程正确还是能拿到大部分步骤分。反过来只写一个最终公式没有任何推导过程得分会非常低。5.2 高频易错点清单这些坑我当年都踩过备考刷题过程中有几个错误是反复出现的整理成清单帮你排雷评估指标方向混淆把Precision和Recall记反。Precision是“预测为正类的样本中有多少是真正类”Recall是“真实正类样本中有多少被预测出来了”。一个简单的记忆锚点Precision看的是预测结果的纯度Recall看的是对正类的覆盖度。归一化和标准化的概念混用Min-Max归一化把数据缩放到[0,1]区间z-score标准化把数据变成均值为0、方差为1。决策树和随机森林不要求特征归一化但逻辑回归、SVM和K-Means对特征尺度敏感必须先做归一化或标准化。过拟合处理手段遗漏L1正则化和L2正则化都能抑制过拟合但L1更容易产生稀疏解相当于自动做了特征选择L2则是让权重尽量小但不归零。遇到“如何防止过拟合”这类题最好把数据增强、简化模型、正则化、交叉验证、早停、Dropout全部列上再结合具体场景说优先用哪种。K-Means中K值的选择拿不准除了肘部法则和轮廓系数还可以结合业务判断。比如用户分群如果运营团队人力有限5~8个群是合理的K选得太大落地价值反而降低。5.3 刷题方向与复习资源配置准备校招笔试不能盲目刷题更不能只看不练。我的建议是分三条线来复习第一条线是经典教材李航的《统计学习方法》和周志华的《机器学习》西瓜书配合着看前者注重推导后者注重直觉两本互补效果最好。第二条线是Kaggle或天池上的电商类入门比赛不用追求名次重点是用真实数据把从数据清洗到模型评估的完整流程走一遍这比刷一百道概念题都管用。第三条线是SQL练习LeetCode的数据库板块加上牛客网的SQL实战题库把窗口函数、留存率、行列转换这几类高频题型练到条件反射。复习时间安排上建议把算法推导和SQL编程放在前期因为这两块需要长时间的消化和肌肉记忆数据挖掘概念和评估指标这类记忆型内容放在考前一两周集中看效果最好。有些同学喜欢把资料攒到最后一个月复习结果时间根本不够用算法推导和SQL编程又是最耗时间的两块只能草草带过答题时就很被动。6. 常见问题与避坑实录来自真实备考和面试的血泪经验6.1 基础不扎实导致的连环失误我在辅导过的不少应届生身上看到过一个共性问题算法原理停留在“听过名字”的层面一问到细节就露馅。比如有人能说出XGBoost比GBDT好但问他好在哪里、有没有代价就答不上来了。这里想强调一个备考原则宁可把5个经典算法吃透也不要囫囵吞枣地刷30个算法的简介。笔试和面试考察的是深度不是广度。有个同学的例子很典型他在简历上写了“熟练使用GBDT”笔试中有一道题问“GBDT在每一轮迭代中拟合的是什么”。他毫不犹豫地写下“拟合残差”但在平方损失函数下这么说勉强成立换成对数损失函数就完全错了正确的说法是“拟合损失函数在当前模型下的负梯度”。这一道题就暴露了他其实是在背面试题没有真正推导过GBDT的更新过程。笔试完成后我跟他复盘发现他看过的资料里确实只提了“拟合残差”这个简化说法没有去深究简化的前提条件。6.2 算法原理与实现脱节的典型问题另一个高频问题理论推导能默写出来但一旦要求用代码实现或者手写伪代码就手足无措。笔试中有一类题是给一个K-Means的伪代码框架让你补充核心步骤。看起来很简单但很多同学的聚类中心更新步骤和样本分配步骤顺序是反的。正确的流程是先初始化中心点然后交替执行“分配样本到最近中心”和“重新计算每簇中心”直到中心点不再移动或达到最大迭代次数。这个流程如果只看公式不去实际跑一遍很容易在细节上出错。建议备考期间至少亲手实现一遍K-Means、逻辑回归和决策树。用Python写一遍再用SQL里的CASE WHEN尝试表达一些简单的规则模型。真正动手写过和只看书的感觉完全不同后者在笔试时细节会模糊前者能让你对每一步都胸有成竹。6.3 踩了几个坑之后我对校招笔试的真实体会聊到最后说说我个人刷完这套题之后的整体感受。唯品会这套2018年的校招笔试题考察范围放到今天来看依然不过时它反映出来的核心要求是扎实的算法基础、熟练的SQL数据处理能力、以及把业务问题翻译成建模问题的思维习惯。这三点不是临时抱佛脚能速成的需要提前几个月持续积累。在校招中笔试只是第一关但这一关筛掉的人其实非常多。核心原因不是题目有多难而是很多人的知识结构存在明显的短板算法原理背了一堆但SQL和数据处理能力薄弱或者SQL很熟练但问到评估指标就逻辑混乱。准备笔试的最好方式是把自己当作一个已经入职的数据挖掘工程师带着真实的业务问题去复习每学一个算法就想想它可以用在电商的哪个场景里、上线前需要怎么评估效果、上线后怎么监控数据分布的变化。笔试的结束不是终点它更像是你作为数据挖掘工程师的第一堂实践课。把一套真题吃透收获的不只是笔试的分数更是对这份工作到底在做什么、需要具备什么能力的清晰认知。这套题里暴露出的每一个薄弱点都是你接下来三个月值得投入时间的方向。
返回列表