公司动态
校招笔试中的数据分析思维:从指标拆解到SQL实战
2018年的互联网校招季很多同学在牛客网上刷到过这套卷子——欢聚时代产品经理、数据分析、游戏运营、市场专员四个岗位共用一份A卷。当时不少人第一反应是“这公司是不是在偷懒一份题打天下”但等你真正坐下来做完会发现这套题其实传递了一个很清晰的信号在直播、音视频社交这类强数据驱动的业务里数据分析能力早已不是数据分析岗的专属而是所有运营和产品岗位的基本功。我作为当年参加过这场笔试的候选人后来又参与过校招命题和评分回看这份卷子依然觉得它的出题思路很值得拆一拆——尤其是如果你是今年准备卷算法、卷数据、卷产品的应届生这套题的底层逻辑到现在也没过时。这篇文章我不会去复述原题答案因为校招题基本不会公开标准解答我重点做三件事一是还原这套卷子的出题逻辑和岗位定位二是把数据分析方向的核心考点逐类拆开讲透三是给出一套可以直接套用的解题框架和避坑清单。内容适配准备产品经理、数据分析、游戏运营、市场/投放类校招岗位的同学也适合刚入行想补业务分析基本功的职场新人。1. 整张试卷的出题逻辑与岗位定位1.1 为什么四个岗位共用一张卷先说一个很多人没搞清楚的事情共用一张卷不等于四个岗位的题目完全相同。真实情况通常是“公共题 分岗位专业题”的结构。公共题覆盖逻辑推理、数字敏感度和基础业务常识这部分大家做同一套后面的专业题才是分叉点产品经理会碰到需求分析和功能设计数据分析师会遇到统计和SQL题游戏运营会撞上留存和付费类场景市场专员则要处理投放成本和转化率计算。出题方这么设计是有现实考量的。欢聚时代的业务线很宽直播、短视频、游戏、社交产品并行招聘量又大初筛阶段必须用统一标准快速过滤掉一批人。共用一份卷子核心目标是先在“基础素质”维度上对齐——你逻辑通不通、能不能读懂数据、有没有基本的商业感觉——再谈专业能力。这一层筛选逻辑其实和很多大厂校招一致笔试只是粗筛面试才是细看。你在这份卷子上看到的不是“谁更懂直播”而是“谁更适合作为一张白纸进入这个行业”。另外还有个隐含目的横向对比方便。同一个标准下四个岗位的候选人分数可以直接比较HR在岗位调剂时也有依据。比如你报的是数据分析师但分数结构里逻辑题特别突出、专业题一般HR可能会把你调到市场或运营岗再评估。所以做这套题时别只盯着自己报的那个岗位公共题的表现同样决定了你后续被怎么归类。1.2 从题型设置反推考察能力模型我自己拿到卷子后先翻了一遍归纳下来大概有四类题型基础逻辑与数字推理题包括数列、图形规律、简单概率计算这部分是最容易拉开分差的地方因为很多文科背景的同学平时很少练这类题考场上会卡得很久。数据阅读理解题一般会给一张业务表格或曲线图让你描述数据变化并给出原因假设。这里考的不是计算能力而是你拿到数据后有没有“提问意识”。业务场景分析题一句话描述一个业务变化例如“某直播间打赏收入下降15%你怎么分析”需要你写出完整分析思路。这类题没有标准答案拼的是结构化和业务常识。岗位专业题针对不同方向单独出题比如数据分析方向会考SQL和统计概率市场方向会考投放ROI计算。这套题型的核心能力模型可以概括成三层底层是逻辑与数字敏感度中层是数据解读与分析框架顶层才是岗位专业能力。大多数候选人在底层和中层就被筛掉了很少有人是死在顶层专业题上。这其实是个很值得警惕的信号——如果你觉得“我是学统计的SQL也写得溜笔试应该没问题”那你大概会在业务分析题那块栽跟头因为企业要的不是一个计算器而是一个能用数据理解业务的人。2. 数据分析方向核心题型拆解2.1 基础计算与统计思维题先保住基本功分在第一类送分题里最容易丢分的不是难题而是简单指标算错。比如题目问你“某App 8月DAU为120万9月DAU为132万环比增长率是多少”很多人口算120到132觉得涨了12万于是写12%。但正确的计算方式是132 - 120÷ 120 10%。这种题目考的不是数学而是你脑子是否清醒。校招笔试里出现这种题本质上是在筛选对数字敏感的人。备考这块没有捷径就是把常用指标的定义和计算公式练成肌肉记忆环比增速、同比增速、渗透率、留存率、流失率、ARPU每用户平均收入、ARPPU每付费用户平均收入、LTV用户生命周期价值、CAC用户获取成本、GMV商品交易总额、转化率、复购率。这些指标在不同的岗位里出场频率略有差异但数据分析岗几乎全都会碰到。除了计算统计思维题也会占一定比例。最常考的是概率相关的送分题比如“一枚硬币连续抛3次至少出现一次正面的概率”。这种题不少同学知道答案是7/8但如果在“至少出现一次”的理解上犹豫就容易写成1/2。我的建议是考场上遇到统计题先冷静判断事件空间再用补集思维能省不少时间。2.2 SQL与数据提取类题目写不出完整SQL也要写出思路对比近几年的校招笔试现在数据分析岗基本必考SQL而2018年这份卷子其实已经开了头。当时的SQL题难度属于“学会了就简单没学过就是天书”这种。核心考的就是这三板斧SELECT、JOIN、GROUP BY。如果你连这三个关键词的组合都没写过笔试现场基本等于告别这道题。这类题通常是给三张业务表让你统计某类用户的某个指标。我先给一个典型的简化示例你们感受一下假设有三张表user_info表user_id, channel用户来源渠道, reg_date注册日期pay_order表order_id, user_id, pay_amount支付金额, pay_time支付时间live_room表room_id, anchor_id主播ID, category直播分类题目是“统计每个渠道的付费用户数只筛选付费人数超过100人的渠道。”对应的SQL可以写成SELECT user_info.channel, COUNT(DISTINCT user_info.user_id) AS paid_user_cnt FROM user_info JOIN pay_order ON user_info.user_id pay_order.user_id WHERE user_info.reg_date 2018-06-01 GROUP BY user_info.channel HAVING COUNT(DISTINCT user_info.user_id) 100 ORDER BY paid_user_cnt DESC;这里面有几个容易踩的坑。第一一定要用COUNT(DISTINCT ...)因为一个用户可能有多笔付费订单如果不加DISTINCT统计的是订单数而不是用户数。第二JOIN之前想清楚是INNER JOIN还是LEFT JOIN这道题要的是有付费记录的用户所以INNER JOIN没问题如果你想统计全量用户的付费率就得用LEFT JOIN否则没付费的用户会被丢掉。第三HAVING是对分组后的结果过滤而WHERE是对明细数据过滤两者的位置不能换。如果你在笔试现场实在写不出完整的SQL也应该把思路写出来比如清晰地写出“先关联用户表和订单表再按渠道分组最后统计去重用户数”。很多阅卷人不会因为代码全对就给满分但思路能写到这个程度至少能拿一半以上的分数。最怕的是看到SQL题就直接空白那就彻底没戏了。2.3 业务分析案例题的高分思路这类题是整张卷子里区分度最大的部分也是最容易让数据分析方向候选人翻车的地方。题目往往就一句话比如“近一周某直播App的观看总时长下降了10%请分析可能原因并给出建议”。没有标准答案但阅卷人心里有个偏好看你能不能按照“指标定义 → 维度拆解 → 假设验证 → 行动建议”的框架来组织答案。先说一个反面典型很多人拿到题目后直接开始列原因“可能是主播不够多可能是天气好了大家出去玩了也可能是竞品抢人。”这属于没有结构的散点思考就算说中了一两个真实原因也很难拿高分。正确的打开方式是先拆数据维度第一定义清楚“观看总时长下降10%”里到底是MAU月活用户数下降了还是人均观看时长下降了。这两个指标背后对应完全不同的分析路径前者指向用户规模后者指向内容消费深度。第二确定分析维度。常见拆法有新用户/老用户iOS/Android端直播间类型时段地区。没有这些维度的拆解你说出的任何一个原因都是拍脑袋。第三再基于维度提出原因假设。比如“老用户人均观看时长下降”这一点如果成立可以进一步看是不是头部主播的开播时长减少了、推荐策略是否有改动、功能升级是否有bug。最后给出可执行的建议比如优化推荐策略、调整开播激励、回滚版本等。整个答题过程就是一个“从数据到结论再到动作”的漏斗。你在考场上这样写阅卷人扫一眼就会给你贴上“有分析思维”的标签后面再细看你的措辞有没有硬伤。3. 产品经理、游戏运营、市场专员卷中的数据分析考点3.1 产品经理方向指标定义与功能评估产品经理岗位的数据分析题通常不会像数据分析岗那样直接考SQL或统计公式它更关注你有没有“指标思维”。典型的题目是“某直播间上线了粉丝团功能请设计一套数据指标体系来评估这一功能的上线效果。”这种题背后考的不只是你会不会埋点而是你能否分清一级指标、二级指标和过程指标。我当时写这套题的时候采用了一套很通用的框架。核心的一级指标选“粉丝团用户留存率”和“粉丝团用户人均付费金额”这是评估功能有没有黏住用户、有没有带动商业化的直接证据。二级指标可以拆成“粉丝团开通率”“粉丝团成员7日活跃率”“粉丝团用户的送礼频次”等用来解释一级指标为什么会变。过程指标比如“用户从进入直播间到加入粉丝团的操作完成率”则是用于排查产品流程问题。这里有一件事需要特别注意很多新人容易把指标堆得又大又全恨不得把用户所有行为都埋点。但正确的做法是聚焦一个功能的核心指标最好不超过三个否则后期复盘时数据口径会打架反而抓不住重点。笔试时你写得越聚焦越能让阅卷人看出你对“产品与数据联动”的理解。另一个常见的产品经理题目是“一个新功能上线后整体人均时长下降但新功能的使用率很高这个功能算成功还是失败”这类题没有非黑即白的答案考察的是你对业务目标的权衡能力。正确的回答套路是先定义这个功能的核心目标是提升时长还是提升互动再结合使用率、留存、时长等多维数据综合判断最后给出“观察期AB实验”的验证方案。3.2 游戏运营方向留存与付费分析游戏运营方向的题目几乎绕不开留存率和付费这两个话题。当时卷子里有一道特别典型的题“某游戏新版本上线后次日留存从30%下降到25%但7日留存反而上升了可能是什么原因”我后来在面试复盘时发现这道题其实是在考察你是否能区分“结构性变化”和“内容质量变化”。最简单的解释之一是用户结构变化如果新版本投放拉来了大量非精准用户短期留存会被稀释但留下来的人反而是更匹配的重度用户于是7日留存反而更好。另一种可能是版本改动方向影响新版本的新手引导变长导致浅度用户不愿意回访而愿意花时间深度的用户体验变好了。这些都是可以写到答卷上的原因假设关键是你要能顺着“不同用户群体对版本改变的反应不同”这个逻辑来组织答案。游戏运营的数据分析还有个高频考点是付费指标。比如题目给你一组数据“付费用户占总用户的8%ARPPU为26元月流水为208万元。”让你根据需要计算总用户规模或评估付费健康度。这类题考察的是你对ARPU、ARPPU、付费率之间关系的理解流水MAU×ARPUMAU×付费率×ARPPU。无论题目怎么变抓住这个恒等式就能拆出来。我在给这类题目写分析框架时通常还会额外加一个“时间窗口”意识次日留存、7日留存、30日留存分别反映不同周期的问题。次日留存更多和版本质量、玩法认知有关7日留存看的是玩法深度和内容消耗速度30日留存则更受版本更新节奏和社交生态影响。答题时带上这个视角分数往往能高一个档。3.3 市场专员方向投放效果分析市场岗位的题目更喜欢给两组投放数据问你怎么做渠道选择。典型的情况是“A渠道获客成本8元渠道用户次日留存40%日均使用时长25分钟B渠道获客成本12元次日留存50%日均使用时长18分钟。预算有限应该优先选择哪个渠道”第一眼看上去可能很多人会选次留更高的B渠道但这里面的问题是你没有算单位成本的用户质量也没有看长期价值。答题时需要建立“ROI思维”先算单用户成本对应的留存成本成本8元对应40%的次日留存相当于每个次日留存用户的获取成本是8÷0.420元B渠道是12÷0.524元。单纯从留存角度看A渠道看起来反而更划算。但这只是初筛还要结合用户时长、付费率、LTV来综合判断。如果B渠道的用户虽然留存高但日均时长低说明用户黏性未必强这时就要看业务核心目标是拉时长还是拉留存。这个题型的核心其实是“用数据判断资源分配”你要表达出来的是“没有唯一正确答案但有一套决策标准”。我在笔试时会额外提一点如果数据不全我应该向业务方要什么数据才能做更准确判断比如付费率、次月留存、分享率。能写出这层说明你不是一个被动接受数据的人而是在主动搭建分析框架这种素养在市场岗里非常稀缺。4. 实战模拟手把手解一套数据分析笔试题4.1 场景题直播观看时长下降分析为了让大家看完有直观感受我模拟一套符合当年风格的迷你卷按“先场景题、再计算题、最后SQL题”的顺序展开。先看场景题题目某直播App近一周整体观看时长下降10%请设计一套分析方案。我的完整作答思路是这样的先拆指标确定总观看时长DAU×人均观看时长先判断下降主要是DAU掉了还是人均在线时长掉了。如果是DAU下降要看是新增减少还是流失加剧如果是人均时长下降要按内容类型、时段、用户等级进一步拆。再做维度拆解。按新老用户分群看新用户次日留存是否变差按端分看iOS和Android是否都下降按直播间分类看是头部直播间掉了还是长尾分发了问题按时段看是高峰期还是低谷期掉了。针对异常维度提出假设和验证方法。比如老用户人均时长下降需检查推荐算法近期是否有变动对比策略上线前后的时长分布。如果发现头部主播开播时长下降则要看签约主播的排班和激励机制是否出问题。最后给结论和动作建议例如“暂时回滚推荐策略同时与运营协同提升头部主播的开播频次”。这套框架在笔试里基本适用于所有“数据异常类”问题只要把业务关键词替换一下就能复用。写的时候要注意假设不要只写一个至少要两三个有逻辑分层的假设否则说服力不够。4.2 计算题留存率与ARPU值模拟题某产品1月新增用户10万人这批用户中2月仍有2.4万人活跃3月仍有1.8万人活跃。请计算该批用户的次月留存率、两月留存率并算出一月新增用户在2月的ARPU值已知该批用户在2月贡献流水为38万元。这道题有几个关键点需要注意。留存率的分母永远是“基期新增用户数”所以次月留存率2.4万÷10万24%两月留存率1.8万÷10万18%。这里很多人会犯一个错误把两月留存算成1.8万÷2.4万75%这是不合理的留存率一定以基期新增用户为分母。ARPU值的计算是流水除以活跃用户数即38万÷2.4万≈15.83元。注意ARPU的分母用的是当期活跃用户而不是期初新增用户。如果题目问的是“每新增用户平均收入”分母才是10万也就是3.8元这个叫ARPPU的变体需要根据题目语境灵活判断。我在做这类题时习惯先把公式写在草稿纸上再代入数据一方面是为了减少计算失误另一方面是留给阅卷老师一个“我知道公式”的得分点。校招笔试的评分通常按要点给分过程分很重要不能只写最后的结果。4.3 SQL题多表关联与分组统计模拟题现有三张表user表(user_id, reg_time)、order表(order_id, user_id, pay_time, amount)、live表(room_id, anchor_id, start_time)。请写SQL统计每个主播的付费观众中在开播后30分钟内完成首次付费的观众比例。这是一道相对进阶的SQL题考的不只是连表还有时间函数和“首次付费”的逻辑处理。我第一次做这道题时卡在“首次付费”这个条件上很久后来才理清思路。解题拆成三步第一步先取每个用户的首次付费时间用窗口函数可以写SELECT user_id, MIN(pay_time) AS first_pay_time FROM order GROUP BY user_id;第二步把用户表、订单表、直播表关联起来这里要先搞清楚“每个主播的付费观众”是什么样的一个用户可能在多个直播间付费因此这里的“付费观众”应该按主播维度去重。第三步判断这次付费是否发生在该用户观看的某场直播开播后30分钟内。因为用户可能在多场直播间付费这里需要关联live表和首次付费时间。完整的参考SQL大致如下WITH first_pay AS ( SELECT user_id, MIN(pay_time) AS first_pay_time FROM order GROUP BY user_id ) SELECT live.anchor_id, COUNT(DISTINCT live.user_id) AS pay_user_cnt, COUNT(DISTINCT CASE WHEN first_pay.first_pay_time DATE_ADD(live.start_time, INTERVAL 30 MINUTE) THEN live.user_id END) AS pay_in_30min_cnt, COUNT(DISTINCT CASE WHEN first_pay.first_pay_time DATE_ADD(live.start_time, INTERVAL 30 MINUTE) THEN live.user_id END) / COUNT(DISTINCT live.user_id) AS ratio FROM live JOIN order ON live.room_id order.room_id LEFT JOIN first_pay ON order.user_id first_pay.user_id GROUP BY live.anchor_id;这里有个容易忽略的细节如果同一用户在同一主播的多场直播里付费需要决定是用哪一场直播的开播时间作为时间窗口起点。实际业务中一般取该用户在该主播直播间的首次观看时间对应的场次但笔试只要逻辑自洽即可。我在答卷上会额外注明这个假设这会让阅卷人觉得你考虑事情比较周全。SQL题是很多非科班同学的短板我的建议是考前至少把所有join类型、group by having、窗口函数rank、row_number、min/max over练熟这套组合能覆盖80%以上的笔试场景。5. 笔试中的常见失分点与排查技巧5.1 审题与边界条件90%的低级错误都出在这里我参与批改校招笔试题时发现很多候选人的分数并没有输在能力上而是输在审题上。最典型的一种是“题目问环比增长率你答成了同比增长率”。这种错误最可惜因为不是不会而是没看清题目。我的建议是做题时把题干中的关键限定词圈出来环比、同比、人均、去重用户、当日、累计、截至到某日、包含某条件这些词不圈出来计算时很容易跑偏。还有一种常见问题是忽略边界条件。比如计算留存率时忘记分母排除掉测试账号或异常数据统计付费用户时没有过滤掉退款订单。笔试题目里虽然不一定有这些坑但你主动在答案或注释里写出“假设过滤测试数据”会让人感觉你很有实战经验这算是隐性加分项。5.2 答题结构规范分析题不先搭框架等于裸奔对于分析案例题、开放设计题最忌讳的就是想到哪写到哪。一张卷子的阅卷时间可能只有几分钟你没结构的答案在阅卷人眼里就是一坨文字。正确做法是先在草稿纸上列一个极简框架我一般用“问题定义 → 指标拆解 → 维度拆解 → 假设验证 → 结论建议”这个五段结构。每写一步不要只写一句话至少要有“定义 举例 为什么这么做”的层次。比如指标拆解这一步不能只写“拆分用户维度”要具体写“看新老用户的次日留存差异因为新用户对新手引导更敏感老用户更受功能变化影响”。这种细节越多答案越充实分数自然越高。还有一点答题时字数和篇幅也需要注意。写得太短说明思路没打开写得太长又会让阅卷人抓不住重点。一般分析类题目控制在300到500字就够了每个要点用加粗或分段突出方便阅卷人定位。5.3 时间分配策略先拿稳基础分再啃硬骨头校招笔试题量大、时间紧很多人会卡在前面的逻辑推理题上导致后面的专业题草草了事。我的经验是拿到卷子先快速浏览一遍按“会做的题 有把握的题 不确定的题 不会的题”的优先级来做。基础计算题和SQL题属于“会做就一定要拿满分”的部分值得多花时间检查开放分析题没有绝对错误但也不值得写满一个小时。给大家一个参考时间分配如果整场笔试是90分钟公共题和逻辑题建议控制45分钟以内专业题留35分钟最后10分钟用来检查计算类和SQL类的题目。不要在一道数字推理题上死磕超过5分钟跳过去的题如果最后有时间再回来切忌在一棵树上吊死。另外可以多用草稿纸列“检查清单”——每做完一道计算题回头看一眼单位、百分比符号、去重条件是否写对了。这些细节看着不起眼但往往决定了你是60分还是80分。我自己当年做这套题最大的收获其实不是最后通过笔试而是意识到校招笔试真正想筛掉的不是能力不够的人而是思路混乱的人。后来我参与校招评分也有同样的感受同等条件下逻辑清晰、能用数据说话、答题有结构的候选人无论报哪个岗位得分都不会低。准备这类笔试与其花大量时间去背所谓标准答案不如把常用指标的计算方式、SQL的三大件、以及那套“问题定义 → 指标拆解 → 维度拆解 → 假设验证 → 结论建议”的分析框架练成肌肉记忆考场上你会比大部分人多拿不少分。最后再分享一个小技巧考前找一套往年真题做限时模拟严格按照考试时间来经历一次才发现时间不够用才是最大的敌人能提前适应这个节奏你就已经跑赢了一半对手。