☰
携程数据分析工程师笔试全解析:SQL、统计与业务思维
2026/10/4 20:51:56 网站建设 项目流程

2025年春招已经启动,携程集团的数据分析工程师岗位第一批笔试刚结束。身边好几个朋友考完就来找我聊天,问得最多的无非是“考了什么”、“难不难”、“后面该怎么准备”。作为一个已经在这行摸爬滚打多年的老数据人,也帮人改过不少笔试简历,今天就把这轮笔试的考情、题型、踩坑点和后续准备方向一次性说透。无论你是刚投完简历等通知,还是打算参加下一批笔试,这篇文章都值得你花十分钟读完。

先给个结论:携程数据分析工程师的笔试,本质上不是在考“你会不会写SQL”,而是在考“你有没有用数据解决业务问题的底层思维”。题目覆盖面广,从SQL到Python,从统计概率到业务分析,甚至还有少量机器学习的影子。但别慌,它不会像算法岗那样啃硬核代码,重点还是落在“数据如何驱动业务决策”这件事上。

1. 岗位定位与笔试考核逻辑

1.1 数据分析工程师和数据分析师到底有什么不同

很多人投这个岗位的时候,其实没搞清楚一个关键问题:携程招的数据分析工程师,和我们常说的数据分析师,干的活并不完全一样。

传统数据分析师的核心指标是“分析洞察”,他们的产出通常是报告、PPT、专项分析结论,更多服务于决策层或业务方。而数据分析工程师的工作重点,是“把分析能力产品化、自动化、平台化”,你得写稳定的SQL调度任务,得搭建指标看板,得处理数据口径不一致的问题,甚至要参与数据仓库表结构的梳理和埋点规范的制定。

换句话说,数据分析师更像是“用数据写文章的人”,数据分析工程师则更像是“把数据文章变成标准出版物的人”。笔试的时候,携程会特别关注你在数据提取、清洗、建模、可视化链路中的工程化意识。比如一道SQL题,别人可能只要求你查出结果,但他们可能会多问一句:这个结果如果每天自动跑,你会在乎它的稳定性吗?

理解了这层关系,你就知道笔试侧重点为什么和普通数据分析师不一样了。

1.2 笔试在整个招聘流程中的实际权重

携程的招聘流程一般是:网申 → 在线测评/笔试 → 技术面(通常是两到三轮) → HR面 → Offer。笔试在其中扮演的角色,是一个“高效率的筛选漏斗”。

说实话,笔试成绩本身不会直接决定你能不能拿到Offer,它更像是一个门槛。如果你笔试阶段挂了,简历写得再漂亮也没机会进入面试。如果笔试成绩不错,面试官反而会在面试中给你更高的起点预期——他会默认你已经具备了一定的数据基本功,问题就会问得更深。

这意味着备考策略必须清晰:笔试的目标不是“考满分”,而是“稳稳地通过,别让某一项拉胯”。我见过太多人在SQL上花了大量时间刷LeetCode困难题,却忽略了基础的统计学概率,结果考完一看,业务题没答好,综合排名反而不理想。

1.3 携程笔试的通用结构与时间安排

从近几年和这次2025春招第一批的情况来看,携程的数据分析工程师笔试整体结构基本稳定,卷面分为四大块:

模块题型大致题量建议用时
SQL编程手写SQL3-5题30分钟
Python/算法代码题2-3题30分钟
统计学/概率单选+填空5-8题20分钟
业务分析案例分析1-2题40分钟

总时长通常在120分钟左右,部分批次可能会延长到150分钟。从时间分配上可以看出,业务分析和SQL是笔试的重头戏,Python和统计相对平均。如果某一块你特别弱,一定要提前做好取舍,别在一道题上死磕到影响后面。

2. 笔试核心模块与典型题型拆解

2.1 SQL专项:携程最看重的基本功

SQL在携程笔试中的地位,怎么说都不为过。因为数据分析工程师日常工作中,大概率有60%以上的时间是在写SQL、调SQL、优化SQL。笔试考的SQL题不像LeetCode那样纯考逻辑,而是明显带着业务痕迹。

典型的SQL题目类型包括:

  • 分组聚合:比如计算每个城市的酒店平均间夜价格,哪个城市的订单量最大,这类题考的是GROUP BY和聚合函数的组合使用。
  • 多表关联:比如订单表、酒店表、用户表之间的关联查询,考的是JOIN的理解,特别是LEFT JOIN和INNER JOIN的区别。
  • 窗口函数:比如计算每个用户的第N次下单时间、计算累计消费金额、计算相邻两单的时间间隔。窗口函数几乎是必考的,而且比重还不小。
  • 留存/漏斗计算:比如计算某个月新激活用户的次日留存率、漏斗各环节的转化率,这类题是携程特别喜欢的,因为它直接对应OTA行业的核心运营指标。

给大家出一道贴近真实的示例题:

表t_booking包含字段:order_id(订单号)、user_id(用户ID)、hotel_id(酒店ID)、order_time(下单时间)、order_amount(订单金额)、city_id(城市ID)。 用SQL计算2025年1月每个城市的GMV排名前3的酒店hotel_id及其GMV。

这道题的难度属于中等偏下,但考察点很准:窗口函数ROW_NUMBER()按城市分组、按GMV排序、取前N名。如果你只会GROUP BY,可能就卡在这里了。

参考解法思路:

WITH city_hotel_gmv AS ( SELECT city_id, hotel_id, SUM(order_amount) AS gmv FROM t_booking WHERE order_time >= '2025-01-01' AND order_time < '2025-02-01' GROUP BY city_id, hotel_id ), ranked AS ( SELECT city_id, hotel_id, gmv, ROW_NUMBER() OVER (PARTITION BY city_id ORDER BY gmv DESC) AS rn FROM city_hotel_gmv ) SELECT city_id, hotel_id, gmv FROM ranked WHERE rn <= 3;

这样的题,你光写出来是不够的,还得注意时间条件怎么判断、分组口径是否一致。笔试的时候如果能在注释里写上自己的口径假设,会是个不错的加分项。

2.2 Python与算法基础:工程能力的分水岭

Python模块一般不会考特别偏门的算法,更多是工程实践向的题目。比如给你一个CSV文件,要求你用Python完成数据读取、清洗和简单分析;或者给一道数组/字符串处理的逻辑题,用Python实现某个函数。

这里要特别注意:携程的Python题并不是单纯考察语法,而是看你会不会用Python解决实际的数据处理问题。常见的考察点包括Pandas的DataFrame操作、缺失值处理、apply函数的使用、merge和concat的区别等。

一道典型的考察题可能是这样:

给定一个订单数据表(可理解为DataFrame),包含user_id、order_date、order_amount三列,请用Python计算每个用户按日期排序后的累计消费金额,并输出每个用户的首次消费日期和末次消费日期。

这类题用Pandas写起来非常直接:

import pandas as pd df = pd.read_csv('orders.csv') df['order_date'] = pd.to_datetime(df['order_date']) df = df.sort_values(['user_id', 'order_date']) df['cumsum_amount'] = df.groupby('user_id')['order_amount'].cumsum() first_last = df.groupby('user_id')['order_date'].agg(['first', 'last']).reset_index() result = pd.merge(df, first_last, on='user_id')

如果没接触过Pandas,用纯Python的列表和字典也可以做,但效率会低不少。笔试时间有限,建议提前把Pandas的groupby、merge、apply这几个最常见的方法练到闭着眼都能写出来的程度。

2.3 统计与概率:容易被忽视的隐形杀手

这个模块的题量虽然不大,但容错率极低。因为题型以选择、填空为主,错了就是错了,没有过程分。常见考点包括:描述性统计(均值、中位数、方差)、概率计算(条件概率、贝叶斯)、假设检验(p值、显著性水平)、AB测试的基础概念。

有一道经典概率题,很多批次都出现过变体思路,大家可以感受一下:

某酒店有70%的概率会被用户预订,且预订后用户取消的概率是20%。请问:用户最终完成入住的概率是多少?

这个题考察的就是条件概率:P(预订且未取消) = P(预订) × P(未取消|预订) = 0.7 × 0.8 = 0.56。简单,但容易因为读题不仔细而掉坑。

统计学的部分,我建议大家把几个核心概念理清楚:p值到底意味着什么(它不代表“备择假设为真的概率”)、置信区间的真正含义、第一类错误和第二类错误的区别、样本量和统计功效的关系。这些概念不需要你会推导公式,但一定要能说清楚它们在业务场景中的意义。

2.4 业务案例:考察数据思维的高阶战场

业务案例题是整个笔试里最灵活、最能拉开差距的部分。携程作为OTA平台,业务题往往围绕酒店预订、机票搜索、景区门票、度假线路等场景展开。题目会给你一段业务背景,然后让你设计分析思路、确定核心指标、判断数据异动原因,或者评估某个策略的上线效果。

举个例子,一道典型的业务题可能是:

最近一个月,携程某城市酒店频道的点击率明显下降,DAU没有显著变化,但订单转化率下降了15%。请给出你的分析思路。

这类题没有标准答案,但面试官有一套默认的“优秀回答路径”:

  1. 确认数据口径:先验证数据埋点是否有变动,统计口径是否调整,避免一开始就陷入业务归因。
  2. 拆解问题:转化率=订单数/点击UV,订单数下降可能是流量结构变化、竞争环境变化、产品体验问题、价格优势减弱等原因。
  3. 定位维度:从城市、酒店等级、用户类型、设备端、时段等维度拆分,看下降是否集中在某个子群。
  4. 提出假设并验证:用数据分析验证假设,比如如果价格劣势是主要原因,那么价格敏感型用户的转化率降幅应该更大。
  5. 输出建议:最后落到可执行的业务动作上,比如调整排序策略、增加优惠券投放、优化详情页加载速度等。

记住,业务题考察的从来不是“你的结论有多正确”,而是“你的分析逻辑有多完整”。哪怕你最后的结论不够精确,只要框架扎实、维度清晰,就能得到一个不错的分数。最怕的是那种从头到尾只说一个原因、拿不出验证逻辑的回答。

3. 实战准备策略与长期能力沉淀

3.1 笔试前两周的高效冲刺方法

如果你距离考试还有两周,别想着“面面俱到”,那样反而容易什么都没抓到。建议按照我下面的策略来安排时间:

第一周的重点是SQL和Pandas。SQL每天刷3-5道题,重点练窗口函数和复杂JOIN,题目可以直接在牛客或LeetCode的数据库题库里找,优先做中等难度,偏题怪题先跳过。Pandas则把groupby、merge、apply、pivot_table这四类方法搞得滚瓜烂熟,配合真实数据集做一遍清洗和分析流程。

第二周的重心转向统计和业务。统计概念用一天时间集中梳理一遍,重点是把p值、假设检验、置信区间这几个概念用自己的话说通。剩下的时间全部花在业务案例上,每天精读2-3道携程或同类OTA平台的业务分析题,读完不要只看答案,要把自己的分析框架写出来,再跟参考答案对比,差在哪,补哪里。

这里分享一个我自己刷题时的小习惯:每做完一道题,我都会在笔记本上用两到三句话写下“这题考的是什么能力”和“我的解法暴露了什么短板”。题目是刷不完的,但能力点是有限的。当你做了超过20道题以后,你会发现考来考去就那么几个能力点。

3.2 从笔试反推面试:如何提前布局技术面

笔试的准备,其实是面试准备的先声。很多人考完笔试就彻底放松了,等到面试通知来了才临时抱佛脚,这是非常可惜的。

笔试里出现过的SQL题型、Python数据处理方式、AB测试概念,几乎100%会以更深入的形式出现在面试中。比如笔试里如果你写了用窗口函数算留存率,面试官一定会追问“这个窗口函数在底层是怎么执行的”、“如果数据量特别大,窗口函数的性能怎么办”。别把笔试和面试当成分裂的两个环节,它们是一套连贯的考察体系。

建议你笔试结束后,第一时间把自己在笔试里不确定的题目记录下来,不管最后有没有通过,都去查资料弄懂。哪怕只是多学了一个知识点,你在面试中可能就多一次高光表现的机会。

3.3 数据工程师的长期能力树:不只是为了笔试

从长远来看,通过笔试只是职业生涯很早期的一小步。真正值得投入时间沉淀的,是一棵完整的“数据能力树”。我在之前的文章里也反复提过这棵树,它大致长这样:

  • 底层是数据工具能力:SQL、Python、Excel、BI工具,这些是你的双手。
  • 中层是数据分析和统计基础:描述统计、推断统计、AB测试、常用的数据建模方法,这些是你的思维方式。
  • 上层是业务理解和沟通能力:能听懂业务方的需求,能把数据结论翻译成业务语言,能推动决策落地。

笔试考察的主要是前两层。但如果你想在数据分析这条路上走得远,第三层才是真正的分水岭。从笔试第一天开始,就试着带着“业务视角”去看每道题:这个分析结果出来之后,业务方能做什么?做了之后对哪个指标有帮助?这种思考习惯,时间久了会成为你区别于其他候选人的核心优势。

4. 常见问题与考场避坑实战记录

4.1 笔试中的五大高频翻车现场

我在跟很多参加过数据分析笔试的朋友复盘时,发现大家踩的坑其实是高度相似的。整理成清单,大家对照着检查自己有没有中招:

第一,读题不仔细,忽略时间范围、去重条件等关键字。很多SQL题的表里本身没有去重,但业务上同一用户可能会产生多条记录,题目要求“计算每个用户的首次下单时间”,你直接写MIN(order_time)就好,但如果题目说“一个用户一天内可能下多单,求每个用户每天的订单量”,你忘了DISTINCT或GROUP BY的具体内容,结果就直接错了。

第二,Python题里只用原生语法硬写,浪费大量时间。笔试里的Python题往往允许使用Pandas和NumPy,但有些人习惯了刷算法题,看到列表就for循环套for循环。不是说不可以,而是在时间有限的情况下,Pandas一行代码能解决的问题,写20行循环容易出错还费时。

第三,统计题对概念的理解停留在表面。比如p值大小和“显著”的关系,很多人只知道p<0.05就显著,却说不清为什么,也说不清0.05这个阈值代表什么。选择题里一旦把概念换了种问法,就完全懵掉。

第四,业务题只给结论不给分析过程。有些同学业务题写得特别“干”,直接说“转化率下降是因为价格贵了”,完全没有分层拆解、没有假设验证、没有数据支撑。这样的回答在面试官眼里几乎没有信息量。

第五,时间分配严重失衡。前30分钟用在一道SQL上死磕,结果后面Python和案例分析都没时间写。笔试不像面试,没有追问机会,你把时间花在哪里,分数就出在哪里。合理的时间分配本身就是一种能力。

4.2 独家避坑技巧:如何让阅卷人眼前一亮

这里分享几个我自己实践下来特别有效的手段,篇幅有限,只讲最核心的三点:

第一,SQL题里写明思路注释。笔试的阅卷现在大多是系统辅助+人工抽查,如果你在SQL注释里写清楚“这里的逻辑是先分组聚合再排名,取每组前三”,阅卷人一眼就能看出你有清晰的工程思维。当然前提是你的SQL本身能跑通,注释是锦上添花,不能用来掩盖错误。

第二,业务题里画分析框架图。这可能是笔试里最容易被低估的技巧。很多同学只知道写文字,但如果你能在回答里用简单的框架图或思维导图呈现拆解逻辑,绝对能让阅卷人在一堆文字答案中多停留几秒。这里注意,笔试是线上还是线下,是否支持画图,如果支持就大胆用。

第三,回答里主动交代你做的假设。笔试题目往往信息不足,比如业务分析题里没有给你详细的数据明细,那你完全可以在开头写一句“当前信息有限,我先做以下假设:第一,点击率定义是点击PV/曝光PV;第二,本分析暂不考虑节假日的影响”。这种主动管理分析边界的行为,是高级分析师的典型特征。

4.3 如果你笔试没发挥好,该怎么办

笔试没考好,不代表这轮招聘就彻底结束了,但这个“不代表”是有条件的。第一个条件是你要学会复盘,搞明白自己到底是知识点欠缺,还是时间分配失误,还是临场心态崩了。不同原因对应完全不同的补救策略。

第二个条件是积极争取面试机会。携程这类大厂的面试筛选不完全依赖笔试成绩,简历上的项目经验、实习经历同样是重要的判断依据。如果你有特别匹配的项目,笔试成绩一般,也有可能被捞起来面一轮。当然这里不建议大家走什么“偏门路子”,把心思放在实力和复盘上永远是最稳的。

第三个条件是把眼光放长远。春招笔试只是你职业生涯里的一个小节点,后续还有暑期实习、秋招,还有你工作三五年后回头看根本不值一提的很多关卡。笔试没考好当然会遗憾,但真正限制你的不是这次的失利,而是失利后你选择继续往前走,还是原地叹气。

5. 写在最后的一点个人体会

从我这些年帮人改简历、做模拟面试的经验来看,能通过携程数据分析工程师笔试的人,往往不是基础最扎实的那个,而是“心态最稳”的那个。他们懂得在有限时间内做取舍,懂得用工程思维补全题目信息,更懂得把自己的分析思路清晰外化给阅卷人。

这次2025春招第一批笔试已经过去了,无论你发挥如何,都别过多纠结。接下来要做的,是根据自己真实的情况,把SQL窗口函数、Pandas处理、统计概念、业务拆解框架这四块再过一遍。哪怕只是每天多练一道题,等到面试通知到来的时候,你也会比今天的自己更从容一点。

最后再分享一个小技巧:考前那一晚别刷难题了,把写过的代码注释、复盘笔记、思考框架翻一遍就睡。数据岗位考察的不只是你会什么,更是你在压力下能稳定输出多少。好好休息,比什么都管用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询