2025携程数据分析工程师笔试通关指南:SQL+业务+统计全攻略
发布时间:2026/8/29 4:50:36 作者:尧图编辑部 阅读量:1,286

2025年春招陆续放量携程集团的第一批数据分析工程师笔试就是很多人躲不开的一场硬仗。我身边好几个准备投数据岗的朋友都在问携程笔试到底考什么难度在什么水位怎么在有限时间里最大化得分这篇文章就把我收集到的信息、往年经验和我自己的判断整理成一套完整的应考思路覆盖题型结构、SQL和业务分析题的高频考点、统计概率的易错点、机试策略以及考后复盘给准备参加这批笔试或者后续批次的人一个能直接照着准备的路径。先说结论携程数据分析工程师这批笔试核心就是三块——SQL、业务分析、统计概率基础部分批次会带一小段Python数据处理题。SQL是拉分项业务题是区分项统计题是保底项。三块各有各的复习重点别用刷算法题的思路去准备会跑偏。1. 投递背景与这批笔试的基本盘1.1 2025春招时间线你大概什么时候收到笔试通知2025年春招整体节奏比往年略早。携程作为OTA头部公司简历投递通道大约在2月中下旬就开放了第一批笔试通知通常集中在3月上旬发出笔试时间大概率安排在3月中旬的某个周末晚上。这个时间点不是官方公告里的死时间而是根据过去几年的惯例推的但参考价值很高——你如果已经投了简历3月上旬就要把手机通知和邮箱盯紧垃圾邮件翻一翻笔试通知容易被吞。第一批笔试有个特点收到通知到正式开考之间往往只有2到4天。这意味着你不可能等收到笔试再系统性复习必须在投递简历那一刻就开始按“随时可能开考”的状态准备。我见过太多人简历投出去就干等等收到邮件才发现SQL窗口函数都写不利索那基本就是去陪跑。1.2 岗位画像数据分析工程师到底考什么能力先把这个岗位和几个容易混淆的方向分清楚。数据分析工程师不同公司定义不完全一样有的偏数仓、偏ETL有的其实就是数据分析师。从携程这个岗位的JD通常能看到这些高频词数据提取、指标体系搭建、报表开发、业务分析、AB实验。它的定位更接近“能自己取数、能建看板、也能下钻分析”的复合型角色比纯数据分析师更看重SQL工程能力比数据开发工程师更看重业务敏感度。这对笔试的影响是什么SQL题一定不是简单的单表查询会涉及多表关联、窗口函数、时间维度处理业务分析题会结合携程的旅游业务场景酒店、机票、火车票、度假、商旅考察你能否把业务问题翻译成数据问题统计概率题则围绕AB实验、假设检验这些电商和OTA行业天天用的东西。你如果按“通用数据分析师”去准备大概率会在业务题上吃亏——因为携程的业务逻辑和非旅游类公司差别很大后面我会专门展开。1.3 在线笔试的硬性规则形式、时长、环境携程这批笔试通常用牛客或赛码的在线笔试系统总时长一般90分钟左右少数批次是120分钟。题型构成大致是单选题多选题统计概率、业务常识、机器学习基础、SQL编程题在平台里写代码实际跑通出结果、业务分析文字题。部分批次会加一道Python数据处理题用Pandas或者纯Python实现一个数据处理逻辑。在线考试有几个硬性要求要提前确认摄像头是否强制开启、是否允许本地IDE、是否切屏会警告或交卷。不同批次规则不完全一样收到邮件通知后一定要先读考试规则别开考了才发现不能用本地IDE——SQL题在牛客上裸写真的很难受。另外一个容易被忽视的点部分SQL题只支持特定方言MySQL为主不支持某些窗口函数或者limit语法有差异这直接影响你的写法。2. 题型分布携程笔试到底在考什么2.1 往年题型大盘点我综合了近三年携程数据岗笔试的反馈题型分布大致是这样的具体批次会有浮动模块题量参考分值占比参考主要考法单选题10-15题20%-30%概率统计基础、机器学习概念、SQL概念、业务指标定义多选题5-10题15%-20%指标体系选对、实验设计多选、SQL结果判断SQL编程2-3题30%-40%在线运行多表关联窗口函数聚合业务分析1-2题15%-25%文字作答指标异常归因或活动效果评估Python数据处理0-1题5%-15%部分批次才有Pandas操作为主注意几个容易被低估的点多选题不是你少选就稳拿一半分很多平台是“完全选对才给分错选漏选都不得分”这个规则变化直接决定答题策略有人为了求稳少选结果一分不得SQL题的分值权重很大而且作为唯一“能实际运行验证”的题目是整张卷子里最可控的得分点业务分析题没有标准答案但恰恰是阅卷人区分候选人的关键。2.2 从岗位JD反推考点权重岗位JD里出现的每一个关键词你都要在脑子里翻译成考点“负责业务日常数据监控与异常定位” → 考察异常归因思路、异动分析方法“参与指标体系建设” → 考察指标定义、指标体系分层一级指标/二级指标/过程指标“支持AB实验设计与分析” → 考察实验设计、显著性检验、常见陷阱辛普森悖论、样本量不足“搭建数据报表与看板” → 考察数据可视化基础虽然笔试很少直接画图但可能问“你会用什么图表展示XX数据”“熟练使用SQL” → 考察窗口函数、多表关联、日期处理、去重逻辑这是硬功夫有一个常被忽略的考点是业务常识。比如“OTA行业里ADR指什么”“Occ是什么”“什么叫间夜量”这类指标定义题在单选和多选里出现的概率非常高。你没有酒店旅游行业背景的话这些术语不提前背真的只能蒙。我下面会单独列一些高性价比的术语建议考前重点记。2.3 难度水位为什么有人觉得简单有人觉得难携程这批笔试的难度口碑两级分化严重。觉得简单的通常是SQL熟练、业务题有自己的分析框架觉得难的多半是栽在业务题和统计细节上。我的判断是难度不在题目本身而在“时间压力下的决策质量”。90分钟里你要完成十几道选择题、两三道SQL和一两道业务题平均每道题可分配时间非常有限。很多人不是不会是时间分配崩了——在选择题上纠结太久导致SQL没时间调通业务题只能写两行。笔试现场最先考验的其实是“取舍能力”遇到卡壳超过3分钟的选择题直接标记跳过SQL题优先保证全部提交一个能跑的版本再回来抠细节。3. SQL题最不能丢分的部分3.1 高频考点翻来覆去就是这几类从往年笔试反馈看携程SQL题的高频考点高度集中你不需要去刷LeetCode困难级把下面这几类练熟就够用多表关联inner join、left join的语义辨析尤其是关联前后数据量变化的判断窗口函数row_number() over partition by、rank()和dense_rank()的区别、sum() over()做累计值、lag()/lead()做前后对比日期与时间处理date_format、datediff、date_sub、date_add按天/周/月分组统计去重逻辑count(distinct) vs 先group by再去重辨别“同一个用户多笔订单”这类场景聚合与条件统计sum(case when ... then 1 else 0 end)这种写法统计满足条件的记录数分位数和排名类percentile、row_number用于“取每组的TopN”这类经典题你去做真题回忆版还会发现一个特点SQL题的题干模式化很强基本围绕酒店订单、机票退改、用户行为、平台补贴这几类数据建模。提前把这些常见表结构订单表、用户表、酒店表、航线表之间的关联逻辑想清楚开考后可以省下不少理解题目的时间。3.2 一道典型的酒店预订分析题完整拆解这里我构造一道贴近真题风格的题把常见考点串起来你看思路比背答案重要题目场景有一张酒店订单表order_info字段包括order_id、user_id、hotel_id、order_date、order_status’completed’表示已入住’cancel’表示取消、amount另有一张用户表user_profile字段包括user_id、register_date、city。现在要统计2025年3月每个城市首次完成订单用户中各城市的人均首单金额、首单完成用户数并输出金额排名前5的城市。这个题综合了三个考点时间窗口、从订单匹配“首次完成”、分组聚合和排名。拆解逻辑第一步先看懂“首次完成订单”怎么定义——它是一个用户在3月之前没有过完成状态的订单且在3月内第一次下单并完成。也就是该用户第一个completed状态订单发生在这个3月这个用户只取这一条订单不是3月所有订单都算SQL的写法思路with completed_order_ranked as ( select o.user_id, o.order_id, o.amount, u.city, row_number() over(partition by o.user_id order by o.order_date asc) as rn from order_info o join user_profile u on o.user_id u.user_id where o.order_status completed and o.order_date between 2025-03-01 and 2025-03-31 ) select city, count(distinct user_id) as first_order_user_cnt, round(avg(amount), 2) as avg_first_order_amt from completed_order_ranked where rn 1 group by city order by avg_first_order_amt desc limit 5;这里有两个细节值得注意。第一为什么用row_number而不是直接group by user_id取min(order_date)因为题目还要求“首单金额”如果用group by之后再去关联金额逻辑混乱还容易出错。窗口函数一步就拿到了“该用户在3月最早的那条completed记录”并且能把这条记录的金额一起带出来这是最简洁的方案。第二where里先把订单时间锁在3月再算首次完成但如果用户在3月之前有completed订单怎么办严格来说“首次完成订单”应该在全量订单里判断是否3月之前有过completed。只在3月订单里做窗口排名会漏掉“用户3月前完成过但3月也完成过”的筛选。真题里通常会在题干说明是否只看3月内订单如果没有明确说明我建议在评论区写一下你的假设阅卷人能看到你的思考相对完整这也是得分技巧。3.3 在线笔试SQL的糟心细节字段名、平台方言、提交格式在线跑SQL的体验和本地IDE完全不一样几个坑提前说字段名不要凭记忆写看题目给的字段定义千万注意有些题会故意用user_id和uid混用你看错一个就全错牛客平台对MySQL的版本支持有些旧group by后面能不能接select里没出现的字段、窗口函数是否支持都要先测一个最简单的select看看环境不要在一道题上死磕太久。SQL题如果10分钟没跑通先把“能跑出结果的中间版本”提交一次至少保底有部分分再继续调优注意输出格式列名必须和题目要求的别名一致多一个空格都会判错值的小数位数有时会限制要先round分页排名类的题limit的写法在不同数据库方言里不一样MySQL用limitSQLServer用top用错直接白给还有一个很多新手会犯的问题SELECT出来的列顺序平台判题往往按列顺序比对你的结果顺序不对即使数值一样也算错。所以写完SQL后把题目要求的输出列顺序再对一遍这是最简单的5分。3.4 时间分配建议SQL题放前面还是后面我建议开考后先花3分钟快速扫一遍整张卷子然后优先做SQL题。理由是SQL题是客观题里唯一能当下验证对错的做出来就是实打实的分数而且这类题思考时间短、执行反馈快能帮你迅速建立“手感”。选择题和业务题放在后面选择题卡住就标记跳过业务题只要有思路框架就能下笔。如果SQL有三道也按“能做满分的先做”原则先把最简单那道完整跑通拿到满分再看难的。别一上来啃最难的SQL结果时间没了简单的也没做完。4. 业务场景题如何用数据分析思维拆解旅游业务问题4.1 先背熟这些OTA行业指标业务题一个隐性门槛是行业黑话。你如果不知道ADR是什么意思一道选择题可以直接瞎蒙。这些是携程这类OTA公司笔试和面试里出现频率最高的指标我按业务线帮你列一份酒店住宿ADR已售客房平均房价客房收入/已售房间数、OCC入住率已售房晚/可售房晚、RevPAR每间可售房收入ADR×OCC、间夜量一间房住一晚为一个间夜机票客公里收益、退票率、改签率、提前预订天数lead time、noshow率买了票没坐平台与用户GMV、CVR转化率展示到下单、浏览-下单转化漏斗、复购率、月活/日活、客单价营销渠道投放ROI、点击率、注册转化率、新客首单率、优惠券核销率、补贴效率背这些术语不只是为了应付名词解释题更重要的是业务题题干里一旦提到“OTA的CVR下降了”你得能快速判断CVR在业务里意味着什么、它可能被哪些上游因素影响。4.2 常见业务题类型归因、实验评估、指标口径携程笔试题业务大题的出题风格基本绕不开下面三类第一类指标异常归因。典型问法“某区域酒店预订转化率连续三天下降10%你会怎么分析”这题没有标准答案但你要有完整排查链路先确认数据口径是否变化是不是埋点漏了、渠道来源变了再拆维度按城市/酒店星级/用户类型/设备端/支付方式/渠道细分再看竞品和外部环境是否有同类平台大促、天气或疫情类特殊事件。注意你的作答要有优先级先说“先验证数据准确性再拆维度下钻”比一上来就猛列十个假设强。第二类活动效果评估。典型问法“平台做了一个针对新用户的满减补贴活动问活动是否有效”这里考察的核心是AB实验思路实验组和对照组怎么划分、核心指标是什么、如何排除自然增长的影响、补贴的成本摊到多长期限看。你不需要真的算出结果但你得写清楚评估框架。第三类指标体系搭建。典型问法“为酒店业务搭建一套运营监控指标体系你会怎么设计”这里要体现分层思维一级指标看整体盘子GMV、间夜量、ADR、二级指标看环节转化曝光→点击→详情→下单→支付→入住、三级指标看具体业务动作按渠道/用户类型/城市的拆分。没有这种分层框架直接上来一堆指标阅卷人会默认你没有系统思考。4.3 给业务大题套一个能落地的答题框架我自己在笔试和面试里用的一套框架分享给你参考第一步定义问题。先和题目确认“我理解的目标是什么”。不是去和出题人对话而是在答案里写清楚“我认为本题的核心是排查XX指标下滑的原因/评估XX动作的收益。”第二步确认口径。主动提出“先验证数据口径和链路是否稳定”这一步在业务题里非常加分。它向阅卷人传递你懂的数据异常可能是数据问题不是业务问题。第三步维度拆解。按“用户维度、渠道维度、产品维度、时间维度、地域维度、竞品维度”六个方向去下钻每条都落到具体的业务动作上。比如用户维度细分新老客渠道维度细分自然流量和付费流量。第四步建立假设并验证。对每个维度的发现提出业务假设并说明用什么数据验证。比如“假设是某渠道的流量质量下降导致的CVR降低验证方法是检查该渠道次日留存率是否同步下降”。第五步给出建议。不要只说分析要给可落地的建议短期的调整投放、补发优惠券、长期的优化推荐策略、改善产品流程。这套框架用在文字答题的格式上每步一个小标题逻辑清晰阅卷人30秒能看懂你的思路分基本就稳了。4.4 一个常被忽视的细节业务题要结合旅游场景同样是“CVR下降”电商业务和旅游业务的归因逻辑有巨大差异。旅游产品有几个特性直接影响数据分析决策周期长用户提前很多天看酒店、客单价高比普通消费品高一个量级、时效性强机票库存和价格实时变化、受外部事件影响大节假日、天气、大型活动。这些特性导致旅游业务的转化率波动天然比电商更大你不能在归因题里只盯着站内流量和优惠券。举一个例子某城市酒店预订量突然下降如果你的分析框架里没有“该城市周边是否有大型活动取消”“是否有突发天气影响出行”“是否航班大面积取消”这类外部因素你的分析就是缺了一条腿的。把这些行业特点主动带进答案里是让阅卷人知道你“懂旅游业务”的捷径。5. 统计概率与算法基础这些题看着简单陷阱却不少5.1 假设检验与AB实验必考且易错选择题里出现概率最高的统计考点就是假设检验和AB实验相关。核心概念必须脱口而出原假设和备择假设怎么设、p值是什么是“在原假设为真时观察到的数据或更极端数据出现的概率”不是“原假设为真的概率”这个错误说法是送命题、显著性水平α、第一类错误和第二类错误、置信区间、功效power、样本量估算。AB实验的考察点更实务实验前要确定什么指标作为主指标、如何判断实验组和对照组是否显著差异、什么叫“实验陷阱”比如辛普森悖论——整体和分组结论相悖样本比例不均衡实验中途改指标观察期过短。携程的业务场景很适合出这类题因为平台天天在跑各种补贴和排序策略实验。有一个容易被多选题坑的点问你“以下哪些做法能提高实验的检验功效”正确的选项包括增加样本量、提高显著性水平放宽、降低指标方差更稳定的指标、延长实验周期。很多人只选对增加样本量漏掉降低方差和延长周期多选题就白给了。5.2 概率题速算技巧与常见题型概率题在笔试里通常不会很难但讲究熟练度。常考的有古典概型排列组合算概率、条件概率与贝叶斯公式、期望值计算、独立事件判断、二项分布和正态分布的基本性质。准备建议很直接把贝叶斯公式和全概率公式的经典题型做会比如“某检测方法灵敏度90%、特异性95%人群中患病率1%问检测阳性者实际患病的概率”这种题每年都有公司考换汤不换药。还有一类常被忽略的是“期望”的计算。比如“某用户预订酒店后取消概率是20%每单毛利是100元退订成本是30元问单用户期望毛利”其实就是期望值公式套进去算就行但要小心是否漏掉“未取消”和“取消”两种情况的权重。5.3 机器学习选择题问到什么程度算够携程数据分析工程师笔试里涉猎机器学习但深度很浅基本是概念理解层面不用怕。高频考点过拟合和欠拟合的特征与缓解方式正则化、交叉验证、增加样本、降低模型复杂度常见评估指标准确率、精确率、召回率、F1、AUC、ROC各适用于什么场景正负样本不平衡时看什么指标简单模型原理线性回归和逻辑回归的区别、决策树的分裂依据信息增益/基尼系数、K近邻、聚类算法交叉验证的作用评估模型泛化能力这些题在笔试前的早上快速过一遍概念列表就够了不需要推导公式能判断对错就行。我见过有人在这上面花大把时间刷算法题性价比非常低——数据分析工程师的笔试核心永远是SQL和业务题机器学习只是点缀。6. 机试Python如果考到了这样打最稳6.1 先确认到底有没有Python题不是每一批携程数据岗笔试都包含Python机试题有的批次完全没有有的批次有一道。从近年的反馈看出现Python题的概率大概在四到五成形式以Pandas数据处理为主很少让你手写复杂算法。如果你时间紧张优先把SQL和业务题准备扎实这两块权重永远大于Python题。Python题更像“额外加分项”不是“生死项”。但如果简历里明确写了精通Python还是建议把Pandas基础操作准备一下因为如果考到你却写不出来反而会拉低整体评价。6.2 把Pandas题翻译成SQL思维Pandas数据处理题很多可以用SQL思维来解因为核心操作都是分组、合并、筛选、排序groupby().agg() 等价于 SQL的group by 聚合函数merge 等价于 joinsort_values 等价于 order byloc/query 等价于 wheredrop_duplicates 等价于 distinctcumcount 等价于 row_number计数给你一个例子有一张订单DataFrame字段包括user_id, order_date, amount要输出每个用户最新一笔订单的金额。Pandas写法import pandas as pd df df.sort_values(order_date) result df.groupby(user_id, as_indexFalse).tail(1)[[user_id, amount]]思路是排序后取每个用户最后一条。也可以写成rank版本df[rn] df.groupby(user_id)[order_date].rank(methodfirst, ascendingFalse) result df[df[rn] 1][[user_id, amount]]这两种写法都能拿分线上环境没有pandas模块的话就别想了直接写纯Python方案用字典处理别空着。6.3 机试环境最容易被坑的地方在线机试Python有几个很烦的细节input多行输入的处理、输出格式要求、是否允许import额外库。我的建议是提前在牛客模拟环境里跑几道题熟悉一下在线读入方式别让“数据读不进来”这种低级问题毁掉整道题。如果时间实在不够背一个万能模板也值import sys data sys.stdin.read().strip().split(\n) # 每行是一个记录按题目要求解析这是能跑但最好还是平时多练。机试Python就像开车看着简单没上过路都会慌。7. 复盘与备战建议从第一批笔试到后续机会7.1 交卷后立刻做的三件事笔试结束不等于这件事过去了。我建议交卷后马上做三件事第一把没做出来的题和不确定的选择题记下来。趁记忆还热开个文档记题干要点和你当时卡住的点不用写完整题目够自己后面复习用就行。第二把做过的SQL题重写一遍。尤其是那些“跑通了但效率不高”或者“改了两次才跑通”的题回家后在本地用测试数据重新写一遍直到一次通过才能说明你真正掌握了。第三对照本文的考点清单检查自己的薄弱项。如果概率题错得多就补贝叶斯和期望如果业务题没写几步就背分析框架如果SQL慢了就刷SQL题练手感。笔试的一大价值就是用它当考纲帮你校准后续复习方向。7.2 笔试到面试的窗口期怎么利用笔试结束后到面试通知通常在一周到两周。这段时间不是让你干等的而是备战面试的黄金期。携程数据分析工程师的面试大概率会问你做过哪些数据项目、你怎么拆解某业务指标、SQL题现场写、统计基础面试题、对旅游业务的理解。我的建议是在等待期做一次“项目复盘”把自己简历上的每一个数据项目都用“背景-目标-我的行动-结果-复盘”五段式重新组织一遍特别要想清楚用到了什么分析方法、为什么要选这个方案。面试官最喜欢问的就是“你为什么用这个指标/这个方法”你如果答不出背后的为什么项目聊再大都撑不住。7.3 笔试只是开始别把所有筹码压在一场考试上从求职策略角度说第一批笔试考砸了不代表春招结束——携程一般还有后续批次你仍然可以等下一批或换个岗位继续投。其他公司的数据岗笔试也会在同期密集进行你在携程笔试中积累的经验可以复用到几乎所有互联网公司的数据岗笔试里尤其是SQL和统计概率部分通用度极高。我个人的体会是笔试准备的收益不止于笔试本身。你把SQL窗口函数练熟、把业务分析框架背清楚、把统计概念过一遍这些能力在未来的面试和实际工作中全部用得上。与其说这是“为一场考试复习”不如说是“借一场考试补基础”。7.4 最后给两个小建议考试前一晚别刷难题把三道常规SQL题手写一遍手感把指标定义和业务框架过一遍然后早点睡。在线笔试是个精力和专注力游戏带着发懵的脑子去参加会的题也可能写错。考试当天找一个网络稳定的地方关掉所有消息提醒提前半小时坐在电脑前调试摄像头和浏览器。这些都是小事但每年都有不少人挂在环境问题上。把能控制的环节都控制住剩下的就看临场发挥了。数据分析和人生一样关键不是不犯错而是把犯错的概率降到尽可能低。