尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

途虎养车数据分析笔试复盘:SQL、AB实验与业务案例全拆解

途虎养车数据分析笔试复盘:SQL、AB实验与业务案例全拆解 去年秋招我集中刷了一批数据分析岗的笔试题途虎养车2023秋招数据分析笔试试卷B是我印象里比较特别的一套。不是说它题目有多难而是它把“汽车后市场”的业务细节塞进了每一道题里——你要是纯把它当SQL和Python考试来做大概率会栽在业务分析那道大题上。这篇复盘我会从试卷结构、考点逻辑、典型题解法和备考策略几个维度拆开讲给后面准备类似岗位笔试的同学做个参考。1. 拿到试卷的第一感觉它想筛的不是“工具人”途虎这套试卷B整体给我的观感是它分明在招一个“懂业务的查数工程师”而不是纯粹的算法选手。整张卷子大概是五道大题考MySQL、Python/Pandas、统计概率和业务案例题限时90分钟。题目量不算大但每道题都带着具体的业务场景。先说题型安排。SQL部分给了两张表一张是订单表一张是门店表字段设计带着明显的汽车服务行业特征像“工单号”“SKU品类”“保养项目”“门店城市等级”这类字段。Python部分给的是一个“用户浏览-下单转化”的模拟数据集要求做数据清洗、漏斗分析和简单可视化结论。统计概率题考了一个AB实验样本量估算和一个留存率的置信区间问题。最后一道业务题占了整张试卷将近三分之一的分值材料是“某城市门店保养订单连续两个月下滑需要你给出诊断思路和提升方案”。如果你的复习方向只是“刷LeetCode SQL题 背Pandas API”这套卷子会让你觉得使不上劲——单纯的语法题占比很低更多是“给定一个真实业务问题你能不能拆成可计算的口径、写对代码、并且把结论讲清楚”。说白了它筛的是能直接上手干活的人。我个人做完的感受是途虎对于数据分析师的定位更偏向“业务侧的决策支持者”而不是数据仓库团队那种纯技术岗。这也解释了为什么业务案例题压轴且占分最高。2. 途虎的业务模型决定了考点侧重想要把这份试卷答到点子上得先理解途虎这家公司到底靠什么赚钱以及它的数据分析师日常在分析什么。这不是泛泛的行业背景而是直接影响你答题时“用什么框架拆解问题”的关键。途虎做的是汽车后市场核心业务链条可以拆成三块。第一块是商品零售轮胎、机油、蓄电池、易损件这些标准品的线上销售毛利相对透明主要靠供应链效率和价格优势。第二块是到店服务用户线上下单后到合作门店完成安装、保养、维修这个环节的体验直接决定复购率和口碑。第三块是会员和增值服务像年检代办、车险、二手车、金融服务等起到提升用户生命周期价值的作用。这三块业务对应到数据分析的日常场景就会产生几类高频分析需求订单量预测库存和门店排班要用、品类销售结构分析轮胎和保养件是核心SKU、门店运营效率分析履约时效、工位利用率、用户等候时长、用户生命周期分析新客获取、首单转化、复购间隔、流失预警。于是你会发现试卷里的字段设计和问题场景几乎全都围绕这些业务模块展开。举个例子订单表里有“下单时间”和“预约到店时间”两个字段明面上是SQL分组统计的练手字段但它背后实际对应的是“线上购买-线下履约”这个途虎特有的业务模式。如果你答分组统计时注意到了两个时间字段之间的间隔甚至在业务题里主动提到“预约履约率”“到店等待时长”这些指标阅卷人会一眼看出你理解这家公司的生意——这就是能拉开差距的地方。3. SQL题不是考语法是考业务逻辑和查数准确性试卷B里的SQL题一共三小问难度整体适中但考察点很精准。第一问是这么个意思统计每个城市等级一二三线城市下各SKU品类的订单量和GMV要求按GMV降序排列。这题考的是基础分组聚合加排序语法上没什么好说的但有几个细节值得注意。城市等级在门店表里而不是订单表里需要做表关联这个绝大部分人都能反应过来。但字段名如果出现大小写不一致或者前后空格就得清洗。另外GMV计算里是否要排除退款订单题干如果没有明说建议写清“剔除已退款订单”并在注释里说明——这个处理方式能体现你对业务口径的理解。第二问是查“每个门店最近30天内有订单的会员数”。看到“最近30天”就要条件反射地想到日期函数不要用固定日期字符串去写而是用DATE_SUB(CURDATE(), INTERVAL 30 DAY)这种相对日期。我当时还额外注意到了一件事一个用户可能在同一天内下多个订单所以在计数前必须加DISTINCT关键字否则会员数会被重复计算。这种“数据陷阱”在真实业务里非常常见笔试就是看你能不能发现。第三问稍微有点绕考的是“订单金额排名前10%的门店里保养类订单的占比”。写这类题的关键是合理使用窗口函数WITH ranked_stores AS ( SELECT store_id, SUM(order_amount) AS total_gmv, PERCENT_RANK() OVER (ORDER BY SUM(order_amount) DESC) AS gmv_rank FROM orders GROUP BY store_id ) SELECT COUNT(DISTINCT o.order_id) AS maintenance_orders, COUNT(DISTINCT o.order_id) / NULLIF(COUNT(DISTINCT all_orders.order_id), 0) AS maintenance_ratio FROM orders o JOIN ranked_stores rs ON o.store_id rs.store_id WHERE rs.gmv_rank 0.1;上面这个只是一个常规解法思路实际作答时你还需要结合字段定义调整关联逻辑。我在这里想强调的是窗口函数在数据分析笔试中的出现频率极高比什么递归查询、复杂存储过程重要得多。ROW_NUMBER、RANK、DENSE_RANK、LAG/LEAD、PERCENT_RANK这五个最好做到闭上眼能默写。表格化总结一下这套SQL题的核心考点和建议处理方式题目真实考点常见坑建议写法/策略城市等级×品类GMVJOIN、聚合、排序字段脏数据、退款单先清洗再聚合口径注明30天内有订单的会员数日期函数、DISTINCT同人同天多单重复计数DATE_SUB相对日期DISTINCT去重头部门店保养占比窗口函数、SQL逻辑嵌套不会用排名窗口函数子查询或CTE拆解先聚合再排名要说这套SQL题最大的特色我觉得是每一问都要求你基于真实的业务表结构去写而不是给你一张教材风格的员工表和部门表。我记得场次里有同学在群里吐槽说看到“工单号”这个字段第一反应不知道该怎么关联其实就是没理解工单表在订单流程里的位置——一个订单对应一次服务履约工单号和订单号是多对一或一对一关系。这种“厂商业务知识”课本上没有只能靠平时多接触业务常识来判断。4. Python与统计概率笔试里真正拉开分差的部分Python题目给了一个用户行为日志的数据集大概包括用户ID、访问时间、浏览页面类型、是否下单、下单金额这些字段。要求做三件事清洗数据处理缺失值和异常时间戳、计算各页面类型的浏览到下单转化漏斗、输出结论。数据清洗部分最典型的坑是同一用户ID存在不同大小写格式比如U123abc和u123ABC这种问题会在用groupby做统计时被静默地当成两个用户导致转化率分母被放大。解决办法比较粗暴——统一转成小写再处理。时间戳字段里混合了2023-09-01 12:30:00和2023/09/01 12:30:00两种格式用pd.to_datetime传format参数可以高效解析。漏斗计算这步其实不难但很多人会在“口径”上翻车。试卷里明确写了“浏览页面类型”是一类综合标记不等于页面访问顺序。也就是说你应该按用户维度定义“是否浏览过该类型页面”统计去重用户数而不是简单统计页面PV再除。我给的代码如下# 按用户和页面类型去重计算各层人数 funnel ( df.drop_duplicates([user_id, page_type]) .groupby(page_type, as_indexFalse) .agg(users(user_id, nunique)) .sort_values(users, ascendingFalse) ) funnel[conv_rate] funnel[users] / funnel[users].iloc[0]这题其实想提醒你的是数据分析的Python笔试重点不是炫技而是你的代码有没有正确表达业务口径的逻辑。遇到转化类指标先想清楚分子分母各自应该是什么、需不需要去重再动手写。统计概率部分的题目比较经典一个付费会员购买率提升的AB实验对照组转化率8%实验组目标提升到9%问在显著性水平0.05、统计功效80%下每组最小样本量是多少。这个直接用常规样本量公式算大概每组需要一万四千多用户。import math from scipy import stats p1 0.08 p2 0.09 alpha 0.05 power 0.8 z_alpha stats.norm.ppf(1 - alpha / 2) z_beta stats.norm.ppf(power) # pooled proportion p_pool (p1 p2) / 2 n math.ceil(2 * p_pool * (1 - p_pool) * (z_alpha z_beta) ** 2 / ((p2 - p1) ** 2))第二问给了用户次月留存率的样本数据要求计算95%置信区间。看起来是个公式题但有一个细节留存率的样本量是以“次月仍有活跃行为”为分母还是“当月所有注册用户”为分母题目材料里的描述直接影响你成败要仔细读题。这类题还容易搞混标准误是要除样本量还是除样本量减一建议平时把公式的来龙去脉捋清楚不要死记。这里我多说一句。很多人在复习统计概率时喜欢背“95%置信区间对应1.96”这种数字但这只能解题不能帮你理解。你真正需要在笔试和面试里展现的是为什么AB实验要用显著性水平而不是只看转化率差异为什么功效要设在80%而不是越高越好想清楚这两点面对这类题目你就能举一反三而不是换个数就懵。5. 业务案例分析题怎么答才能既接地气又有专业度最后一道业务大题的材料是主干“某二线城市门店保养订单量连续两个月下滑结合数据表现和业务场景给出诊断思路、分析框架和提升方案。”这道题分值最高也是整套试卷里最考验数据分析师综合素质的部分。这道题没有标准答案阅卷人想看的是你的分析框架是否完整、逻辑链条是否闭合、方案是否可落地。我当时的答题思路分了三层。第一层是数据诊断说的是拿到下滑结论后不急着给方案先做事前排查下降是不是真实且普遍的如果只是个别门店或个别品类下降那问题性质完全不同如果全城整体下滑再去看是新增用户变少了还是老用户复购变少了复购变少了是首单后的次月流失还是履约体验出问题导致用户转向其他平台。这里面每一步都要给出口径和对应指标比如前置指标可以用“预约到店转化率”“预约取消率”后置指标可以用“次月复购率”“NPS评分”。第二层是原因假设分析也就是把可能的下滑原因列成假设清单逐项验证。对途虎这类线上到店模式清单里至少应该有竞对价格战导致的价格敏感用户流失查订单均价的变动和流失用户的客单价分布、门店服务产能出问题查预约排队的平均等待时长看是不是“约得上但等太久”赶走了用户、营销投放效果衰减查各渠道新客获取成本和首单转化率、季节性因素对比去年同期数据判断是否只是正常的周期波动。这一层考验的是你对业务的理解深度恰恰是拉开差距的地方。第三层是给出验证方法和提升方案。这里我特别想提醒的是业务方案不能只写方向要写验证方法。比如你判断是“用户等太久导致流失”怎么验证可以对比“高等待时长门店”和“低等待时长门店”的次月复购率差异也可以做个小规模AB实验给部分用户推送“预约免等待”权益看对复购率的影响。方案部分同理从“短期止血”和“中长期优化”两个维度写短期可以从短信召回、优惠券刺激、预约提醒优化入手中长期则需要优化门店承载容量、增加技师排班、甚至调整预约机制。这一题最怕的是答成“我要提升用户满意度所以我会优化产品体验、加强运营活动、做好用户关怀”这种空话。阅卷人最想看到的是你面对一个模糊问题时能把大问题拆成可执行、可验证的小问题的能力。6. 从这套试卷反推出来的备考策略与答题节奏做完这套卷子之后我最大的收获不是某个SQL函数的用法而是对“数据分析笔试到底在考什么”有了更清晰的感知。如果后面还有同学要准备类似的秋招笔试我觉得有几条备考经验可以借鉴。第一SQL复习要以业务场景题为主而不是语法题。高频考点集中在多表JOIN、窗口函数、日期处理、去重计数四类题型上。每刷一道题尽量联想一下这个考点在真实业务里对应什么分析场景。比如LAG函数可以算环比变化COUNT(DISTINCT)配合GROUP BY可以算复购人数这些联想比刷题本身更有用。第二Python/Pandas建议准备一套自己的“常用处理模板”包括读取数据、类型转换、缺失值处理、去重、透视、日期处理这几步。笔试时间通常紧张如果你每次都要现场回忆pd.to_datetime的写法很容易做不完。建议把常用的代码片段提前在本地跑通变成肌肉记忆。第三统计概率的重点是AB实验的整套逻辑从假设检验到样本量计算再到显著性判断它是一个完整链条不要在单一公式上花太多时间。途虎这套卷子在这个部分的立意很清晰数据分析师不是统计学研究员但你至少要能给业务方解释清楚“为什么这个实验结论是可信的”。时间分配上我的建议是SQL题控制在25分钟以内Python题控制在20分钟以内统计题控制在15分钟以内留下至少30分钟给业务大题。因为业务题不仅写起来费时间而且是阅卷人重点看的部分值得用充足时间把逻辑写完整。如果你前面卡住了果断先跳过回头再补。回头再看这套试卷它本质上就是在模拟一个途虎数据分析师的真实工作场景从数仓里取数算指标从日志数据里看转化漏斗用统计方法评估业务改动最后把分析结论整理成业务方可执行的方案。你不需要是某个技术方向的专家但你必须是个“能闭环的人”——能把一个模糊的业务问题变成清晰的数据口径、严谨的分析过程、可落地的业务建议。这种能力光靠刷题刷不出来更多是靠平时多接触真实业务分析场景、多主动思考“为什么这个指标会变”来积累。如果这份复盘能帮你在下一次笔试前建立清晰的答题思路我的目的就达到了。
返回列表