淘天数据岗笔试全解析:题型分布、SQL窗口函数与业务案例备考指南

淘天数据岗笔试全解析:题型分布、SQL窗口函数与业务案例备考指南 2024年春招那会儿我身边不少朋友都在投数据岗淘天集团的笔试是绕不开的一道坎。我也有幸完整走了一遍流程从收到笔试通知到做完题中间踩了不少坑也总结出一些门道。这篇就把我对淘天数据岗笔试的观察、拆解和备考思路完整写出来给后面要参加类似笔试的同学做个参考。先给个结论这场笔试的难度不在于题目本身有多深而在于覆盖面极广、限时压力大、业务场景讲究细节。SQL、Python、统计概率、机器学习、业务分析全都要碰而且每一块都能拉开差距。很多人挂在SQL或者业务案例上不是因为不会而是因为不知道它考察的粒度在哪里。1. 淘天数据岗笔试题型分布先搞清楚考什么再备考1.1 笔试的基本盘题型、时长、环境淘天集团2024年春招数据岗笔试是线上限时完成的整体看是综合卷不是单一科目。安排上一般给一个固定时间窗口比如两个小时左右题型涵盖了SQL编程、Python编程、数据结构和算法、统计学与概率论、机器学习基础再加上一两道业务场景案例分析题。这个组合和大多数互联网大厂的数据岗笔试高度一致可以说它考察的不是你某个单一技能而是整个数据岗位的基础素养。线上笔试环境下比较关键的限制有两个。一是监考机制多数平台会要求开摄像头甚至录屏所以考前别光顾着复习先把安静的房间、稳定的网络、合规的考试环境准备好二是题目顺序和切换不同平台规则不一样有些能自由切换题目反复修改有些则只能顺着做做过的题不能再回头改。这一点直接影响到时间分配策略下面专门展开讲。1.2 从岗位JD反推考察重点数据岗这个名头下其实细分了好几种方向笔试侧重点差异很大。投递前先看清岗位名称和JD描述这是最实用的一步。数据开发方向偏数据库和大数据组件。笔试里SQL占比会很大可能还会涉及Hive、Spark、数据仓库建模相关知识。数据分析方向偏业务指标、分析思维、统计应用。SQL和业务案例是重头Python一般考数据清洗和简单建模。数据科学/算法方向偏机器学习、深度学习、数学基础。算法题和模型评估题占比更高业务案例也更贴近推荐、搜索、广告等场景。淘天是电商场景所以无论哪个方向业务题的背景基本都会落在交易、用户增长、流量转化、商品推荐这些领域。准备的时候多积累电商核心指标和常见分析框架很有用。针对这个标题我按常见情况梳理一个题型占比参考表具体题量每年可能微调但大方向一般不会变题型大致占比典型考察点SQL编程25%-30%窗口函数、多表关联、去重统计、时间序列Python编程与算法20%-25%pandas数据处理、数组/字符串/递归算法统计与概率10%-15%假设检验、期望、条件概率、置信区间机器学习基础10%-15%模型评估、过拟合、特征工程业务场景案例20%-25%指标异动诊断、用户分析、AB实验理解2. SQL机试看起来送分实际最拉分的环节2.1 高频考点窗口函数的三种套法SQL题在数据岗笔试里是最容易拿分也最容易被扣分的地方。说容易拿分是因为考点相对固定说容易被扣分是因为大多数人只会在牛客上写简单查询一旦涉及窗口函数就开始别扭。窗口函数是淘天这种偏业务的数据笔试绕不开的考点重点练三种套法。第一种是排名类典型场景是“按部门/商品类目分组取每个分组下销售额排名前N的商品”。用row_number()、rank()、dense_rank()核心区别在于并列名次的处理。笔试里如果题目没特别说明“取前三名”我一般默认用dense_rank()或rank()因为实际业务中并列是存在的row_number()会硬给一个先后顺序这在业务分析里往往是错的。-- 每个商品类目下销售额排名前3的商品 SELECT category_id, product_id, sales_amount FROM ( SELECT category_id, product_id, sales_amount, RANK() OVER(PARTITION BY category_id ORDER BY sales_amount DESC) AS rk FROM product_daily_sales WHERE dt 2024-03-15 ) t WHERE rk 3;第二种是前后差类典型场景是“计算用户相邻两笔订单的时间间隔”。这里用LAG()或LEAD()而不是自己join同一张表。很多人第一次会想到自连接但自连接会产生笛卡尔膨胀而且分组逻辑容易写错非常不划算。-- 用户每一笔订单与上一笔订单的时间间隔 SELECT user_id, order_time, LAG(order_time) OVER(PARTITION BY user_id ORDER BY order_time) AS prev_order_time, DATEDIFF(order_time, LAG(order_time) OVER(PARTITION BY user_id ORDER BY order_time)) AS day_gap FROM user_orders;第三种是累计值类典型场景是“计算每日累计销售额”。用SUM() OVER(ORDER BY dt)做累计求和比自连接高效得多。2.2 去重统计与区间重叠的经典陷阱去重统计是笔试里的一个经典陷阱。问题看起来简单比如“统计2024年3月有购买行为的用户数”但表里同一个用户可能有多笔订单直接COUNT(user_id)就会多算要用COUNT(DISTINCT user_id)。这个多数人知道但换一个问法就有人翻车“统计每个用户在3月首次购买日期。”这种要的是“每用户第一条记录”需要按用户分组取最早时间更规范的做法是先排序取第一条或者用MIN(order_date)配套分组。更隐蔽的是区间重叠类题目。比如给定一个用户活跃记录表每行是一个活跃区间start_date, end_date要统计每个用户的累计活跃天数难点在于区间之间可能交叉重叠直接SUM(end_date - start_date 1)会把重叠部分重复计算。处理思路需要先做区间合并再累加。笔试里这类题即使没时间写完整SQL也要把思路写在注释里阅卷人会看重分析逻辑。2.3 我在SQL题上踩过的性能坑笔试不一定真的要求你跑出结果来但不少平台是半机试半算法验证的。我自己的体感是阅卷过程会关注你的写法是否体现性能意识这恰恰是很多人忽略的。比如多表关联时能不能先把单表条件筛选掉再join明显影响数据量级再比如能用窗口函数解决的就不要去写复杂子查询嵌套。还有一个小细节日期条件能写成范围区间就尽量不要对字段做函数转换否则索引会失效。虽然这是偏向实际生产环境的经验但在笔试里体现出这种习惯会让阅卷人觉得你有实战经验不是只会背语法。提示笔试中如果时间紧张SQL题应该优先保证窗口函数题和多表join题的完整度这两类占比最大且答案确定性高性价比最高。3. Python与算法题pandas三板斧和数据结构基本功3.1 用pandas做数据清洗的常用套路Python题分为两派一派是工具派直接给你一堆数据让你用pandas清洗、聚合、统计分析另一派是算法派考传统的数据结构题目。工具派要熟悉三板斧读取与合并、分组聚合、缺失值处理。笔试环境一般允许用pandas所以不用自己从零造轮子但要写得快。读取和合并要注意参数merge时指定on、how不指定得话容易踩列名冲突的坑groupby后要用agg聚合一次把所有指标算完不要循环分组否则代码量大且容易错缺失值处理要先判断为什么缺失是丢弃还是填0还是向前向后填充得结合业务场景。# 数据清洗示例合并订单表和用户表统计每个用户的订单数和GMV import pandas as pd orders pd.read_csv(orders.csv) users pd.read_csv(users.csv) df orders.merge(users, onuser_id, howleft) df[order_date] pd.to_datetime(df[order_date]) # 统计每个用户的订单数和GMV result df.groupby(user_id).agg( order_count(order_id, count), total_gmv(amount, sum) ).reset_index() # 处理缺失值 result result.fillna({total_gmv: 0})3.2 笔试中偏爱考的算法类型算法派的题不会太偏主要集中在数组、字符串处理、排序、递归和简单的动态规划。为什么数据岗笔试要考算法因为实际业务中海量数据的处理内核就是数据结构与算法比如用户ID的索引、排序、TopN问题、时间序列的聚合等。结合淘天的电商背景有几类题很容易出现TopN问题比如求点击量最高的前K个商品。考点不在于多么复杂的算法而在于是否想到用堆或者排序以及能否给出复杂度分析。字符串处理比如日志解析、JSON字段提取考察基础字符串操作和正则表达式。时间序列处理比如给定用户操作日志找出连续登录N天的用户。这题既要写Python或SQL本质是相邻日期差的计算。数组技巧双指针、滑动窗口这类题在电商场景可以包装成“找出最长的连续活跃子序列”。备考策略上建议把力扣或牛客上的简单、中等难度题目刷一遍优先熟悉数组、哈希表、双指针、排序这几类不用死磕难题因为数据岗笔试对算法深度的要求明显低于开发岗。4. 统计概率与机器学习概念题别把A/B测试答成常识4.1 假设检验与样本量计算不只是背公式统计概率题有时候会以选择题出现有时候会融入业务案例但最经典的独立考点就是假设检验。很多候选人能说出来p值小于0.05就拒绝原假设但换个问法就会卡住p值是什么意思第一类错误和第二类错误分别是什么在电商AB实验里犯第一类错误和第二类错误的业务代价分别是什么电商场景里第一类错误是把没用的改版误判为有用白白上线浪费资源第二类错误是没发现真正有效的改版错过增长机会。这个问题没有标准公式答案但答得好的候选人会把业务代价和统计定义结合起来讲这才是数据岗想要的分析思维。样本量计算也是常见考点。两组独立样本的比例检验每组需要的最小样本量大致由这几个因素决定基线转化率、最小可检测效果MDE、显著性水平、统计功效。公式本身可以记但更重要的是理解为什么样本量跟MDE平方成反比——想检测出越小的效果需要的样本量就越大这就是为什么AB实验里改版幅度小的时候往往要跑很久才能有结论。这里给一个笔试中常用的简化版本帮助理解而不是死记n (Z_alpha/2 Z_beta)^2 * (p1*(1-p1) p2*(1-p2)) / (p1 - p2)^2如果笔试里考到这个公式能完整写出来是加分项但即便写不出来也要能说清楚决定样本量的几个关键因素和它们的变化关系这比背公式更体现理解深度。4.2 机器学习题更看重业务落地能力机器学习部分不会考现场推导复杂模型更多是概念和判断。常考的点包括分类模型评估精确率、召回率、F1、AUC的含义和适用场景。特别是不平衡样本下为什么准确率不是好指标。电商场景中点击率预测这类任务正样本很少这时候更看重召回率或AUC。过拟合的识别和应对训练集效果很好但测试集很差怎么诊断增加数据、正则化、交叉验证、特征选择、集成学习这些常规手段要能说出来还要能解释为什么有效。特征工程连续特征离散化、类别特征编码、缺失值填充会给一个小场景让你判断某几个特征怎么处理。这些题不考源码但会考察你怎么把一个算法选择一个落地到业务里。比如会问“预测用户未来7天是否购买正样本大概只有3%适合用什么模型怎么评估”有经验的候选人会先指出类别不平衡再建议用AUC而不是准确率同时说明离线评估和在线AB实验之间的差异。每一步都有因果链条而不是背一堆模型名。5. 业务场景案例分析电商数据岗笔试的重头戏5.1 一个典型的GMV下降诊断题业务案例题是淘天这类电商大厂数据岗笔试最特色的一环也是最难临时抱佛脚的部分。常见出题方式给一个业务场景让你写分析思路或者给一张简化的日报表让你指出可能的问题。最经典的模板是“某个核心指标突然下跌怎么诊断”。比如2024年3月某天平台GMV环比下降10%作为数据岗位的同学你如何分析很多人拿到题直接开始拆公式GMV 用户数 × 转化率 × 客单价。这样拆没问题但拆得太粗得继续往下用户数先区分为新用户和老用户老用户里再看是活跃用户数下降还是人均购买频次下降转化率再分成访问到点击、点击到加购、加购到支付每一层都想一下数据有没有断点客单价再判断是降价导致的还是高价商品销售占比下降导致的。这种层层下钻才是笔试阅卷人想看到的。分析路径可以按下面几步来展开先界定下跌是真实的还是数据口径变化导致的。比如统计口径调整、埋点缺失、渠道归因改变都会造成数字下跌先排除技术原因。拆解核心指标GMV拆成流量、转化率、客单价三个杠杆确定哪个杠杆变化最大。维度下钻按渠道、商品类目、用户分层新客/老客、活跃度分层、省份等维度进一步定位。内外因结合外部看竞品动作、大促节奏、节假日、舆情内部看供给变化、价格策略、营销投放、系统故障。落地结论给出可执行建议而不是只指出数据在哪跌了。这个框架不是淘天独有基本是所有电商数据岗都会用到的通用思路值得重点准备。5.2 用户分层与生命周期分析这类题怎么答除了指标异动用户分析也是高频考点。比如“如何定义高价值用户”“如何判断用户是否即将流失以及怎么通过数据提前干预”。高价值用户通常会用到RFM模型即最近一次购买时间Recency、购买频率Frequency、购买金额Monetary。笔试中如果提到RFM一定要说明每个维度的业务含义和划分思路尽量别只说缩写。同时要能进一步解释RFM的阈值怎么确定是分位数划分还是结合业务经验每个分数段对应的运营动作是什么。能说出这些说明真懂业务而不只是背了个模型名。用户流失分析则要关注两个时间点定义流失的周期以及用户流失前的行为特征。比如一个原本每周买一次的用户连续30天没有访问就可以视为强流失预警。数据岗要做的不是只给一个定义而是提供一套预警机制哪类用户、在什么行为特征下、需要触发什么干预动作。同期群分析也是推荐准备的点。电商场景里经常要看不同月份新增用户的留存曲线差异用于评价拉新渠道质量和产品改版效果。笔试题如果问到留存提升用同期群分析来回答会瞬间拉开你跟其他候选人的差距。6. 时间分配与考后复盘从笔试到面试的真实衔接6.1 不同基础候选人的时间分配策略笔试时间有限不可能所有题都做到完美。我的策略是分三遍做题。第一遍快速扫全卷花两到三分钟判断每道题的类型和难度在心里定优先级。优先做熟悉且有把握拿满分的题比如常规SQL、简单Python数据处理、统计概念选择。每题标个预计耗时心里有数。第二遍做中等难度题主要是窗口函数SQL、算法中等题、机器学习应用分析题。这些题分值高但需要思考时间是区分度最大的区域。第三遍回到一开始没做的难题主要是一时没思路的算法题或综合业务大题。时间不够时只写思路框架和关键公式不要留白。阅卷时看到你写了分析步骤至少能拿到步骤分。如果按基础能力不同来划分有些人的策略可以微调SQL很熟的人可以把SQL题优先做完把得分点抓牢算法能力强的人先花时间在算法题上拿满分数业务分析经验丰富的人则可以先做业务案例分析确保这类题有完整回答。我个人的习惯是先做SQL因为这类题确定性强做对了就是做对了能给后面稳住心态。6.2 考后一定要做的三件事笔试结束不代表万事大吉对后续面试最有价值的工作才刚刚开始。我考完淘天这场笔试后第一时间做了三件事效果非常好。第一件趁记忆还热着把题目完整回忆一遍。包括题型、考点、具体问法能用笔记记多少是多少。很多平台笔试结束后不允许截图但自己凭记忆整理完全没问题。事实证明面试时被问到笔试中的题目非常常见你能清晰复述题目并讲出当时的分析思路会让面试官高看你一眼。第二件把没做出来或做错的题重新做一遍。笔试之后搜题、翻资料、问前辈都来得及。关键不是对答案而是分析自己当时卡在哪一步。是SQL语法不熟是业务场景没见过还是时间分配导致来不及做这个根因分析一定要做因为它直接决定你接下来面试备考的侧重点。第三件针对业务案例题把答案重新整理成结构化的分析框架。笔试时往往时间紧写得很潦草。考后静下心来把每个业务题都补充成一个完整的分析框架以后面试里遇到类似场景就能直接调用。我自己整理了几个常用框架比如“指标异动三步法”“用户分层的RFM实践”“留存分析的同期群方法”这几个框架在后来的面试中几乎全都用上了。6.3 备考资料与日常积累建议如果你还有一两周时间才笔试我认为最值得投入的方向是SQL的窗口函数、pandas数据清洗和业务分析框架。不需要面面俱到重点攻克确定性高、频率高的考点性价比更高。SQL方面推荐把窗口函数的常见场景题过一遍包括分组TopN、前后值比较、累计计算、移动平均以及连续N天登录这类经典变体。这些题目在牛客和LeetCode上都能找到而且刷完以后能覆盖大部分大厂数据岗笔试的SQL部分。Python方面重点练习用pandas做数据清洗和统计不要只停留在语法层面。可以自己找一份电商订单数据自己练习算GMV、复购率、用户留存这些核心指标写不出来的地方再查文档。业务分析方面多看看电商行业的数据分析案例关注大促复盘、用户增长、货品分析这些常见场景。日常练习时可以自问自答如果我现在是某个平台的数据分析师GMV涨了20%或跌了20%我该怎么判断归因、怎么给建议这种思维训练比临时背框架要有效得多。最后一点心得笔试只是整个招聘流程的第一关它的价值不仅在于筛人更在于帮你预热数据岗的思维模式。哪怕进不了面试把SQL窗口函数、业务分析框架这些都练扎实了后面的求职路也会顺畅不少。别把笔试当成任务去应付把它当一次系统性的技能体检这样你的收获会比一纸通过通知大得多。