校招季又到了,每年这个时候后台都会收到一堆关于数据分析笔试的私信。前阵子翻网盘,正好翻到自己当年准备秋招时整理的一套经典真题——小红书2020校招数据分析笔试题卷四。这套题放在今天看,依然很适合拿来当练手模板,因为它几乎涵盖了数据分析校招笔试的典型模块:SQL查询、概率统计、业务思维、建模基础,甚至在题量分布和时间压力上都和现在的主流笔试高度一致。
这篇文章我会按卷面模块拆开,把我当时的解题思路、踩过的坑、以及现在回看总结出的备战方法一并写清楚。不管你是正在投递数据分析岗位的应届生,还是准备转行做数据方向想找练手材料,这套题的复盘思路都值得参考。需要说明的是,以下内容不是对原卷的逐字复现,而是基于该套试卷的核心考察方向做的题型复盘与解法提炼。
1. 卷面扫描:四个模块的题量权重与过线逻辑
先聊整张卷子的结构。小红书2020校招数据分析笔试的卷四,整体走的是“基础能力+业务思维”双线考察路线,题型大致分成四块:SQL与数据提取题、概率论与数理统计题、业务分析与指标拆解题、机器学习基础概念题。这个结构其实很典型,很多互联网公司校招笔试都是这个套路,差别只在题目难度和业务背景的贴合度上。
1.1 题量分布与建议时间分配
从卷面记忆和同类试卷对比来看,四个模块在题量和分值配比上大致是这样的:
| 模块 | 题量(估算) | 分值占比(估算) | 建议用时 |
|---|---|---|---|
| SQL与数据提取 | 3-4题 | 30% | 40分钟 |
| 概率与统计 | 3题左右 | 25% | 30分钟 |
| 业务分析与指标拆解 | 2-3题 | 30% | 35分钟 |
| 机器学习基础概念 | 2题左右 | 15% | 15分钟 |
我当时是严格按照这个时间预算来控节奏的。为什么?因为这种笔试的最大陷阱不是题目难,而是前面的SQL题太容易让人陷进去,一题写半小时,后面业务题直接没时间看。数据分析岗位的校招笔试,阅卷往往看的是总分,前面再难也只是一两道题的分,业务题才是拉开差距的地方。
1.2 能力权重背后透露的岗位要求
这套模块配比其实在传达一个信息:企业对校招数据分析师的预期,不是招一个“写SQL的机器”,也不是招一个“会背模型的算法工程师”,而是招一个能通过数据理解业务的人。所以你会发现,SQL题占的比重通常不是最高的,业务思维题才是真正决定你能否进入下一面的分水岭。
这个判断不是我事后诸葛,而是我后来复盘自己的笔试分数得出的结论。第一年裸考类似试卷时,我几乎把所有时间砸在SQL上,结果概率统计题只写了一半,业务题连指标定义都没写清楚,直接就挂了。第二年调整策略,先把业务题和概率题能拿的分拿稳,再回头抠SQL细节,效果立竿见影。
2. SQL题的本质:业务表结构才是解题的第一线索
小红书这套卷四里的SQL题,说实话单看语法难度并不高,不涉及太复杂的递归查询或存储过程,主要考察的是日常数据分析最常用的能力:多表关联、聚合分组、去重计数、窗口函数。但为什么很多人还是在这里丢分?因为题面给的业务表往往不是标准的三范式教学表,而是带着冗余字段、空值、重复记录的实战表。
2.1 从题目场景反推表结构
这类题目一般会给你几张表,核心业务通常是:用户表(user_id、注册时间、城市)、内容互动表(笔记id、用户id、互动类型、互动时间)、订单表(订单id、用户id、下单时间、金额)。
有一个高频考点是“留存率计算”。典型的提问方式是这样的:给定用户注册表和互动记录表,请计算2020年1月每个自然周的新用户注册后7日留存率。这类题目考察的不只是JOIN语法,而是你有没有意识到“7日留存”的定义——用户注册后第7天(或注册后0-7天内)发生了任意互动行为。
我当时常用的解法是这样的:
WITH reg AS ( SELECT user_id, DATE(reg_time) AS reg_date, YEARWEEK(reg_time, 1) AS reg_week FROM users WHERE reg_time >= '2020-01-01' AND reg_time < '2020-02-01' ), inter AS ( SELECT DISTINCT user_id, DATE(interact_time) AS act_date FROM interactions WHERE interact_time >= '2020-01-01' AND interact_time < '2020-02-15' ) SELECT reg.reg_week, COUNT(DISTINCT reg.user_id) AS new_users, COUNT(DISTINCT IF(DATEDIFF(inter.act_date, reg.reg_date) = 7, reg.user_id, NULL)) AS d7_retained_users, COUNT(DISTINCT IF(DATEDIFF(inter.act_date, reg.reg_date) = 7, reg.user_id, NULL)) / COUNT(DISTINCT reg.user_id) AS d7_retention_rate FROM reg LEFT JOIN inter ON reg.user_id = inter.user_id GROUP BY reg.reg_week;这里有几个细节值得说明。第一,为什么要用YEARWEEK而不是简单用WEEK?因为跨年的周需要用年份来区分,YEARWEEK(reg_time, 1)表示以周一作为一周起点,这和国内互联网公司常用的自然周口径一致。第二,为什么要先对互动表做DISTINCT?因为同一个用户同一天可能有多条互动记录,如果不先去重,用户会被重复计数。第三,LEFT JOIN保证没有任何互动的用户也能被计入新用户基数,这个外层保留逻辑很关键,很多人写成了INNER JOIN,留存率算出来虚高,一看就是错的。
2.2 窗口函数考察:连续行为判断
另一类高频SQL题是“连续N天活跃用户”或“用户连续消费天数”。这个题目现在互联网笔试里几乎人手一道,卷四里也有类似的变体。核心解法是行号与日期差值的技巧:
WITH user_act AS ( SELECT user_id, DATE(act_time) AS act_date FROM interactions GROUP BY user_id, DATE(act_time) ), ranked AS ( SELECT user_id, act_date, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY act_date) AS rn FROM user_act ) SELECT user_id, COUNT(*) AS continuous_days FROM ranked GROUP BY user_id, DATE_SUB(act_date, INTERVAL rn DAY) HAVING COUNT(*) >= 7;这个解法的原理可以这样理解:把每个用户的活跃日期按时间排序后编号,如果一个用户连续活跃,那么“活跃日期减去编号”这个值是不变的;一旦中间断了,这个差值就会跳变。所以按这个差值分组,就能把连续活跃的段位切出来。我第一次接触这个技巧时觉得特别巧妙,它把“连续性”转化为“分组”问题,跳出了逐行判断的思维定式。
提示:面试官看重的不只是这个答案,而是你是否解释清楚了“为什么日期减行号能识别连续区间”。建议在评论区或面试口述时主动说清这一步推导,会加分不少。
这类窗口函数的题,卷四里常见的还有“对每个用户的互动次数按时间排序取最近3条”“求每个品类的订单金额排名前5的用户”等。核心考点就是RANK、DENSE_RANK、ROW_NUMBER三者的区别,以及PARTITION BY和ORDER BY的组合使用。
2.3 窗口函数容易踩的坑
- 如果要求“每个用户最近3条”,但用户的总记录数不足3条,是否保留该用户?这个边界条件需要根据题意判断,有些题目默认保留,有些则要求剔除。
- 如果互动次数相同,是按什么顺序排的?RANK会跳过并列名次,DENSE_RANK不会,选择哪个取决于业务语义是“排行”还是“序号”。
- 窗口函数不能直接写在WHERE子句里,需要嵌套子查询或CTE,很多人第一次写会在这里报错。
这些坑光靠刷题不够,建议多动手在不同数据量下跑一跑,才能真正理解窗口函数的执行顺序。
3. 概率统计题:不考复杂推导,考快速建模与边界判断
概率统计模块在卷四里有大概三题,难度定位在“能看懂题、能列式、能算对”这个级别,不会出现需要复杂积分的高阶推导。但考察范围比较全,覆盖了古典概型、条件概率、随机变量期望与方差、常见分布、假设检验基础概念等。
3.1 一道典型题型的解法:贝叶斯公式
我记得这套卷子里有一道题,大意是说:某内容平台有普通用户和创作者两类用户,创作者发布高质量笔记的概率明显高于普通用户,现在已知某一篇笔记是高质量笔记,问该笔记来自创作者的概率。这是一个非常经典的贝叶斯应用场景。
这种题型的解题关键,是先把事件定义写清楚:
- A事件:笔记来自创作者
- B事件:笔记是高质量笔记
- 已知:P(A)、P(A的补集)、P(B|A)、P(B|A的补集)
然后套公式:
P(A|B) = P(B|A) * P(A) / P(B)
其中P(B) = P(B|A) * P(A) + P(B|不是A) * P(不是A)。
我当时犯过一个很蠢的错误,就是忘了分母需要展开成全概率公式,直接拿P(B|A)当分母用,结果概率算出来大于1,一眼被面试官看穿。这种错误在真实笔试里特别容易发生,因为时间紧张,人一急就会跳步。我的建议是:每一步都把“已知什么、要求什么、分母怎么来的”写清楚,哪怕只是简略写在草稿纸上,也能避免低级失误。
3.2 期望计算的业务化包装
还有一类题会包装成业务场景:某App每日新增用户数服从泊松分布,平均每天新增100人,问一周内新增用户数超过750人的概率,或者给出某功能上线的AB测试数据,问转化率差值的置信区间是否包含0。前者考常见分布的性质,后者考假设检验和置信区间的基本理解。
关于泊松分布,要记住一个核心性质:可加性。如果每天的新增人数独立且均服从泊松分布,那么一周的总新增人数也服从泊松分布,均值就是700(100乘以7天)。然后可以用正态近似来估算P(X>750),因为均值已经到700量级,泊松分布已经非常接近正态分布。
这类题不会要求你手算精确值,但会考察你是否能给出正确的近似计算思路和标准化的Z值公式。我当时备考时背熟了几个常用分布的均值和方差公式,以及正态分布的几个关键分位点,比如Z=1.96对应95%置信区间,Z=2.58对应99%置信区间。这些数值在校招笔试里出现频率极高,一定要形成肌肉记忆。
3.3 统计概念的选项陷阱
概率统计的选择判断题里,常有一些对概念的模糊表述。例如“p值越小,说明原假设成立的概率越小”。这句话是错的,因为p值不是原假设成立的概率,它是在原假设为真的前提下,观测到当前或更极端数据结果的概率。区分“条件概率”和“假设概率”是一个核心考点。另一个我被坑过的表述是“置信区间越窄,说明样本量越大”,这句话只有在置信水平和其他条件不变的前提下才成立,单独拿出来说就不严谨。
我的经验是:遇到这类文字判断题,第一反应不是去计算,而是去抠每个量词——“条件是什么”“结论是什么”“是否遗漏了前提”。数据分析师日常沟通里,最难的就是把结论讲严谨,笔试里这些选择题实际上就是在模拟这种沟通场景。
4. 业务思考题:从指标异常到归因分析的答题框架
业务分析题是卷四里区分度最大的一块,也是最难临时抱佛脚的。因为这类题没有标准答案,考的是思维框架和信息组织能力。但“没有标准答案”不等于可以乱答,相反,最容易拿高分的答案往往有一个清晰的框架。
4.1 指标异常类题目的三步定位法
卷四里有一道典型的业务题:某平台某天笔记的日均点赞量突然下降了15%,请分析可能原因,并给出数据验证思路。这类题在几乎所有互联网公司笔试里都会出现,答题框架完全可以复用。
第一步:确认数据口径。是先看是不是统计数据延时、埋点缺失、口径调整导致的数据“假下跌”。比如那天有没有上线新版本导致日志上报失败,或者时间口径从自然日改成了某个固定时区。这一步最容易被忽略,但往往是业务线上真正发生过的情况。
第二步:维度拆解。把整体指标按维度拆开,看下跌是全局性的还是结构性的。拆解的维度通常包括:设备端(iOS/Android)、用户分层(新老用户)、内容品类(美食、旅行、时尚)、作者类型(头部创作者/中腰部/普通用户)、地域城市等级、流量来源(推荐页、关注页、搜索)。判断是否是某特定维度出现问题,然后锁定部分,将问题范围缩小。
第三步:原因分析。针对具体维度和具体场景,再结合外部环境与内部动作,提出待验证的假设。内部动作比较典型的有:推荐策略调整、首页改版、互动功能改动、创作者激励策略调整、特殊活动下线、社区内容治理收紧等。外部环境就比较多样了,可能是节假日效应、竞品活动分流、突发事件影响用户讨论热度。
答题时我的结构通常是这样:
- 先说数据口径和真实性排查;
- 然后讲维度拆解思路;
- 接下来列出候选原因假设;
- 最后给出每一个假设对应的数据验证方法。
这套框架其实特别像写一篇简短的“数据分析报告大纲”。我能形成这个习惯,是因为实习时带我的同事教我一句话:分析师的输出不是“数据”,而是“决策建议”。你写出来的每一段分析,都要能回答“所以呢?我们要做什么?”这个问题。哪怕笔试是停留在纸面上的回答,带上了这个意识也会明显更接地气。
4.2 指标体系搭建与漏斗分析
另一类高频业务题是“请你为某个功能设计一套指标体系”或“某电商平台下单转化率低,请分析原因”。这类题目考察的是你对业务的理解程度和数据建模能力。
以“下单转化率低”为例,正向的漏斗拆解比较简单:曝光到点击、点击到商品详情页、详情页到加购、加购到下单、下单到支付。每一步都可以计算转化率,对比历史数据和同期数据找短板。
但我发现很多人的答案在这里就结束了,这是不够的。好的答案应该继续往下拆:
- 纵向:同一个环节,按用户分层拆。新用户和回流用户,注册未登录用户和登录用户,每一步的下沉深度完全不同。
- 横向:同一个环节,按商品和渠道拆。引流渠道的流量质量是否发生变化,商品类目是否偏向了低转化类目。
- 反向:用户流失后去了哪里。是退出App,还是去竞品平台比价,这个信息可以通过搜索行为、浏览竞品的关键词、以及用户反馈来辅助验证。
指标体系搭建的题目也一样,核心是不要堆砌指标。应该从“这个功能要解决什么问题”出发,再定义“什么指标能代表问题被解决”,然后才是“这些指标怎么统计”。我当时总结了一个简单的口诀:先有目标,再有一级指标,再有过程指标,最后才是维度拆分。这个口径用在笔试题里,基本上不会跑偏。
5. 机器学习基础概念题:不是考模型,而是考边界意识
卷四里机器学习相关的题目比重不大,通常只有两三道选择题或简答题,考察的深度也远低于算法岗。但别小看这几道题,它是很多科班生和非科班生的分水岭。非科班同学如果这块完全空白,笔试总分很容易被拉下来一截。
5.1 高频概念清单
从同类试卷和卷四的覆盖范围来看,最容易出现的是这些概念:
- 过拟合与欠拟合的区分,以及对应的处理手段;
- 交叉验证的目的是什么(注意不是提高准确率,而是更稳定地评估模型);
- 精确率和召回率的定义,及其在正负样本不平衡场景下的意义;
- 特征选择与特征提取的区别(选择是保留子集,提取是变换组合);
- L1和L2正则化的区别(L1产生稀疏解,L2控制权重幅度)。
这些知识点不需要你推导公式,但你必须能用业务语言解释清楚。比如精确率和召回率的区别,我会用“搜的内容准不准”和“想找的内容有没有被找到”来帮助记忆;放到推荐场景,精确率就是推给用户的内容与用户偏好的相关性,召回率就是用户感兴趣的内容被推荐出来的比例。
5.2 答题时的边界意识
我印象里有一道类似这样的简答题:在正负样本严重不平衡的情况下,用准确率(Accuracy)评估模型是否合适?如果不合适,应该用什么指标?
这类题的关键不是回答“不合适”,而是分析“为什么不合适”。当负样本占99%,一个什么都不做的“傻瓜模型”把所有样本都判为负样本,准确率也能到99%。这个结论听着很反直觉,但只要想明白准确率的计算公式,就会知道准确率在样本不均衡时会严重失真。
正确的答案应该围绕精确率、召回率、F1值、AUC等指标展开。其中AUC因为不受分类阈值影响,常被用于模型整体排序能力的评估;而精确率与召回率则适合在具体业务场景下做权衡——例如在垃圾内容识别场景,宁可误伤普通内容也不能放掉一条违规内容,所以会偏重召回率;反过来在商品推荐场景,推错了会让用户体验变差,所以更偏重精确率。
我备考时并不会去啃机器学习教材的推导部分,而是把每个概念和“业务意义”绑在一起记。笔试不是搞学术研究,它要的是你能在业务语境里做出正确判断。
6. 复盘备考:时间分配、错题管理与应试心态
最后一章我想聊聊怎么刷这套题、怎么备考,这部分其实比题目本身更值得分享,因为大多数人的问题不是“不会做”,而是“来不及做”或“做了但写不到得分点上”。
6.1 我的答题时间规划
第一次做这套卷四风格的试卷时,我给自己掐了表。当时的结果是:SQL花了55分钟,概率统计花了25分钟,业务题只写了10分钟,建模题完全空白。总分出来后就明白问题了,不是SQL写得对不对,是策略上就错了。
第二次我调整了顺序和时间:先花5分钟快速浏览全部题目,把每道题的分值和难度标出来;然后先做概率统计和机器学习这些“会就是会、不会就是不会”的题;接着做业务分析题,把答题框架先列出来再逐步填充细节;最后剩余时间给SQL题。SQL题往往步骤多、容易卡,把它放到最后做,哪怕某一道完全卡住,也不至于让整套卷崩盘。
这套答题顺序后来我用在十几场笔试里,基本都能保证“会做的题拿全分,不会的题不留白”。留白是笔试最大的忌讳。
6.2 错题管理笔记的整理思路
刷题不能只做不复盘。我当时做了一本错题笔记,但形式不是简单抄题抄答案,而是按“错因”分类记录:
- 概念理解型错误:说明概念没理解透,回去翻资料,重新用自己的话解释一遍;
- 计算粗心型错误:记录“是在哪一步开始偏的”,下次做题时特别留意这一步;
- 时间管理型错误:标注“这道题考场上花了几分钟”,反思是否可以在更短时间内完成;
- 框架缺失型错误:业务题没答好,往往不是知识点问题,而是思维框架不完整,比如只知道漏斗分析,不知道还要做维度拆解和原因假设。
每次笔试前翻一遍错题本,比临时看面经有效得多。因为看面经是接收别人的信息,而错题本是你自己的思维漏洞地图。
6.3 笔试过程中的瞬时决策
最后聊一个容易被忽视的点:笔试过程中的情绪管理。我做题时遇到过被一道SQL卡了20分钟的情况,当时整个人都快慌了。后来的方法是给自己设一条“止损线”——一道题如果超过预定的时间上限,马上停下,在答题框里写出你的解题思路第一步,留个一两行,然后果断跳下一题。这样即使没做出来,至少向阅卷人展示了你的思考方向;更重要的是,它把你从“卡死”的心态中拽出来,保住后续题目的做题状态。
这个习惯我后来带到工作中也很受益。数据分析师日常里经常要面对“上一轮的取数逻辑刚写到一半,临时又来紧急需求”的情况,没有止损和切换能力,很容易在细节里越陷越深,把整体进度拖垮。
按照个人体会来说,刷真题的意义不在于押中题目,而是通过高频考点搭建自己的知识框架和答题节奏。小红书2020校招数据分析笔试题卷四的整体难度在校招笔试里属于中位水平,非常适合用来做自我摸底。如果这套卷你能在90分钟内保质保量做完,那大多数互联网公司数据分析岗位的笔试关,都是可以稳过的。