公司动态

数据分析师笔试高频考点:SQL、概率统计与业务分析全复盘

📅 2026/8/30 8:12:55
数据分析师笔试高频考点:SQL、概率统计与业务分析全复盘
作为一名把几年时间都耗在数据分析这条路上的从业者看到京东2018秋招数据分析工程师笔试题这个标题第一反应不是去回忆当时的考题而是感慨那几年正好是互联网数据分析岗从会用Excel的运营向懂统计会写SQL的工程师转型的分水岭。京东这场笔试在当时算得上是风向标式的存在题型覆盖了SQL、概率统计、业务分析和基础算法难度不算变态但筛人效果极其明显。很多没准备的人挂在第一轮不是不会做而是完全没搞懂这场笔试在考什么。这篇文章不打算给你逐题报答案那些题目在牛客网和各类面经里都能翻到。我更想做的是把这套笔试题背后的考察逻辑、每类题型的解题套路、以及当时的考生包括我自己踩过的坑完整复盘一遍。如果你是准备电商、零售、供应链方向数据分析岗的求职者这篇文章能帮你省下大量盲目刷题的时间。1. 这场笔试的出题逻辑它到底在筛什么人先说一个很多人忽略的事实京东2018秋招数据分析工程师笔试名义上是考数据分析但它的筛选逻辑明显偏向于懂业务的工程师而不是会写报告的纯分析师。这个定位从题型分布就能看出来。1.1 题型分布与分值结构里藏着的用人偏好根据当年的考后复盘和牛客网上的讨论整套卷子大致包含三个部分第一部分是行测逻辑题大概占20%到25%的分值包括数字推理、图形推理和言语理解第二部分是专业题以SQL查询、概率统计、数据结构和少量机器学习基础为主占大头第三部分是开放性业务分析题通常是一到两道要求针对电商场景给出分析思路。这里面的信号很明显行测题是用来快速过滤没有基本逻辑能力的候选人专业题用来确认你是否具备干活的基本功业务题则是为了区分只会做题和真能落地的差别。很多人复习时只盯着SQL和概率题刷结果挂在行测上非常可惜。1.2 为什么这套题在当年有代表性2018年前后各大厂的数据分析笔试普遍处于摸索期。早几年的笔试题经常是纯粹的统计计算和Excel操作题但从那年开始SQL比重明显提升业务场景题开始围绕用户增长、GMV拆解、促销效果评估这类电商核心话题展开。京东这场笔试算是那个趋势的代表它要求你既会写代码取数又能理解数据背后的业务含义。举个例子卷子里有一类很典型的题给你一张订单表让你统计618大促期间新用户的首单转化率环比提升了多少。这类题表面考SQL实际上在考你对新用户首单转化率这些口径的理解——如果连业务指标口径都定义不清楚SQL写得再溜也白搭。提示如果你现在准备的是其他大厂的数据分析岗这套业务口径SQL取数统计基础的三角结构依然是主流只是难度和场景会换一换。1.3 时间分配是第一批淘汰的分水岭整套题大约90分钟题量不算小尤其是行测部分非常耗时间。我当时的策略是先花5分钟通读全卷把业务分析题放在最后写因为它的分值虽然高但思考成本也高行测里的数字推理如果30秒内没思路直接跳过不恋战SQL题留在中间段集中火力解决。这个策略帮我避开了最大的坑很多人在前面行测的逻辑题上死磕到后面发现SQL题根本来不及写。要知道SQL题的分值是实打实的而且答案相对唯一比行测那种找规律的主观题靠谱得多。2. SQL题是全场送分题还是送命题取决于你踩没踩过这些坑SQL在整套卷子里的地位怎么说都不为过。当年有好几道题直接就是给表结构、写查询语句考察点非常集中JOIN的底层逻辑、聚合函数与GROUP BY的配合、窗口函数的典型用法、以及子查询的性能意识。但真正让大批人翻车的不是语法而是细节。2.1 JOIN全家桶成绩单表关联这道题的经典陷阱当时有一道题特别典型有两张表一张是学生信息表一张是成绩表让你统计每个班级的及格率。听起来很简单对吧但实际写起来很多人挂在两个地方第一用INNER JOIN还是LEFT JOIN如果成绩表里没有某个学生的记录这个学生算不算不及格第二及格率的分子分母口径到底是什么——是及格人数/班级总人数还是及格人数/参加考试人数正确的做法是先明确口径。在很多电商场景里这两个口径的差异直接决定了分析结论。比如算优惠券核销率分子是核销订单数分母到底是领取人数还是曝光人数不同口径下这个率可以差出好几倍。回到那道题如果题目没有明确说明默认应该用班级总人数做分母对应的就是LEFT JOIN保证所有学生都保留再用CASE WHEN把缺成绩的记录归为不及格。-- 思路示意LEFT JOIN CASE WHEN 处理缺失成绩 SELECT c.class_name, COUNT(DISTINCT s.student_id) AS total_students, SUM(CASE WHEN sc.score 60 THEN 1 ELSE 0 END) AS pass_students, SUM(CASE WHEN sc.score 60 THEN 1 ELSE 0 END) * 1.0 / COUNT(DISTINCT s.student_id) AS pass_rate FROM class_info c LEFT JOIN student_info s ON c.class_id s.class_id LEFT JOIN score_table sc ON s.student_id sc.student_id GROUP BY c.class_name;我当时在复盘时专门研究过这类题目发现出题人特别爱在关联键是否有重复值上埋雷。比如用订单表和商品表做关联如果商品表里一个商品ID对应多条记录比如不同类目维度那关联出来的订单行数就会翻倍聚合结果直接出错。这种问题在笔试里不会给你报错但结果对不上阅卷人一眼就能看出来。2.2 窗口函数从会写到用得对的差距2018年那会儿窗口函数已经不算冷门了但在笔试里能写对的人并不多。京东的题里出现过一类典型需求取每个品类下销量排名前3的商品。用GROUP BY子查询硬做也能出来但写起来很绕而且容易错。用窗口函数就清爽得多-- ROW_NUMBER 分区排序取每个品类销量前三 SELECT category_id, product_id, sales_volume FROM ( SELECT category_id, product_id, sales_volume, ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY sales_volume DESC) AS rn FROM product_sales ) t WHERE rn 3;这个考点背后考察的是你对分组取TopN这类高频需求的理解。在电商数据分析里每个类目下卖得最好的商品每个城市活跃度最高的用户都是每周都要跑的数据窗口函数基本是居家必备。如果你当时只会写GROUP BY虽然在笔试里也能凑合出答案但代码的可读性和扩展性差很多面试官看到你的写法心里对你的评价会低一个档位。注意窗口函数里PARTITION BY和GROUP BY的语义不能搞混。GROUP BY会折叠行数窗口函数不会。如果你需要在窗口函数的结果上再做过滤必须包一层子查询因为WHERE的执行顺序在窗口函数之前直接加条件会报错。2.3 子查询与临时表的性能意识还有一道题让我印象很深统计最近30天每天的下单用户数。数据量不大怎么写都能跑出来但出题人特意在题目最后加了一句请写出你认为最优的写法。这就不是在考语法了而是在考性能意识。最直观的写法是每天去子查询里扫一遍全表写成30个UNION ALL。这种写法逻辑没错但每扫一次全表就是一次全量IO数据量上来以后基本跑不动。更合理的思路是先把日期过滤条件推到最内层缩小数据范围后再聚合或者利用日期维表一次性把30天的数据都算出来-- 推荐日期过滤推入子查询避免重复全表扫描 SELECT dt, COUNT(DISTINCT user_id) AS active_users FROM user_orders WHERE dt BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 29 DAY) AND CURRENT_DATE GROUP BY dt;这道题给我的启发是笔试里的SQL题答案能跑只是及格线跑得高效才是加分项。很多科班出身的人在学校里写SQL都是玩具数据几千行怎么折腾都行但到了京东这种量级的数据环境一句烂SQL可能把整个任务队列拖垮。面试官通过这么一个小问题就能判断出你有没有真实处理过大规模数据的经验。3. 概率统计题的隐性门槛不是算不出来是看不懂题在问什么概率统计部分在整套专业题里的占比不算最高但它是区分科班统计出身和半路转行的关键阵地。京东这套卷子里涉及的知识点包括条件概率、贝叶斯公式、期望计算、常见分布二项分布、泊松分布、假设检验和简单的AB测试分析。乍看都是大学概率论的基础内容但结合电商场景以后很多人就懵了。3.1 贝叶斯公式那道题先验概率怎么定决定了答案方向有一道题我记得特别清楚题干大概是某商品页面的点击率是10%在点击用户中有20%会加购在未点击用户中有5%会直接通过其他入口加购。问已知一个用户加购了他点击过该商品页面的概率是多少这道题其实就是标准的贝叶斯公式应用。设A为点击过页面B为发生过加购已知P(A)0.1P(B|A)0.2P(B|¬A)0.05。要求的P(A|B) P(B|A) * P(A) / P(B)。其中P(B) P(B|A) * P(A) P(B|¬A) * P(¬A) 0.2×0.1 0.05×0.9 0.065。最终P(A|B) 0.02 / 0.065 ≈ 30.77%。算本身不难但很多人的问题在于把点击用户中加购的比例和加购用户中点击过的比例搞混了。这两个条件概率方向正好相反混在一起结果自然错得离谱。这个坑在现实业务里也特别常见——比如分析看过直播的用户购买率更高到底是直播促成了购买还是本来就爱买的用户更爱看直播这就是典型的因果方向混淆问题笔试考的是基础但其实现场面试里的业务题也一直在考同一件事。3.2 期望值计算多少个用户进来才能等到一个下单这类题另一类高频题是算期望。比如某活动的用户转化率是1%请问平均需要多少用户访问才能等到1个下单用户答案不是100而是需要用到几何分布的期望公式E 1/p 100。但如果追问等到第3个下单用户的期望访问量答案就得把三个几何分布相加得到300。这类题考的是对等待时间类问题的直觉。如果你只是记住了公式但没理解几何分布独立重复试验直到首次成功的语义遇到变体就容易翻车。我当时复习时特意把这类题的变形都整理了一遍包括至少需要n个用户才能有95%概率产生至少一单这种用1-(1-p)^n ≥ 0.95反推n。这种计算看起来偏理论但做业务预估时特别实用比如广告投放的预算测算、活动页面流量预估本质上都是这个逻辑。3.3 AB测试与假设检验显著性到底在说什么2018年的笔试卷子里已经出现了AB测试相关的概念题比如p值为0.03能否说明实验组显著优于对照组很多人的第一反应是能因为0.03 0.05。但出题人想考察的是p值的定义是在原假设为真的前提下观察到当前或更极端结果的概率它不等于实验组有效的概率更不等于效果大小。p值小只代表统计显著不代表业务显著——如果样本量足够大一个0.1%的提升也能p0.05但这在业务上根本无足轻重。这类题在笔试卷子里占比不大但在面试环节基本是必问项。我当时在复盘笔记里专门写了一句总结看到p值先别急着说显著先问样本量多大、效果量多少、这个提升能不能覆盖实验成本。这个思维习惯一直用到现在无论是做推荐策略的灰度实验还是营销活动的AB测试都非常受用。4. 业务分析题你的答案能不能落地面试官一眼就能看出来业务分析题是整套卷子中最开放、也是最难临时抱佛脚的部分。京东的笔试里出现过一类很典型的问题假如618大促期间某品类的销售额同比下滑了20%你会如何分析原因这种题没有标准答案但阅卷人心里有一套好答案的画像。4.1 拿到一道业务分析题先说框架再谈数据很多人拿到这种题的第一反应是先去看数据然后就开始枚举各种可能的原因价格问题、竞品问题、流量问题、天气问题……这种回答最大的毛病是零散没有结构让阅卷人觉得你缺乏系统性的分析思维。正确的打开方式是先搭框架。我当时用的是一个经典的电商分析框架销售额 流量 × 转化率 × 客单价。先把指标拆到这层再逐层下钻。流量层面是总UV下降了还是来源结构变了自然流量、付费流量、活动流量各自贡献多少转化率层面是详情页转化率跌了还是加购到下单的转化率跌了中间每一步的流失是否异常客单价层面是消费者买了更便宜的商品还是促销折扣力度加大导致实付金额下降品类内部结构是主力单品下滑还是整个品类都在下滑有没有新品接不住流量的问题这套拆法不是我的原创但它几乎是所有大厂业务面试题的标准回答姿势。原因很简单——可执行。你把销售额拆成流量、转化率、客单价三个因子每个因子都能对应到具体的团队去跟进流量问题找增长/投放转化率问题找产品/运营客单价问题找 merchandising品类规划。4.2 区分同比口径和环比口径别一头扎进数据里那道品类下滑的题还有一个非常隐蔽的考察点同比下滑20%但去年同期是什么情况大促的日期在不同年份可能是错位的比如去年618的第一波活动从5月25日开始今年从5月28日开始比较时间段不一致算出来同比自然失准。这种口径陷阱在笔试卷子里出现其实是在考察候选人有没有真实业务经验。我在实际工作中处理过太多类似的坑有一次分析季度销售额变化发现华东区跌得特别厉害才想起去年同期的华东区数据里混入了一笔大型企业团购订单那个大单根本不是常规零售硬是让增长率看起来很夸张。如果不做口径清洗分析结论会严重偏离事实。所以写业务分析题时我养成了一个习惯不管题目给不给数据都在答案开头先声明需要先确认口径包括时间范围、业务边界、异常数据处理方式。这个习惯在笔试里很加分因为大多数人都会直接埋头分析只有少数人会先质疑数据本身。4.3 对比分析和归因给结论但也给出怎么做的建议回到那道品类下滑题一个高分的答案不应该止步于找到原因还要给出下一步的动作建议。比如如果发现是付费流量成本上涨导致ROI下降、投放量收缩建议是调整投放策略把预算倾斜到转化率更高的渠道同时补充品牌词投放防守。如果发现是核心单品缺货导致大量流量涌入后无货可卖那就不只是运营问题还是供应链问题需要联动补货计划。如果发现是竞品大促力度更强可以针对性设计品类专属券、组合套装或赠品策略来对冲。这会让阅卷人觉得你不是一个只会分析的人而是一个能推动决策和落地的人。数据分析岗的终极价值从来不是出一份报告而是让报告里的结论能变成业务动作。5. 算法与工具题Python、Excel还有藏在题目里的机器学习基础除了SQL和概率统计这套笔试题里还有一部分会让人措手不及的内容简单的编程题和机器学习概念题。说实话2018年那会儿数据分析工程师和算法工程师的边界还比较模糊笔试题里出现Python编程和基础模型概念并不意外。5.1 手写代码题不是考你写多快而是考你会不会结构化思考有一类很常见的题给定一个列表统计每个元素出现的次数并按次数从高到低排序。这种题在LeetCode上属于easy级别但笔试现场手写时很多人会写得乱七八糟——不是跑不出来而是代码风格和边界处理暴露了底子。用Python写的话标准解法是利用collections.Counterfrom collections import Counter items [1, 3, 2, 3, 1, 2, 1, 4, 5, 4] counter Counter(items) sorted_items sorted(counter.items(), keylambda x: x[1], reverseTrue) print(sorted_items) # 注意当次数相同时可以再加一个规则比如按元素大小升序 sorted_items_with_tiebreak sorted(counter.items(), keylambda x: (-x[1], x[0]))笔试题里这类题考的不是你记得多少API而是你能否处理并列排序的tie-break问题。很多人只按次数排忽略了次数相同的情况这种细节在真实的工作里直接决定报表排序的稳定性。类似的小细节还包括列表为空时会不会报错、输入数据里有没有None值等。写出一个处理了这些边界的函数和写出一个所有测试用例恰好能过的函数阅卷人一眼就能分清。5.2 机器学习基础题逻辑回归和决策树的高频问答笔试题里还出现过一些机器学习的基础概念题比如逻辑回归为什么用sigmoid函数、决策树如何选择最优划分特征、什么是过拟合以及常用的缓解办法。这些题不需要你手推公式但至少得说出个所以然来。举个例子问逻辑回归的损失函数为什么不用均方误差很多人一下子卡住。其实答案核心在于逻辑回归的最终输出是一个概率值如果我们用均方误差做损失优化目标就变成了一个非凸问题梯度下降很容易陷入局部最优而用交叉熵损失函数函数是凸的优化过程稳定并且交叉熵的梯度形式也更好算。我当时复习这部分内容时没有死记硬背而是把模型的损失函数为什么这样设计这个逻辑链完整走了一遍。这样即使笔试时的具体问法换了我依然能从原理出发给答案而不是背一套答案上去。5.3 Excel和工具题低门槛但高区分度还别笑Excel在整套卷子里也占了一席之地。有一类问题是给出一张数据截图让你描述用Excel做数据透视表或者VLOOKUP的步骤。这种题在科班出身的候选人眼里显得太初级但出题人显然知道真实业务场景里不少需求方发来的数据表就是Excel格式分析师如果连Excel的数据处理技巧都不熟练日常协作会非常吃力。如果你的基础比较薄弱我建议至少掌握VLOOKUP、数据透视表、条件格式和基础的图表制作。不需要成为Excel大师但别人发来一张杂乱的大宽表你能快速清洗成可分析的结构化数据这个能力在任何公司都是硬通货。6. 考后复盘那些我在笔试之后才想明白的事笔试结束之后很多人会陷入对答案的焦虑中。但以过来人的经验看比对完答案对错更重要的是把整场笔试当成一次免费的模拟测试复盘自己的知识盲区和时间分配问题。6.1 错题本比刷题量更重要我当时刷题的习惯是每套卷子做完不急着做下一套而是把错题按知识点分类整理。比如SQL类右连接和左连接使用场景混淆概率类条件概率方向颠倒业务类分析缺少框架想到哪说到哪行测类数字推理规律积累不足整理完后再针对薄弱项做专项练习。这个方法的效率远高于盲目刷题因为笔试的考点其实高度集中你把每个知识点的常见坑都踩过一遍考场上遇到任何变体都不会慌。6.2 学会用输出倒逼输入复盘时还有一个很有用的技巧把每道题用自己的话讲一遍讲到一个完全不懂数据分析的朋友也能听懂为止。这个过程能逼你把模糊的理解转化成清晰的知识结构。我当时就发现自己对假设检验的p值理解得模棱两可能背定义但没法解释为什么p0.05不能直接下结论。正是通过讲解这个动作我才把这块的思维理顺了。这个习惯一直保留到现在无论是做技术分享还是写文档我都很看重能不能用大白话把事情讲清楚。数据分析这个岗位一半的功夫在算另一半在说两者缺一不可。6.3 笔试只是第一步面经里才有真正的实战经验最后说一个很多人容易忽略的点笔试结束后的面试环节才是真正拉开差距的地方。京东数据岗的面试基本会围绕简历项目深挖比如你处理过的分析项目里为什么选这个指标、怎么处理异常值、分析结论如何落地。这些在笔试题里能体现一部分但主要是靠平时的项目积累。如果你手头没有拿得出手的数据分析项目建议先做一个端到端的完整项目哪怕数据是自己爬的或从公开数据集里找的过程也要完整走一遍数据清洗、探索性分析、特征构造、可视化、结论输出。面试官看重的不是你项目有多高级而是你有没有踩过真实的坑、能不能说清楚每个步骤背后的取舍。说到底京东2018秋招这套笔试题考的不是你知道多少而是你能不能用它来解决真实问题。这种考察思路即使在今天的数据分析师招聘里也依然成立。把上面这些考点和解题思路吃透再去应对其他电商或互联网公司的笔试你会发现自己像是拿到了同一条巷子的地图——每道题的长相在变但那些门牌号你早就记住了。我在复盘这套题时最大的体会是笔试不是终点它只是一个筛选机制真正决定你能否拿到offer的是你对业务的理解深度和解决实际问题的能力。与其焦虑地刷一百套题不如花时间把十套题里的每道题都吃透把每类题的思维方式内化成自己的分析框架。这套方法论比任何题库都值钱。