尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

滴滴校招数据挖掘笔试解析:算法、SQL与业务场景全攻略

滴滴校招数据挖掘笔试解析:算法、SQL与业务场景全攻略 看到“滴滴出行2018校园招聘网申笔试-数据挖掘工程师(第一批”这个标题估计不少人第一时间会去翻当年的面经想看看有没有原题。但我今天想聊的是比原题更值钱的东西这场笔试到底在筛什么人数据挖掘工程师这个岗位在校招笔试阶段看重什么以及你用什么样的复习策略能稳稳吃下这类考试。2018年那会儿正是网约车平台精细化运营竞争最凶的阶段数据挖掘岗位在校招里的定位非常明确——不是招一个会调包跑模型的算法研究员而是招一个能直接上手处理海量订单数据、从用户行为里挖出规律、能落地策略的人。所以那批笔试题目第一批的知识点分布、出题风格、考察深度放到今天依然有很强的参考价值。不管你准备的是大厂的数据挖掘、机器学习还是数据分析岗这套笔试的考察逻辑都值得你花时间拆解一遍。我结合当年考生回忆版的题型结构、同类互联网公司校招数据岗的通用考法以及我自己带人准备这类笔试的经验把这场笔试的核心考点、每类题背后的真实意图、复习优先级都整理出来了后面还附了一套可以照做的备战时间表和踩坑实录。1. 这份笔试在筛选什么样的人——岗位定位与题型总览1.1 数据挖掘工程师的日常职责决定了笔试考点先别急着刷题你得先搞清楚滴滴这类公司里的数据挖掘工程师日常工作到底是什么样的不然你连考点为什么这么设计都看不透。出行平台的数据挖掘工程师核心任务基本是这几块用户画像搭建判断一个用户是通勤族还是夜猫子、价格敏感度分析调到什么折扣能激发叫车需求、订单供需预测预估某个区域未来半小时的用车需求、司乘匹配策略优化让司机少空驶、乘客少等待、以及风控相关的异常行为识别刷单、虚假注册。这些任务听起来高大上但落到笔试题目上就是基础算法、SQL取数、统计概率、机器学习基础、业务场景题这几大块。换句话说这场笔试不是要你背出某个深度模型的公式推导而是要看你在拿到一堆真实业务数据时能不能用最基本的工具和思维把问题拆开、算出可用的结果。我见过太多简历上写“精通TensorFlow”的同学一考SQL和概率题就露馅。笔试出题人很聪明他们知道基础题才能真正拉开差距。1.2 笔试的整体题型结构与时间分配从当年参加过的同学反馈看滴滴2018校招数据挖掘工程师的第一批笔试整体结构偏向“算法题基础题”混合卷线上笔试系统统一计时时间压力给得比较足。综合同类互联网公司美团、京东、头条等同年数据岗笔试的通行结构我还原一个高概率的题型分布框架你可以对照着看自己的薄弱项题型模块大致题量考察方向时间占比算法与数据结构编程题2-3题数组、字符串、动态规划、贪心40%SQL/数据操作题2题左右多表关联、聚合、窗口函数15%统计与概率5-8题选择/填空概率计算、分布、假设检验20%机器学习基础5-8题选择/问答模型原理、过拟合、特征工程15%业务场景综合题1-2题问答/设计指标异动分析、策略设计10%注意这里说的题量和占是参考常模不同批次会有浮动。但权重方向是明确的算法题权重最大这道关过不了后面基本没戏。我后面会挨个模块拆解具体考点。1.3 从考点倒推岗位能力地图如果你把上面这个题型分布和“数据挖掘工程师日常任务”对应起来看会发现一条清晰的能力链路算法编程题 → 考察的是你写代码解决问题的底子因为真实业务里你要写的可不止是模型脚本还有各种ETL逻辑、特征处理代码SQL题 → 考察的是你面对一张张原始订单表时能不能快速提取出建模和复盘要用的数据概率统计 → 考察的是你能否理解用户行为里的不确定性能不能用AB实验判断一个策略到底有没有效机器学习基础 → 考察的是你会不会在真实场景里正确选择和使用模型而不只是会调包业务题 → 考察的是你有没有“指标思维”能不能把一个含糊的问题翻译成可计算、可验证的数据问题。这五条链路本质上是一个数据挖掘工程师从“取数—理解数据—建模—落策略—评估效果”的完整工作流。笔试的所有题目都是在用一套考试语言模拟你未来半年的工作内容。所以复习的时候千万别割裂地学要把这些考点串成一条线。2. 算法与数据结构笔试的基础盘决定你能不能进下一轮2.1 为什么数据挖掘笔试要先过算法关很多同学不理解我投的是数据挖掘岗又不是后端开发为什么要花一大半时间做算法题这个问题我当年也困惑过直到自己工作后带实习生才彻底想明白。原因有三个。第一算法题是筛选效率最高的方式线上笔试系统一次要判几千份卷子编程题能机器判分、能快速看代码风格是性价比最高的筛选项第二数据挖掘工程师虽然名义上做算法但日常有大量时间在写数据处理代码很多特征逻辑写不好就会引入数据泄漏、内存溢出这类问题代码功底差的同学根本接不住第三算法能力某种程度上反映了你的逻辑思维严密性连经典动态规划都想不明白的人很难指望他能把复杂的业务问题抽象成数学模型。所以我的建议是别抱怨老老实实刷题。这不是滴滴一家的问题全行业的数据岗都这么考。2.2 高频题型与解题套路具体到滴滴笔试这个批次结合2018年前后各大厂数据岗笔试的高频题库以下几类算法题型值得重点准备数组与遍历类这类题最简单但最容易出细节坑。比如“求数组中连续子数组的最大和”“合并两个有序数组”“寻找数组中的众数”。核心套路是双指针、前缀和、哈希表辅助记录别一上来就暴力循环。字符串处理类数据岗的字符串题往往和实际数据清洗有关。比如“判断括号是否有效”“字符串去重保序”“最长无重复子串”。这类题要做熟因为实际业务里处理用户埋点数据、日志数据时字符串操作占大头。动态规划类这是拉开差距的地方。常考的有“爬楼梯”“最小路径和”“最长公共子序列”“编辑距离”等基础DP进阶一点会考“背包问题”变种。数据挖掘里很多优化问题本质是DP比如司乘匹配里常用的匈牙利算法思想就和DP有交集所以笔试偏爱DP不是没道理。贪心与排序类比如“会议室安排”“根据身高重建队列”“最大数”。这类题技巧性强想明白贪心策略后代码往往很短考察的是你分析问题本质的能力。树的遍历相对高频的是二叉树的前中后序遍历、层次遍历、最近公共祖先。虽然数据岗日常写树的机会不多但它是算法基础的一部分属于必须会的内容。2.3 一道典型题的完整推演我拿一道当年笔试同级别难度的题目举例——最长无重复子串要求给定一个字符串找出其中不含重复字符的最长子串长度。看着简单但真写起来很多人第一反应是三层循环暴力枚举复杂度直接O(n^3)在笔试系统里只能拿部分分。正确思路是用滑动窗口加哈希表维护一个窗口窗口内保证没有重复字符。右指针每次往前走一步如果在哈希表里发现了重复字符左指针就跳到重复字符上次出现位置的下一位。这样每个字符最多被访问两次时间复杂度降到O(n)。这类题的核心套路我总结成一句话遇到“子串”“子数组”这种连续区间问题优先想滑动窗口能不能解不要把暴力枚举作为默认方案。面试官看的是你的复杂度分析意识代码能跑只是及格线。3. SQL与数据操作数据工程师的基础生存技能3.1 笔试中SQL考的其实是什么SQL题在整张卷子里占比不算最高但它是最容易被忽视的送分区域。为什么说是送分因为SQL语法本身不难只要练习过几个核心场景基本都能写出来。但为什么又有大量同学在SQL题上丢分主要是没读懂考察重点。笔试里的SQL题从来不是让你查个单表数据就完事而是会模拟一两张业务表让你做维度拆解。比如滴滴的场景大概率会给你一张订单表和一张司机表让你算某个城市每个时段的完单率、不同品类订单的平均应答时长这类指标。这背后的核心考察点有三个多表关联的准确度、分组聚合的逻辑清晰度、以及对业务指标口径的理解。3.2 高频SQL场景与写法结合出行行业和数据岗通用的SQL考察方式这几个场景你必须在笔试前练熟分组聚合求每个品类下的订单量、GMV、完单率这是最基础但最稳的考察点。核心是GROUP BY配合COUNT、SUM、AVG别忘了HAVING和WHERE的区别。多表关联订单表和用户表关联查用户等级分布司机表和城市表关联查不同城市的运力情况核心是JOIN的语义。最容易被扣分的地方是把INNER JOIN和LEFT JOIN搞混导致结果行数不对。窗口函数按用户分组求最近一次下单时间、按城市排名。当时窗口函数还不是所有考生都会会的人就能拉开差距现在几乎成了笔试标配ROW_NUMBER、RANK、LAG这几个必须熟练。去重与去脏数据求去重后的活跃用户数排除异常订单。这类题考察你处理真实数据的意识写的时候记得考虑DISTINCT语义和数据过滤条件。我列一个典型的SQL题示例你可以感受一下考法和思路有一张订单表orders字段包括order_id、user_id、city_id、order_amount、order_time、order_status1完成0取消请统计各城市完成订单的总金额以及订单量。这个题看起来简单但第一坑是order_amount要不要乘以订单状态注意题干要求“完成订单的总金额”所以必须在WHERE里加order_status 1或者用SUM(CASE WHEN ...)处理。第二个坑是“订单量”如果题目没明说一般指完成订单的笔数那就和金额同口径。这类细节很容易因为审题不细丢分。3.3 容易翻车的细节SQL题还有几个容易被判错的地方一是别名问题多表关联时两个表如果有同名字段必须用表别名限定否则直接报错或结果错乱二是聚合与非聚合列混用SELECT里出现了既不在GROUP BY里、也没有被聚合函数包裹的列这在MySQL那套严格模式下直接报错笔试系统判分也会扣三是NULL值处理做COUNT时NULL不计入做SUM时NULL不影响但如果你用COUNT(列名)和COUNT(*)搞混结果会差很多。这些都是靠刷题能够避开的坑。我的建议是笔试前至少把SQL zoo之类的在线练习刷一遍重点练窗口函数和复杂JOIN别把时间花在最基本的SELECT上。4. 统计与机器学习从公式到业务的跳跃能力4.1 统计基础题背后的工程意义统计和概率题看着像数学考试实际是在考察你面对业务不确定性时能不能做量化判断。比如去重活跃用户数按泊松分布近似估计、用户留存率按二项分布建模、策略上线后的销量变化做显著性检验——这些都会以选择题或填空题的形式出现。我见过不少复习资料把这些题归为“送分题”但我强烈不同意。恰恰是这类题最能区分一个人是“背过公式”还是“真理解分布”。滴滴这种业务里叫车需求在时间和空间上高度波动一个合格的数据挖掘工程师得能判断什么场景该用泊松分布近似、什么场景该上负二项模型、什么时候直接用经验分布更稳。复习统计基础时这五个知识点优先级最高古典概型与条件概率贝叶斯公式的简单应用、常见分布二项、泊松、正态、指数的期望方差、大数定律与中心极限定理、参数估计与置信区间、假设检验的流程和两类错误。别去啃复杂的数理统计推导重点放在“给定一个业务场景知道套哪个公式、算出来怎么解读”。4.2 机器学习考点懂原理更要懂场景机器学习基础题通常是选择题相对多的部分但也有问答或简单计算题。考察范围以经典模型为主线性回归、逻辑回归、决策树、随机森林、GBDT、K-Means、KNN、朴素贝叶斯、SVM的基础原理。这里我想特别提一句很多同学复习机器学习喜欢死抠公式推导但笔试考察的往往是更“工程”的方面过拟合怎么检测和缓解、训练集和测试集怎么划分、特征标准化和归一化的区别、样本不均衡怎么处理、模型评估指标该选哪个。举个例子分类问题里正负样本严重失衡准确率这个指标会失真应该看AUC还是F1这个问题你答不上来说明你对模型的工程使用还没建立直觉。还有一个高频考点是“为什么逻辑回归要做特征离散化”。这题看起来偏理论实际上是因为在工业界特征离散化之后模型会更稳定、更抗噪还能做特征交叉这是数据挖掘工程师在日常特征工程中的真实操作。4.3 业务场景题的作答思维业务场景题是整张试卷里最像“工作内容”的题目通常给一个具体业务场景比如“滴滴某城市夜间订单量突然下降请你分析可能的原因并给出排查思路”或者“如何评估一个司机激励策略是否有效”。这类题没有标准答案但阅卷人有非常清晰的评分点。正确的作答框架是五步走第一步明确核心指标把“订单量下降”翻译成“完单量下降发单量×应答率×完单率”这类指标拆解第二步列出可能原因维度比如时间维度是否为节假日前后、空间维度是否某个区域特别严重、用户维度是否某个用户群体流失、竞品维度是否存在其他出行平台抢占第三步给出数据验证方案说明需要取哪些表、算哪些指标来验证每个假设第四步针对确认的原因给出策略建议第五步说明如何评估策略效果也就是设定实验组和对照组、确定核心观测指标和实验周期。这个框架如果你提前练熟业务题基本不会慌。阅卷人想看的不是你给出一个“标准答案”而是你遇到一个模糊问题时能不能结构化地拆解它并且站在“能落地”的角度提出方案。这和平时做实践项目的思路完全一致多练几次就能找到感觉。5. 从这场笔试反推备战数据挖掘笔试的完整策略与踩坑实录5.1 按考点拆解复习优先级很多人备战此类笔试的通病是平均用力觉得哪里都要复习结果最后哪里都没复习透。根据这场笔试的权重分布和通过难度我的优先级建议是这样的第一优先级是算法编程题。每天至少两到三道LeetCode中等难度题重点刷数组、字符串、动态规划、滑动窗口、双指针。坚持三周以上基本能覆盖笔试中出现频率最高的题型。别贪多把一类题型做透比刷十道不同题型更有用。第二优先级是SQL。这块投入产出比极高每天花半小时专门做一道多表关联或窗口函数的题连续两周就有明显提升。重点是把JOIN语义、GROUP BY细节、窗口函数语法练成肌肉记忆考场上才能快速写对。第三优先级是机器学习基础和统计概率。这两块不适合突击更适合用小本本做知识卡片每天早晚翻看。核心是理解概念和场景不用陷入公式推导的泥潭。第四优先级是业务场景题。这个靠的是“行业理解框架思维”。我会在考前一周集中看几篇关于出行行业指标体系的文章同时练习“指标异动分析”的答题框架做到任何业务题都能快速套进“拆指标—列原因—给验证方案”的三段式里。5.2 一个月复习节奏表如果你离笔试还有一个月我建议你按下面这个节奏来亲测效率最高时间段复习重点具体任务第1周算法基础SQL基础每天2道算法题1道SQL题周末各做一次限时模拟第2周算法提高统计概率每天3道算法题重点DP、滑动窗口统计概率知识卡每天过一遍第3周机器学习业务题框架每天刷机器学习选择题20道整理业务题答题框架并练写2题第4周综合模拟查漏补缺每两天做一套完整限时模拟题错题重刷薄弱点定向补强这个节奏的核心逻辑很简单前面以“练题量”建立手感后面以“模拟真实考试节奏”来发现问题。千万别在最后一周还在学新知识点那是无效焦虑不如把已学内容巩固牢。5.3 个人踩过的坑与应试技巧最后分享几个我在实际准备和带人过程中反复遇到的经验希望你绕着走第一个坑是审题粗心。笔试题目里经常有一句话决定整个题目方向比如“完成订单”的“完成”二字、“用户数”是要去重还是不去重。我在模拟考中见过太多代码和SQL写得完全正确但白费功夫的case就是因为在审题上抢了十几秒。第二个坑是死磕难题浪费时间。笔试的题量决定了你不可能每道题都完美解答。我的策略是碰到一道题三分钟内没有明确思路立刻跳过做下一题把所有题目第一遍扫完再回来啃难题。这样至少保证基础题的分都拿到而不是在某一道20分的题上耗到最后连送分题都没时间写。第三个坑是不写注释和代码规范。笔试系统虽然机器判分但部分题目面试官会调出你的代码回看。代码里变量命名随意、逻辑分支混乱哪怕跑通了也会让面试官对你的代码素养打折扣。写代码时养成写注释、用有意义的变量名的习惯这属于“隐形加分项”但很重要。第四个坑是忽略本地自测。很多笔试系统判分严苛要求代码通过全部测试用例才算满分。我建议在提交前自己设计几个边界测试用例跑一遍比如空字符串、数组只有一个元素、全重复字符等。别小看这个步骤能帮你躲掉大量线上判分的扣分点。第五个坑是心态上的“我不会”。我见过太多考生一看到业务场景题就懵觉得没标准答案就不敢写。实际上这种题只要你按照框架写出一套有理有据的分析逻辑哪怕不是最优解也能拿大部分分数。你可以写得糙一点但不能空白交卷。考场上的“完成比完美重要”这句话在业务题面前体现得淋漓尽致。回顾这场滴滴2018校园招聘网申笔试它的考察范围和老套的“八股”考试不一样所有知识点都能在未来实际工作中找到对应场景。数据挖掘工程师的笔试从来不是为了为难你而是用最快的速度找到“最能直接上手解决问题”的人。理解了这一点你再去复习的每一个公式、每一道算法题都不会觉得是在做无用功。我个人的体会是笔试是最公平的一关简历上的水分在代码面前无所遁形但只要基本功够扎实跨专业、没实习经历的人照样能高分通过。把上面这些考点按优先级消化掉按节奏练习你能拿下的远不止这一场笔试。
返回列表