基于2025-2026年真实面经及高频考点整理,涵盖SQL高阶、AB测试、指标体系、业务分析、数据驱动策略五大模块。

一、SQL高阶

第1题:窗口函数 - 连续登录天数

题目: 给定用户登录表 user_login,包含字段 user_id、login_date。求每个用户的最大连续登录天数。如果用户隔天登录也算连续(即"连续登录"指登录日期差不超过2天)。

思路解析: 这道题是字节面经里出现频率极高的一道题。核心思路是"断点重分组"。先用 lag 函数或 row_number 给每个用户的登录日期按时间排序,然后算当前登录日期和上一个登录日期的差值,判断是否跨过了一个空档。差值超过2天的,我们就认为这是一个新的连续段的开始。然后对每个 user_id 开个累加标记,这样同一段内的记录就有了相同的 group id。最后按 group 分组算日期差得出连续天数,取每个用户的最大值。

关键点是知道窗口函数 lag() 的用法,以及怎么用累加 sum 来生成分组标识。字节面试官特别喜欢在这个基础上追问——如果数据量特别大怎么办?可以答:用增量计算,只处理新的登录记录,把之前算好的连续天数缓存下来,不要每次都全量跑。

第2题:复杂Join - 用户留存率

题目: 给定两张表:user_info(user_id, reg_date)和 user_act_log(user_id, act_date, act_type)。请计算某一天新增用户的次日留存率、7日留存率。

思路解析: 这是一道"看起来简单、但答好很难"的题。基本思路是:先筛选出指定日期的注册用户作为分母,然后左连活动日志表,找这些用户在注册后第1天、第7天有没有活动记录。关键是在 join 的时候要注意条件——不是简单 join on user_id 就完了,还要限定活动日期范围。比如次日留存,活动日期 = reg_date + 1。如果直接用 inner join 会漏掉没回访的用户导致分母变小,所以必须用 left join。然后 count(distinct) 统计有回访的用户数除以总注册用户数。

字节很爱在这个基础上问:如果注册用户量级特别大,join 性能很差怎么办?可以从数据倾斜、分桶、用子查询预聚合等角度回答。另外面试官还可能问怎么定义"留存"——是用户必须有点击行为才算留存,还是打开就算?这个要跟业务方对齐。

第3题:查询优化 - 慢查询排查

题目: 一个报表查询跑了一个小时还没出结果,SQL 长这样:SELECT user_id, count() FROM orders WHERE create_time > '2025-01-01' GROUP BY user_id HAVING count() > 5 ORDER BY count(*) DESC。请问你会怎么排查和优化?

思路解析: 这道题考的是实战能力,不是死记硬背。第一步肯定是看执行计划(explain),看看有没有走全表扫描。一般这种问题有两个常见原因:一是 create_time 没有索引,导致扫了全表;二是 group by 的 user_id 数据分布严重倾斜,比如一个大 V 用户占了90%的数据量,那一个 reduce 任务就扛不住了。

优化的方向:给 create_time 建索引;如果数据量是亿级的,考虑在 Hive/Spark 里跑而不是直接在 MySQL 上搞;对于数据倾斜问题,可以先对 user_id 做哈希分桶,或者加盐(salting)打散热点 key。关键是要先定位瓶颈在哪,不要一上来就说"加索引",得结合执行计划来答。

第4题:ClickHouse - 实时聚合查询

题目: 某短视频业务需要实时统计每秒钟的视频播放量(VV)、播放用户数(UV),数据写入延迟要求5秒以内。你会选择什么引擎,怎么设计表结构?

思路解析: ClickHouse 在字节内部用得非常多,面试官问这个就是想看你有没有实时数仓的经验。核心点在于用聚合表(AggregatingMergeTree)或者物化视图来预聚合。表引擎推荐用 ReplicatedAggregatingMergeTree 保证高可用。建表的时候,分区键按时间分区(如 toMinute(event_time)),排序键设成 (video_id, toStartOfSecond(event_time)),这样查询的时候能走索引。

要回答得更出彩一点,可以提一下用 SummingMergeTree 配合状态表做累计指标,或者讲一讲 Flink + ClickHouse 的实时链路怎么搭,Flink 做实时 ETL,ClickHouse 做 OLAP 查询引擎。字节的数据团队大量使用这套架构。


二、AB测试和实验设计

第5题:AB测试的完整流程

题目: 抖音要把推荐算法从 A 模型换成 B 模型,提高用户观看时长。请设计一个 AB 实验方案,包括实验设计、样本量计算、评估指标、注意事项。

思路解析: 这道题是字节 DS 面试的"必考题",几乎可以确定会考到。完整回答需要覆盖以下几个要点:

实验设计: 先说分流方式,推荐用用户 ID hash 分流,保证同一个用户始终在同一个实验组,避免体验不一致。分两组:对照组用 A 模型,实验组用 B 模型。实验时长至少跑满一个完整周期(含周末),推荐跑2周以上。

样本量计算: 需要根据效应量和显著性水平来算,用公式 n = (Z_α/2 + Z_β)² × 2σ² / δ²。简单说就是:期望提升越大,需要样本越少;指标波动越大,需要样本越多。字节内部一般要求统计功效(power)达到0.8,显著性水平0.05。

评估指标: 核心指标是人均观看时长(正指标),辅助指标包括完播率、点赞率、分享率(确保不因追求时长而牺牲体验),负向指标包括跳出率、负反馈率。

注意事项: 网络效应(社交产品做实验,实验组用户的内容可能被对照组用户看到,造成污染);新奇效应(新算法刚上线用户可能因为新鲜感而有异常行为,需要跑足够长时间来稀释);多重比较问题(看了太多指标容易找到假阳性)。

第6题:实验指标不显著怎么办

题目: 跑了两周的 AB 实验,核心指标 p 值 = 0.08,没有达到显著性水平。产品和老板都想上线新功能,你怎么决策?

思路解析: 这道题考的是面试者的数据科学素养和沟通能力,是在字节面试中真正拉开差距的题目。不能简单说"p值大于0.05所以不能上线",也不能说"老板要上就上"。正确的思考路径是:

先排查实验本身有没有问题:样本量够不够(做 power analysis 看看是不是检验力不足),分流有没有偏差(做 AA 检验验证两组在实验前是否一致),指标是不是方差太大(方差大的指标需要更大样本量才能检出显著差异)。

如果实验没问题,p=0.08 意味着有8%的概率是误报,你的决策要考虑成本和收益。如果新功能几乎没成本、有潜在收益,那就值得冒险上线然后监控;如果成本高或有风险,那就继续跑一周或者扩大流量再看。关键是要把分析逻辑讲清楚,而不是输出一个"上线/不上线"的结论。


三、指标体系

第7题:DAU下降的归因分析

题目: 某天抖音的 DAU 下降了5%,作为数据分析师,你怎么排查原因?

思路解析: 这也是字节的高频实战题。分析框架要按照"从宏观到微观、从外部到内部"的逻辑展开:

第一步验证数据,确认不是埋点或 ETL 问题(这个经常被忽略,但也是最常见的原因之一)。第二步看大盘,DAU 下降是有规律的周期性下降还是突发异常,用同比和环比做对比。第三步拆维度:按新老用户拆,看是新用户获取变少了还是老用户流失了;按渠道拆,看是不是某个渠道(如iOS/Android、特定广告渠道)出了问题;按地域拆,看是不是某个区域的网络问题;按版本拆,看是不是新版本上线导致的。

还要考虑外部因素:是不是竞品有活动(比如快手搞了春节红包)、是不是有公共事件(比如服务器故障、断网)。最后给出行动建议:如果是渠道问题就找渠道运营,如果是产品问题就推动版本回滚或修bug。

第8题:LTV和ARPU的计算

题目: 字节的某款社交产品,用户在首月免费使用,之后需要付费订阅。请设计 LTV(用户生命周期价值)的度量方案,并估算合理的 ARPU 预期。

思路解析: 这道题考的是商业化思维。LTV 的计算公式是:LTV = ARPU × 平均用户生命周期。但实际算的时候要复杂得多,因为用户生命周期是用留存率曲线拟合出来的。

一个完整的方案是:先用 Cox 回归或指数衰减模型拟合留存曲线,算出用户的期望生命周期天数。ARPU 要拆开通(广告收入)和付费(订阅收入)两部分来算。对非付费用户,ARPU = DAU × 广告展示量 × eCPM / 用户数;对付费用户,ARPU = 订阅价格 × 付费率 × 续费次数。

字节面试官还喜欢追问:怎么衡量获客成本(CAC)的合理性?答案是 LTV/CAC > 3 是比较健康的指标,如果低于3说明获客效率有问题,需要调整投放策略。


四、业务分析

第9题:短视频推荐指标

题目: 你是抖音的数据分析师,现在要设计一套"视频质量评分"体系,用来评估每一条视频在推荐系统中的表现,你会设计哪些指标?怎么综合打分?

思路解析: 这道题的亮点在于考察你对推荐系统的理解深度。不能只说"点赞率、评论率、分享率"就完了,那样太初级了。

更全面的指标体系应该分层:消费层指标(完播率、播放时长、重播率)、互动层指标(点赞率、评论率、分享率、关注转化率)、负向指标(划走率、不感兴趣率、举报率)。考虑到不同时长的视频互动率天差地别,需要按视频时长做分层或归一化。

综合打分可以借鉴 YouTube 的"观看时长预期"或者抖音内部的"视频价值分"。推荐用加权打分的方式,权重可以通过回归模型或者专家经验来定。最重要的是,要讲清楚如何防止"刷量"——比如一个视频只有点赞没有完播,就要降低权重。字节非常看重防作弊能力。


五、数据驱动策略

第10题:广告投放ROI优化

题目: 字节的穿山甲广告平台,广告主反馈 ROI(投入产出比)持续下滑。作为数据分析师,你怎么分析和解决这个问题?

思路解析: 这道题综合了业务理解、数据分析和策略制定,是字节 DS 面试中典型的"策略分析题"。回答要体现出从发现问题到提出方案的全链路思考。

先说分析路径:数据上先验证 ROI 确实在降(同环比、去掉季节性因素),然后拆解 ROI = 收入 / 成本。收入端看是不是转化率下降、客单价下降,成本端看是不是 CPC(每次点击成本)上涨、展示量下降但是出价提高了。再往下拆:按广告类型(激励视频、开屏、原生广告)、按行业(游戏、电商、工具)、按用户分层(新用户、老用户)来看是哪个细分人群出了问题。

常见的原因可能有:流量质量下降(用户刷广告疲劳)、竞争加剧导致竞价成本上升、归因模型不合理(把转化归到了错误的广告上)。解决方案可以是:优化定向策略(减少低频曝光)、调整出价策略(用 oCPM 智能出价)、改进归因模型(从末次归因改为多触点归因)、或者建议广告主更新素材减少疲劳。

能答到"多触点归因"和"素材疲劳度"这个深度,面试官就会觉得你确实懂业务,不是只会写 SQL。


备考建议: 字节数据分析师的面试,SQL 是入场券,AB测试和指标体系是基本功,业务分析是分水岭。前两个模块决定了你能不能过前两轮,第三个决定了你能不能拿 offer。建议在准备的时候多结合真实业务场景思考,不要死记硬背八股文,面试官更喜欢有思考深度的候选人。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐