
每年一到校招季总有人拿着各个大厂的数据分析笔试题来问我该怎么准备。前两天翻移动硬盘正好翻到一份我之前整理的京东2019校招数据分析工程师笔试复盘笔记干脆把核心题型和解题思路重新梳理一遍写成这篇东西。虽然不是当年的完整原卷但题型方向、考点密度和真实笔试的贴合度很高对现在准备大厂数据分析岗尤其是偏电商业务方向的同学依然有参考价值。我当时拿到这套题的第一感觉是它不考死记硬背考的是你在有限时间内能不能把统计知识、SQL逻辑和业务常识串起来用。整张卷子在算法题上不会刻意刁难你难度更接近“业务分析师初级算法工程师”的交叉地带。适合正在备战秋招、准备转行数据分析、或者想系统查漏补缺的读者。接下来我会按考点模块拆解把每类题背后的考察意图、解题套路、易错点全部摊开讲清楚。1. 笔试整体格局与备考策略1.1 京东这套题的模块构成与考察重点京东2019校招数据分析工程师的笔试题型大概分四块选择题含统计概率、业务常识、SQL编程题、案例分析题、开放论述题。和纯算法岗的笔试题相比它对机器学习模型的推导要求不高但对“业务指标理解”和“数据敏感度”的要求明显更高。毕竟京东的核心场景是零售物流分析师每天面对的是GMV波动、用户留存、库存周转这类问题笔试题也必然围绕这些来出。从分布上看选择题里的概率统计是重头戏会占到将近一半SQL题一般给两张业务表订单表、用户表考察留存率、复购率、TopN这类高频业务口径案例分析题则给你一个业务场景比如“首页改版后转化率下降你怎么排查”。整体来看这套题实际上是在筛选两类能力一是扎实的数理基础二是把数据翻译成业务结论的能力。我当时复习的教训是千万不要只刷LeetCode式的纯算法题这套题更接近“业务分析笔试”很多SQL题都是在模拟真实的电商取数场景。备考时最好养成边读题边标注业务口径的习惯——用户是去重口径吗时间窗口是自然日还是滚动24小时这些细节在笔试里往往是区分度最高的地方。1.2 时间分配与做题顺序建议笔试总时长一般是120分钟左右题量不算小。我个人的建议是先做SQL编程题再做案例分析最后做选择题和开放题。原因很简单SQL题分值高、对错明确先把能稳定拿的分攥在手里案例分析题需要思路清晰趁头脑清醒时写更有优势选择题虽然量大但很多是概念题用碎片化时间处理即可。具体分配上SQL题控制在35-40分钟案例分析30分钟选择题25分钟开放题留15分钟剩10分钟检查。碰到卡壳超过5分钟的题立马跳过尤其是选择题里的计算题很可能思路卡在一个小细节上跳过去做后面的题反而能放松心态。当年我旁边的一位同学就在一道贝叶斯选择题上较劲了十几分钟最后SQL题没写完非常亏。1.3 这套题对当下备考的参考价值有同学可能觉得2019年的题太旧了但我的判断是数据分析岗校招笔试的底层考点极其稳定SQL窗口函数、留存率计算、概率分布、A/B测试显著性判断这些内容是年年考、换汤不换药。这几年明显的变化是Python的考察比重有所上升Shell和Hive的实操细节在笔试中很少出现更多放在面试环节考察。换句话说把2019年的这套题吃透你得到的不是一套“过时题库”而是大厂数据分析笔试的考点地图。近几年我在帮朋友做模拟面试时也发现面试官手里的题库依然绕不开这些核心知识点只是场景包装换得更复杂了。2. 概率统计题表面考公式实际考业务直觉2.1 高频考点伯努利分布、期望与方差京东这套题的选择题里有一类非常典型的送分题也是拉分题——给你一个业务场景让你计算期望、方差或者概率。比如某促销活动中每位用户点击广告后下单的概率为0.2且每次点击相互独立。如果一位用户点击了5次广告求其下单次数的期望和方差。这题考的是伯努利分布的基本性质n次独立重复试验中成功次数X服从二项分布B(n, p)期望E(X)np方差Var(X)np(1-p)。代入n5、p0.2期望是1方差是0.8。这类题看着简单但有个坑是不要把“下单次数”和“是否下单”混为一谈。如果题目问的是“5次点击中至少下单一次的概率”那就是1-(1-p)^5和期望完全是两回事。建议每道题都先把随机变量定义写清楚再套公式能有效避免粗心丢分。面试官出这类题的潜台词是你在做AB测试分析时能不能快速判断一个转化率指标的波动是随机噪声还是真实差异。所以备考时不要死记公式而是结合业务场景理解每个参数的直觉含义——p是转化率n是样本量方差决定了置信区间的宽窄。2.2 贝叶斯定理笔试中的“钉子户”贝叶斯定理几乎是所有大厂数据分析笔试必考的内容京东这套题也不例外。典型题目是某商品的好评率为90%。在好评中95%的买家会复购在差评中仅20%的买家会复购。现随机抽取一位买家已知其产生了复购行为请问该买家给出好评的概率是多少设A买家给好评B买家复购。已知P(A)0.9P(B|A)0.95P(B|A^c)0.2。根据全概率公式P(B)0.9×0.950.1×0.20.8550.020.875。贝叶斯公式得到P(A|B)P(B|A)×P(A)/P(B)0.855/0.875≈0.977。这道题的关键在于识别“哪个是条件哪个是结果”。题目问的是“已知复购求好评的概率”所以复购是因式分解后的观测值好评是待推断的隐藏状态。贝叶斯公式的本质就是“用结果反推原因”想明白这一层题目怎么变都不怕。我整理过不少年份的笔试题发现贝叶斯定理几乎都是以“用户行为”为壳来包装的比如“已知用户点击了推荐位求其来自某个分群的概率”。所以备考时建议把“症状-疾病”或“行为-身份”这类经典框架自己推导一遍熟练到不需要翻公式就能写出分母的展开式。2.3 条件概率与独立性的“文字陷阱”还有一类概率题专门考条件概率和独立性的概念辨析。比如事件A和事件B相互独立且P(A)0.3P(B)0.4求P(A∪B)。这题直接用公式P(A∪B)P(A)P(B)-P(A∩B)0.30.4-0.120.58。难点不在计算而在于很多同学会忘记独立条件下的交集概率是相乘。另一种常见变体是给出条件概率要求判断独立性是否成立。这里我给自己定的规则是独立性必须验证P(A∩B)P(A)P(B)而不是靠感觉判断“两个事件看起来没关系”。尤其当题干中出现“互斥”“独立”“不相关”这些词时一定要回到定义上去因为这些词在概率论中含义完全不同混用就很容易掉进陷阱。2.4 概率统计题的备考心法总结一下概率统计这部分的备考思路先搞定随机变量、期望、方差、常见分布二项、泊松、正态的基本计算再做贝叶斯相关的专项练习最后训练自己把文字题翻译成数学符号的能力。商场抽奖、优惠券核销、用户点击行为都是这些知识点的天然载体。我复习的时候喜欢自己出题比如把一道卖鞋的库存题改写成“电商大促时某SKU的日销量服从均值为200的泊松分布求日销量超过250的概率”然后尝试用正态近似去解。这样练过几道之后再看笔试题会有一种“见面熟”的感觉完全不慌。3. SQL题电商场景里的留存、复购与TopN都是基本功3.1 经典留存率计算题SQL编程题是京东数据分析笔试的大头也是最贴近日常工作的部分。我先放一道我印象深刻的留存题给定订单表ordersorder_id, user_id, order_date和用户表usersuser_id, reg_date请计算2019年1月注册用户的次日留存率、3日留存率和7日留存率。这道题考察的是“如何用SQL计算留存率”核心思路分成三步先找出2019年1月注册的用户集合然后关联订单表判断用户在注册后第N天是否有下单最后按留存天数算比例。参考SQLHive/Spark SQL风格SELECT COUNT(DISTINCT a.user_id) AS reg_users, COUNT(DISTINCT IF(DATEDIFF(b.order_date, a.reg_date) 1, a.user_id, NULL)) AS day1_users, COUNT(DISTINCT IF(DATEDIFF(b.order_date, a.reg_date) 3, a.user_id, NULL)) AS day3_users, COUNT(DISTINCT IF(DATEDIFF(b.order_date, a.reg_date) 7, a.user_id, NULL)) AS day7_users FROM users a LEFT JOIN orders b ON a.user_id b.user_id AND b.order_date BETWEEN DATE_ADD(a.reg_date, 1) AND DATE_ADD(a.reg_date, 7) WHERE a.reg_date BETWEEN 2019-01-01 AND 2019-01-31计算留存时留存率的分母是注册用户数分子是第N天有回访行为的用户数。这里的核心技巧是LEFT JOIN要加时间条件而不是先JOIN再在WHERE里过滤订单日期否则会把未下单的用户过滤掉导致留存率虚高。在数据量大的场景下COUNT(DISTINCT IF(...))的效率不如先用子查询去重再汇总但笔试时这样写最能体现思路清晰。如果不确定DATEDIFF在不同SQL引擎里的具体含义可以先注明“DATEDIFF按自然日计算”免得面试官误解。3.2 复购率与购买频次分布复购率的常见问法是请计算2019年1月有过下单的用户中在2019年2月再次下单的用户占比。这类题需要理解“复购率”和“留存率”的区别留存率看的是“同一批用户在第N天是否回来”复购率看的是“上期用户中在下一个周期是否又买了”。SQL写法上先找出1月下单用户再关联2月订单最后算比例。WITH jan_users AS ( SELECT DISTINCT user_id FROM orders WHERE order_date BETWEEN 2019-01-01 AND 2019-01-31 ) SELECT COUNT(DISTINCT j.user_id) AS jan_users, COUNT(DISTINCT CASE WHEN f.order_date IS NOT NULL THEN j.user_id END) AS feb_buyers, COUNT(DISTINCT CASE WHEN f.order_date IS NOT NULL THEN j.user_id END) / COUNT(DISTINCT j.user_id) AS repurchase_rate FROM jan_users j LEFT JOIN orders f ON j.user_id f.user_id AND f.order_date BETWEEN 2019-02-01 AND 2019-02-28还有一种变体是计算“每个用户的购买频次分布”比如“购买1次、2次、3次以上的用户各占多少”本质上是先按user_id分组统计订单次数再对次数做分布。这类题在笔试里考察的是GROUP BY和子查询的熟练度不难但需要写得很干净。3.3 TopN问题窗口函数的用武之地京东的SQL题中TopN问题很常见。比如统计2019年每个商品品类下销量排名前3的商品。这道题最优雅的解法是用窗口函数ROW_NUMBER()或DENSE_RANK()SELECT category_id, product_id, sale_cnt FROM ( SELECT category_id, product_id, sale_cnt, ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY sale_cnt DESC) AS rn FROM ( SELECT product_id, category_id, SUM(order_amt) AS sale_cnt FROM orders WHERE order_date BETWEEN 2019-01-01 AND 2019-12-31 GROUP BY product_id, category_id ) t1 ) t2 WHERE rn 3用窗口函数时注意区分ROW_NUMBER()和DENSE_RANK()如果销量并列第一ROW_NUMBER()会随机给一个排名而DENSE_RANK()会给同样的排名。业务上通常期望“并列第一都算第一名”所以分析场景下用DENSE_RANK()更稳妥。笔试时如果没有特别说明最好在注释里写清楚自己的选择。3.4 SQL题最容易踩的三个坑SQL题丢分往往丢在细节上不是不会写而是写得不严谨。我总结了三个高频坑JOIN条件不完整左表用户、右表订单时如果JOIN条件只写了user_id相等没有限定订单日期范围那么匹配出来的记录会膨胀后续的COUNT(DISTINCT user_id)可能问题不大但涉及金额聚合就会出错。DISTINCT的位置放错统计用户数时一定要COUNT(DISTINCT user_id)不能COUNT(user_id)否则一个用户下了多单会被重复计数。时间字段的格式陷阱如果订单日期是DATETIME类型直接和字符串2019-01-01比较可能会漏掉当天0点后的数据。稳妥的做法是用DATE()函数包裹时间字段或者用和的边界写法。备考SQL时我自己的方法是把留存、复购、TopN、连续登录这几类经典题型各写五遍直到不用想就能写出正确结构。因为笔试时间紧这类题必须形成肌肉记忆。另外搞清楚窗口函数和GROUP BY的各自适用场景能帮你省下大量思考时间——窗口函数适合“分组内排名”“分组内占比”这类需求GROUP BY适合“按组聚合后只保留一行结果”的需求。4. 机器学习与业务评估题不考推导考判断4.1 A/B测试显著性判断京东笔试题对机器学习的考察不会到手推神经网络的深度但A/B测试几乎是必考项。典型题目是某活动页改版后实验组点击率从8%提升到8.4%样本量各为10000。请问这个提升是否显著这类题考察的是两比例Z检验。我们先算合并比例p(0.08×100000.084×10000)/200000.082标准误SEsqrt(p(1-p)(1/n11/n2))代入n1n210000SE约等于0.00387。Z统计量(0.084-0.08)/0.00387≈1.03远小于1.96所以不能拒绝原假设也就是说提升不显著。这道题的陷阱在于很多人看到“8%提升到8.4%”就觉得有效却忽略了绝对提升只有0.4个百分点在样本量只有一万的情况下波动区间其实很大。A/B测试的核心不是看绝对值涨没涨而是看置信区间是否完全排除零。笔试中建议把原假设、Z值、p值、结论四个步骤写完整让面试官看到你的推断思路是清晰严谨的。一个实战经验是我在做业务分析时发现很多运营同学喜欢频繁看实验数据恨不得每两小时就刷新一次显著性。实际上样本量不够时显著性指标会剧烈震荡提前下结论很容易误判。所以笔试里考A/B测试本质上也是考察你懂不懂“什么时候才能看数据”这一业务纪律。4.2 过拟合、交叉验证与特征选择除了A/B测试选择题里还会出现不少机器学习基础概念题。比如下列哪种方法可以缓解过拟合 A. 增加训练数据量 B. 增大模型复杂度 C. 减少正则化参数 D. 增加特征数量答案显然是A。这类题不难但BD两个选项很有迷惑性——很多人觉得模型复杂了就能拟合更多模式殊不知这正是过拟合的根源。备考时把“偏差-方差分解”“正则化L1/L2”“交叉验证”“特征选择过滤式、包裹式、嵌入式”这些概念过一遍基本就能覆盖这类选择题。京东这套题有个特点它更喜欢把机器学习概念放进电商场景里考察。比如“训练一个预测用户是否流失的模型正负样本比例严重不平衡应该怎么办”这就是在考你对采样方法上采样、下采样、评估指标精确率、召回率、F1、AUC的理解而不是让你写模型代码。我备考时的经验是复习机器学习时每学一个概念就强行问自己一句“这个在电商场景里能用来解决什么问题”这样到了笔试现场任何场景化包装都不容易把你绕晕。4.3 评估指标的选择准确率、精确率、召回率与F1关于评估指标有一道高频题在用户流失预警模型中正样本是流失用户。如果模型预测的召回率是80%精确率是60%请问F1值是多少F12×Precision×Recall/(PrecisionRecall)2×0.6×0.8/(0.60.8)≈0.686。这道题其实在考两个点一是知不知道F1的公式二是能不能理解“正样本”的定义。在业务上如果我们更关心“别漏掉有流失风险的用户”那么召回率就比精确率重要如果我们更关心“电话销售别打给不会流失的用户”那精确率更关键。面对这种题我的建议是不要只答计算过程把业务背景下的取舍逻辑也写上去。笔试阅卷者通常会更欣赏“F10.686考虑到流失预警场景我们更关注召回率”这种结合业务的回答。数据分析岗和纯算法岗的区别就在这里——算法岗只需要算对分析岗还要说出“这个指标对业务意味着什么”。4.4 特征工程与数据预处理特征工程在笔试题中一般是选择题或简答题形式例如在用户购买预测模型中属于特征工程操作的是 A. 对缺失值填充均值 B. 将用户年龄离散化为分段 C. 用PCA降维 D. 以上都是答案选D。这道题考的是对特征工程边界的理解——缺失值处理、离散化、降维都属于特征工程范畴。我当年备考时在这类题上吃过亏总觉得PCA是“降维算法”不算特征工程。后来想明白了凡是“把原始数据变成模型可用特征”的操作广义上都算特征工程。这类题更深层的业务含义是数据分析师在建模前必须理解业务字段而不是把数据直接丢给模型。像“用户年龄离散化”这种操作本质上是在引入业务经验——比如“18岁以下”“18-30岁”“30-50岁”“50岁以上”的消费习惯有明显差异。笔试考这个其实是希望你具备“从业务出发做特征”的意识。5. 开放题与应用题从“会算”到“会分析”5.1 指标体系设计留存、转化、ARPU京东笔试的案例分析题通常会给你一个具体的业务目标让你设计指标体系。比如短视频产品上线“直播带货”功能请设计一套指标体系评估该功能上线后的效果。这道题没有标准答案但高分答案通常具备清晰的层次结构。我一般会从“用户-行为-交易”三个层面来拆解用户层面直播间观看人数、观看时长、互动人数、关注转化率行为层面点击商品链接次数、加入购物车次数、分享直播间次数交易层面直播GMV、下单转化率、客单价、退款率。写这类答案时关键是把每个指标和业务动作关联起来。比如“互动人数”反映的是直播间氛围“加入购物车次数”反映的是种草能力不是随便堆指标就完事。我自己的经验是先画一条“曝光→观看→互动→点击→下单→复购”的漏斗然后每个环节落一到两个核心指标这样答案既有结构又有逻辑。5.2 假说驱动的分析框架转化率下降怎么排查另一类常见的开放题是某商品详情页的购买转化率最近一周下降了10%请给出你的排查思路。这道题考察的是“数据分析思维”而不是具体的计算。高分思路是先确认数据的真实性再拆维度然后提出假说并验证。数据校验是不是埋点漏了是不是统计数据延迟维度拆解下降是发生在哪个品类、哪个渠道、哪个用户群内部原因是不是页面改版了是不是价格调整了是不是库存不足外部原因是不是竞品在促销是不是差评增加是不是季节性波动回答时不要只给一堆“可能的原因”而是把它们组织成“先排除虚假波动再聚焦维度最后验证具体假说”的分析路径。我记得自己当时写了“先看是不是整体问题还是部分渠道问题如果是部分渠道问题再看该渠道的流量结构是否发生了变化”面试官在后续追问时明显对这个思路比较认可。5.3 商业敏感度GMV下降与促销节奏京东笔试题里还有一种贴近业务的数学应用题比如某品类6月GMV同比下降5%但单量同比上升8%请分析可能的原因。这种题考的是“能不能一眼看穿指标之间的业务关系”。GMV单量×客单价。单量上升8%GMV下降5%那么客单价一定下降了约12%(1-5%)/(18%)-1≈-12%。业务上可能的解释是低价商品占比提升、促销力度加大、用户结构下沉、新用户占比高等。这种在业务场景里做“指标拆解”的能力比单纯算数学题难得多也是拉开差距的地方。我备考时的习惯是每看到一个业务指标就条件反射式地想“它的分子分母是什么”“它受哪些输入指标影响”“这些输入指标之间有什么勾稽关系”。这种训练量积累到一定程度开放题就能做到快速找到切入角度。5.4 开放题的答题框架建议面对开放题最重要的是结构化表达。我常用的框架是目标定义先明确核心目标是什么用什么指标衡量维度拆解把核心指标按某个逻辑拆成可分析的子指标假说排序列出可能原因按照“影响范围大、发生概率高”排序验证方案说明用哪些数据、哪种方法来验证每个假说。这套框架不仅能用在笔试题里实际工作中做专题分析也是一样的套路。面试官要的从来不是“唯一正确答案”而是你有没有一套稳定的分析思维方式。如果你的答案能让人感觉到“就算换一个业务场景这个方法还能复用”那拿高分的概率就很大。6. 校招笔试的常见错误与避坑指南6.1 时间管理失控笔试最大的坑不是题不会做而是时间不够用。我见过太多人在选择题上死磕一道概率计算题导致后面的SQL题和案例题草草收尾。数据分析笔试的题量通常偏大而且很多选择题都需要动笔算不能按“一题一分钟”来预估时间。建议拿到卷子后先快速浏览一遍标记出“确定能做”和“可能需要想一下”的题优先保证前者全部拿分。一个可操作的方法是每做完一大题就记下当前用时如果某题超过预期时间一倍还没思路立刻跳过。答题系统的草稿纸上写清楚“待回看”的题号最后统一处理。很多在线笔试系统不支持返回修改更要养成“先做会做的”这一习惯。6.2 业务口径理解偏差“用户数”是按设备去重还是按账号去重“下单用户”是包含取消订单还是只统计有效订单“7日留存”是自然周还是滑动窗口这些口径问题在笔试题里经常成为“隐含前提”稍不注意整道题的理解就跑偏了。做题时遇到任何可能产生歧义的指标定义先按行业惯例做合理假设并且大大方方地把假设写出来。这里我举个例子2019年这套题里有一道关于“复购率”的选择题题目没明说统计周期默认就是“月度复购”。但如果你没意识到这个默认口径直接按“年度复购”去算结果对不上选项就会很懵。所以备考时就要养成“先定义口径再动笔”的习惯。6.3 只刷题不总结刷题效果不好的原因往往是想当然地“以为自己会了”。我备考时给自己立了一个规矩每道错题都写一句“错误原因”和一句“正确思路”不追求刷题数量但要求自己做过的题不会再错第二次。这个习惯收益很大——尤其像SQL题很多错误是结构性的比如忘记去重、JOIN条件缺时间范围总结几次后就能形成条件反射。笔试前的最后三天不建议再新题海战术而是翻看错题本把SQL的经典模板、概率统计的核心公式、A/B测试的检验流程各自过一遍。看到题目马上能想到对应的解法框架这就是最佳考前状态。6.4 常见问题速查表问题类型典型表现解决方案概率题设错事件把“至少一次”和“期望次数”混淆先写出随机变量的定义再套公式SQL去重遗漏COUNT(user_id) 没有DISTINCT聚合前明确是“用户级”还是“订单级”分析JOIN条件不严LEFT JOIN后WHERE里过滤右表把右表的过滤条件放在JOIN条件里A/B测试结论冒进只看提升率不看显著性计算Z值或置信区间再下结论开放题没有结构想到什么写什么没有逻辑用“目标-拆解-假说-验证”框架回答时间分配失衡前面花太久后面没时间先做SQL和案例题再做选择题这张表可以说是我做数据分析笔试最核心的避坑清单。遇到任何题目时先对照这张表检查自己是否踩坑基本能保证不犯低级错误。7. 一些关于备考与成长的题外话这套京东2019年的笔试题覆盖了数据分析师日常工作中绝大部分核心技能SQL取数、指标体系、实验设计、业务拆解。这些技能在真正的岗位上每天都在用而且远比笔试里的题目更复杂——真实的数据可能缺失严重业务方可能给不出清晰的定义时间线可能拖得很长。但反过来讲如果你能把笔试里的这些基础打得足够扎实到了工作中遇到复杂问题时你至少有稳定的分析框架可以依赖。我特别想强调的一点是数据分析笔试不是“刷完就忘”的应试游戏。留存率计算题背后的SQL写法可以直接迁移到日常的业务日报中A/B测试那道题的分析逻辑可以平移到产品每一次改版的评估里甚至那道短视频直播带货的指标体系设计题我后来在真实业务复盘时也反复用到了类似的拆解思路。这也是为什么我建议备考时多用业务场景去理解知识点而不是死记硬背。如果你正在准备校招或者打算转行数据分析可以试着把这套题当作一次“预演面试”限定两小时不对答案先完整做一遍再逐题复盘。这个过程会帮你真实暴露自己的薄弱环节——可能是SQL不熟可能是概率论生疏也可能是业务拆解没思路。找到短板之后再有针对性地补齐比盲目刷几百道题有效得多。我个人的体会是数据分析这个岗位最迷人的地方不在于会多少工具而在于能从一堆看似杂乱无章的表中发现驱动业务增长的关键线索。这套笔试题就像一张地图帮你标出那些“必备技能点”。把地图上的每一个点都踏实走一遍你收获的不仅是一份工作更是一种看待数据、看待业务的方式。希望大家都能在笔试里稳定发挥拿到心仪的offer。