2023春招数据分析岗笔试经验:SQL、Python与业务题全解析

发布时间:2026/9/1 5:48:18
2023春招数据分析岗笔试经验:SQL、Python与业务题全解析 春季招聘数据分析岗的笔试向来是场信息仗。尤其是“第三批”这种时间靠后的批次很多同学以为岗位少、竞争小实际恰恰相反——前两批积累的候选人没消化完第三批往往是补录和急招岗位的混合体题目难度并不低筛选反而更狠。我参加的就是2023年度小满春招数据分析岗第三批笔试整体感受是考察范围宽、业务场景多、题目设计贴近真实工作流想靠临时刷题蒙混过关基本没戏。这篇文章把笔试题型、考察逻辑、做题策略、踩坑复盘全部写透给正在准备数据分析岗校招或实习的同学一个完整参考。先说清楚这套笔试适合谁看。如果你是准备投递数据分析岗的应届生、转行做数据相关工作的职场新人或者已经收到笔试通知、想快速了解考察重点的候选人这篇文章可以直接当备考清单用。内容覆盖SQL、Python、Excel、统计基础、机器学习概念、业务情景题这几大块全部是真刀真枪考过的东西不是网上那种“常见面试题集锦”能比的。我在实际考试中遇到的最大冲击是题目并不难但题量大、时间紧每一道题都在逼你用最短路径拿分。这和平时刷LeetCode、做Kaggle的节奏完全不同。接下来我把整个笔试过程拆开讲从考察逻辑到具体题型再到每类题的应对策略逐步还原现场。1. 笔试整体设计与考察方向拆解1.1 这批笔试的定位和筛选逻辑第三批笔试在整条招聘链路里的定位用一句话概括就是“快速过滤不合格者精准锁定可培养者”。和第一批铺开筛选、考基础概念不同第三批的题目明显更看重实际动手能力和业务理解力因为这时候HR和业务部门已经对候选人有初步画像了笔试的目的是验证“你是不是真的能干活的”。从题型设置能看出这个逻辑。整张卷子大概分四块SQL实操题、Python/Excel数据处理题、统计与机器学习概念题、业务情景分析题。前两块占了差不多60%的分值这和很多同学复习时死磕统计公式、机器学习算法的习惯正好相反。我在考场上就发现SQL和Python的题目都是给一段脏数据、一个业务问题要求现场写查询或脚本处理数据考察的是真实工作里天天要用的能力而不是书本上的理论条条框框。这里要特别提醒一个容易忽略的点业务情景题的分值权重比想象中高。往年很多数据分析岗笔试的题就是A/B测试、留存分析、漏斗转化这些固定套路但这套卷子把业务题放在了最后题面长、信息量大乍一看像阅读理解其实考的是指标拆解和逻辑推导能力。我当时差点因为前面SQL题耗时太多导致业务题草草作答这是个很惨痛的教训。1.2 题型分布与时间分配建议先给出一份我记忆中的题型分布和分值占比虽然是回忆版本但基本能还原现场情况题型模块题量建议用时分值占比难度感受SQL实操题4题40分钟30%中高涉及多表关联和窗口函数Python/Excel数据处理3题30分钟25%中等偏pandas和透视表操作统计与机器学习概念6题20分钟20%基础但覆盖面广业务情景分析2大题30分钟25%高需要完整分析框架看到这个分布你可能已经发现了整场考试120分钟但SQL和业务题就占了70分钟这两块是绝对的拿分重点。我的建议很明确优先保证SQL和业务题统计概念题靠平时积累快速回答Python/Excel题控制在30分钟内完成不要为了追求完美代码浪费太多时间。注意不同批次的题型分布可能有微调比如有的同学反映第三批增加了R语言或SPSS的题目。如果邮件的考试说明里提到了具体工具范围务必按说明准备不要只看往年的经验帖。1.3 答题环境和心态准备笔试是线上双机位进行考试系统内置了代码编译器和文本编辑器可以切到本地IDE写代码再粘贴上去。这听起来挺宽松但实际操作上有个坑考试系统的代码编译器语法检查很弱同样的代码在本地跑通粘贴上去可能因为缩进或编码问题报错。我当时就遇到一道Python题本地pandas处理完全正常贴到系统里跑出了编码错误被迫临时改用SQL逻辑绕过浪费了大概8分钟。关于心态我的经验是遇到完全没思路的题直接跳过先做有把握的最后回头补。整套笔试的难度曲线不是线性递增的而是中间穿插高难度的干扰题千万别被一道题拖死。记住一个核心原则数据分析岗笔试考的是“在有限时间内用数据解决业务问题”的能力不是竞赛式的一题定胜负。2. SQL与数据查询实操题多表关联和窗口函数是分水岭2.1 基础查询题的高频考点和通用写法SQL实操题在整场笔试里分值最高也是刷人最狠的地方。第一道题通常是送分题考单表查询和聚合函数。比如给一张订单表字段包括订单ID、用户ID、下单时间、订单金额、订单状态然后要求统计每个用户的累计下单金额和订单数量。这类题考察的就是GROUP BY、SUM、COUNT这些基本功只要平时写过SQL基本都能秒答。需要注意的点是题目会故意设置一些数据陷阱比如用户ID为NULL的记录要剔除、订单状态为“已取消”的记录是否计入、同一天多次下单是否算同一笔等。这些细节如果不仔细看题很容易写出“看起来对了但实际结果错误”的SQL。我的建议是写SQL之前先用30秒通读题目条件把过滤条件和分组维度想清楚再动手比写完再反复调试要高效得多。做这类题还有一个经验技巧写完之后用自己的话在注释里解释一遍逻辑比如“先以用户维度聚合订单金额再过滤掉取消状态”。笔试系统通常会“执行并检查结果”但业务方人工复核的时候看到清晰的注释会有加分效果。而且注释本身能帮你发现自己逻辑上的漏洞相当于多一次自查机会。2.2 窗口函数与复杂业务场景从会写到会想真正拉开差距的是第二道和第三道题基本都涉及窗口函数。常见的场景有三种排名、同比环比计算、会话划分。笔试里对排名和同比环比的考察最多比如给定一张门店日销售表要求用窗口函数计算每个门店按日期的销售金额排名以及每一个门店当天的销售额较前一天的增长率。这需要同时掌握ROW_NUMBER、LAG两个窗口函数还要能嵌套子查询实现多步计算。我把我当时写的核心SQL结构整理成模板方便大家直接理解思路-- 计算每个门店销售额的日期排名和环比增长率 WITH daily_sales AS ( SELECT store_id, sale_date, SUM(amount) AS total_amount FROM orders WHERE order_status completed GROUP BY store_id, sale_date ) SELECT store_id, sale_date, total_amount, ROW_NUMBER() OVER ( PARTITION BY store_id ORDER BY total_amount DESC ) AS amount_rank, (total_amount - LAG(total_amount, 1) OVER ( PARTITION BY store_id ORDER BY sale_date )) * 1.0 / NULLIF( LAG(total_amount, 1) OVER ( PARTITION BY store_id ORDER BY sale_date ), 0 ) AS day_over_day_rate FROM daily_sales ORDER BY store_id, sale_date;这段代码里有个细节值得展开说计算环比时用NULLIF把分母为0的日期转成NULL避免除零错误。这种细节不会直接决定你SQL能不能跑通但决定你SQL能不能在真实业务数据上稳定运行。业务部门看笔试答卷的时候很看重这种意识因为真实数据一定比题目数据脏得多。会话划分的题比如给一张用户点击日志表要求把用户连续30分钟内的点击归为一次会话这个难度会高出不少。核心思路是用LAG计算每条记录与前一条记录的间隔时间再用SUM函数配合条件判断实现分组标记。这种题在面试中常见在笔试里遇到确实有压力。我个人觉得如果时间不够先把前两问的排名和环比写好第三问留一个清晰的思路描述也比空着强。2.3 我在SQL题上真实踩过的坑复盘这次笔试我在SQL部分犯了两个值得写出来的错误。第一个错误是第一道送分题题目要求剔除订单状态为“已取消”的记录我用的是WHERE order_status ! cancelled OR order_status IS NULL想着把NULL状态也保留但由于表里没有NULL状态这个写法不仅没起作用还显得逻辑混乱如果人工复核反而会留下“对业务不敏感”的印象。正确的做法是直接在WHERE里写WHERE order_status completed明确业务关注的就是已完成订单简洁清楚。第二个错误是排名题里用了GROUP BY和窗口函数嵌套导致分组聚合后再排名的结果和预期不一致。当时想着先按门店聚合再在结果集上排名忽略了窗口函数的执行顺序。正确做法是使用CTE先做聚合再做窗口计算。这个错误让我多花了大概5分钟排查现在写SQL都习惯先把逻辑拆成多步CTE每一步验证一次避免复杂嵌套。这些坑不是个例很多同学在看别人的SQL题解时觉得简单一旦自己动手就各种报错。原因在于纸上写SQL和实际跑SQL之间存在巨大鸿沟表结构、字段类型、数据约束都会影响最终结果。准备笔试的时候最好在本地装好MySQL或者PostgreSQL用真实数据练手而不是只在脑子里过逻辑。3. Python、Excel与业务思维题数据处理能力才是硬通货3.1 Python考察重点和pandas快速处理思路Python题在笔试里占的份额不算最大但因为它和业务情景题结合紧密是很多实操薄弱的同学的失分重灾区。今年这批的Python题没有考算法而是给了一张用户行为表要求写代码完成几件事按用户ID去重、对时间字段做格式化、计算每个用户的平均行为间隔、最后按行为类型做透视表。这活脱脱就是数据分析师日常取数、清洗、汇总的工作流。我的第一反应是用pandas整体思路是read_excel读入数据以后做类型转换再用groupby和agg做聚合。这里有一个很重要的工程细节时间字段的格式化如果直接用pd.to_datetime遇到异常格式会直接报错。更稳妥的办法是加errorscoerce参数把无法解析的时间变成NaT后续再做过滤。类似这种容错处理是笔试评分中区分“熟练工”和“小白”的关键点。下面是我对这类题的通用处理流程也是我在笔试中实际采用的套路import pandas as pd # 1. 读取数据先做全量预览 df pd.read_excel(user_behavior.xlsx) print(df.info()) print(df.head()) # 2. 时间字段统一格式化并保留原始列便于校验 df[event_time] pd.to_datetime(df[event_time], errorscoerce) df df.dropna(subset[event_time]) # 3. 按用户聚合计算行为间隔 behavior_sorted df.sort_values([user_id, event_time]) behavior_sorted[prev_time] behavior_sorted.groupby(user_id)[event_time].shift(1) behavior_sorted[interval] ( behavior_sorted[event_time] - behavior_sorted[prev_time] ).dt.total_seconds() / 60 # 4. 结果透视表 pivot pd.pivot_table( df, indexuser_id, columnsbehavior_type, valuesevent_time, aggfunccount, fill_value0 )这个流程看起来简单但每个步骤都有优化空间。比如第3步里用shift(1)拿到上一次行为时间再计算差值这其实和SQL里的LAG窗口函数是同一个思想。能在笔试中灵活迁移这两种语言的知识点会让你的答题速度明显提升。3.2 Excel数据处理题的核心操作和思路延伸Excel题这次也考了三道小题难度不大但操作熟练度要求比较高。题目背景是给一张销售明细表要求用Excel完成去重统计、条件求和、和创建数据透视表最后产出“各城市各品类的销售额占比”汇总。对于用过Excel的同学这属于基本功但考场上限时操作就暴露了很多平时不起眼的问题。我的建议很直接Excel题别用鼠标点多用快捷键。比如去重用“数据—删除重复值”就比写公式快条件求和用SUMIFS占比这种字段直接在透视表的值字段设置里改成“总计的百分比”一步就能出结果。这些操作如果平时不熟练考场上会特别焦虑因为Excel题和SQL题不一样本地办公软件版本和考试系统版本可能不同菜单位置会变。我这次就遇到了Excel版本从2016变成Office 365界面完全不一样好在核心功能逻辑没变只是找按钮多花了两分钟。Excel题背后真正考察的能力是“对表格数据结构的敏感度”。比如字段名是否规范、数据是否带合并单元格、有没有多余的汇总行这些都会影响透视表的正确性。笔试题目里一般不会故意设置这些干扰但真实业务里天天遇到。我习惯拿到Excel题后先按快捷键CtrlT把数据区域转成“表”这样透视表的数据源会自动扩展后续新增数据也不用重新修改区域。3.3 业务情景题的答题框架指标拆解是核心业务情景题是这套笔试卷子里最考验综合能力的一部分。题面通常是“某App的次日留存率最近两周持续下降请分析可能原因并给出排查思路”这一类。这种题没有标准答案但批卷人心里有一套完整的评估框架你答得有没有条理、能不能落地他们一眼就能看出来。我采用的答题框架是“定义问题—拆解指标—定位原因—提出方案—验证效果”这五步写下来基本就能覆盖所有业务分析题。具体来说首先明确“次日留存率”的定义是取数口径是D1留存还是D0-D1活跃转化然后按用户维度拆解是新用户和老用户分别看还是按不同渠道、不同版本分别看再按行为维度拆解比如用户来App是否完成了核心动作、是否有推送触达等。这里有个容易被忽略的得分点答题时写出“先核对指标口径是否变化”这句话。因为现实工作中数据波动最常见的原因就是口径调整而不是业务真的变差了。我在笔试里就强调了这一点还补充了一句“需要确认埋点是否有变动”后来复盘时觉得这个点应该是加分项。但要注意别为了显得全面就堆砌所有可能原因要有优先级。最好按“最容易验证、影响面最大”的顺序来排让阅卷人看到你的分析是有主次的。4. 统计基础与机器学习概念题高频考点速查与避坑4.1 统计推断和A/B测试理解比背公式更重要统计基础题在这套卷子里不算难但覆盖范围很广。我印象比较深的有三题一道是假设检验里p值的含义一道是两组样本均值差异显著性的判别方法还有一道是A/B实验里最小样本量的计算。这些题如果只看网上的面经很容易背了公式却不懂原理一旦题目换个问法就懵了。先说p值的题。题目给了一个场景新产品推荐算法的点击率比旧算法高0.5个百分点p值为0.03问怎么解读。选项里典型干扰项是“有97%的概率新算法优于旧算法”和“新算法效果显著可以全量上线”。这两个都是错的。p0.03的含义是在“新旧算法效果相同”的原假设成立的前提下观察到当前这么大差异的概率是3%。这个理解必须写清楚因为它侧面考察了候选人对“统计显著不等于业务显著”的认知。关于A/B测试的最小样本量我当时写的是常见的两独立样本比例检验公式这个公式的核心参数是显著水平、统计功效和最小可检测效应。笔试不需要现场推导但需要明白样本量和效应值成反比的关系。我当时直接给出结论“如果要检测更小的提升幅度就需要更大的样本量”用文字说明比硬套公式更稳妥因为人工阅卷更容易理解你的思路。4.2 机器学习常考概念逻辑回归、树模型、无监督学习机器学习概念题通常不会让你现场推导公式但会考察你是否理解模型之间的区别和适用场景。这次的6道题里有逻辑回归和决策树的选择、过拟合的应对方法、K-Means聚类里K值怎么选、还有一道关于特征工程中哑变量编码的题。逻辑回归和决策树的选择题我的思路是分情况判断如果要模型可解释性选逻辑回归如果数据是非线性且特征之间存在复杂交互选树模型如果样本量不大逻辑回归更稳如果特征维度高且有大量缺失值XGBoost这类集成树会更省心。在答案里把这些判断标准写全比只写“选决策树”得分高得多。关于K-Means的K值选择最常用的方法是肘部法则和轮廓系数笔试里写这两个就够。但要注意K-Means本身对初始质心敏感而且只适合凸形分布的数据如果数据分布不规则要考虑DBSCAN这类密度聚类。从题目设置看考K-Means其实是想确认你有没有“无监督学习不适合所有场景”的意识。特征工程那道题相对细问的是类别变量用LabelEncoder还是OneHotEncoder。答案是如果类别有顺序关系比如等级“低中高”用LabelEncoder如果是无顺序的类别比如城市、渠道用OneHotEncoder否则模型会给不存在的顺序关系赋予错误含义。这种题没有难度关键是平时看项目的时候有没有留意过。4.3 概念题的时间管理快速判断不留空白概念题在整个笔试里分值占比不高但胜在数量多做一题就有一题的分。我的策略是每道题尽量在3分钟内给出结论哪怕不确定也先写一个思路而不是留空白。比如有一道题问“逻辑回归中正则化参数C增大时模型复杂度怎么变”我当时记混了但依然写了“C是正则化强度的倒数C增大会减弱正则化模型复杂度上升”逻辑链完整至少能拿到部分分。这类题的时间管理核心是统计和机器学习概念题不要浪费太多时间在犹豫上宁可快速作答把省下的时间留给SQL最后一个大题和业务情景题。因为业务题的回报率远高于概念题一道业务题答好了顶得上三道概念题的分。5. 复盘与后续准备建议5.1 考后趁热打铁的复盘清单笔试结束之后立刻复盘比等结果出来再复盘有效得多。我习惯在考完当天把能回忆的题目按记忆写下来标注哪些题卡壳、哪些题是蒙的、哪些题很有把握。之后对照资料查漏补缺比海量刷题效率高很多。这次的复盘清单我分享出来可以直接参考SQL题是否全部用了窗口函数边界条件NULL、除零、去重是否考虑清楚Python题是否做了异常处理时间字段解析是否加上了errors参数Excel题是否用了透视表和SUMIFS是否把数据区域转成了“表”统计概念题是否都能清晰解释每个公式的适用条件和限制业务情景题是否先定义问题再拆指标是否给出了可落地的排查优先级和验证方案每道题后面标注“会/半会/不会”然后针对“半会”和“不会”的部分做专项突破。用这个方法我大概用了一周时间补齐了SQL窗口函数、业务指标拆解和A/B测试原理三块短板。5.2 给下一批考生的针对性建议经历过这次笔试我最想对准备数据分析岗笔试的同学们说一句不要盲目刷题要把时间花在“业务实操”的组合能力上。单纯刷力扣SQL题、背机器学习公式对笔试的帮助有限因为真实笔试题会把这些知识塞进业务场景里考你不但要懂技术还要知道什么时候用哪个技术。具体建议有三条。第一条SQL窗口函数必须熟练到条件反射级别尤其是LAG、LEAD、ROW_NUMBER、SUM OVER这四种每天练两道真实业务场景题不需要题海但要保证每个函数能独立完整写出来并解释执行顺序。第二条练一套从脏数据到可视化的完整流程可以用本地的MySQL配DBeaver或Tableau Public模拟把数据清洗、聚合、可视化串联起来这是笔试和面试都绕不开的核心能力。第三条做业务情景题时多问“然后呢”也就是永远往前多想一步提出原因后要能给出验证方法和预期结果这能明显提升答案的完整度。最后再说一个实际考试里的个人体会第三批笔试的容错率很低因为前两批已经筛掉了一批人能走到笔试环节的都是有备而来。这时候拼的恰恰是心态和节奏——遇到不熟悉的题别慌先把能拿的分拿到再回头啃硬骨头。数据分析这个岗位说到底考的是你面对一堆不确定信息时能不能快速理出逻辑、动手验证、得出结论。笔试只是这场长期测试的一个切片而已。