字节跳动数据分析工程师面试题精选:10道高频考题+答案解析
基于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_infouser_id, reg_date和 user_act_loguser_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 做实时 ETLClickHouse 做 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 检验验证两组在实验前是否一致指标是不是方差太大方差大的指标需要更大样本量才能检出显著差异。如果实验没问题p0.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。建议在准备的时候多结合真实业务场景思考不要死记硬背八股文面试官更喜欢有思考深度的候选人。