
大厂 SQL 手撕常见题型有哪些?答题框架和避坑指南
SQL 手撕题集中在 TopN、连续行为、留存转化、行列转换四大类,答题框架是「确认口径、定粒度、套模板、补边界」,先写对再写快。
共 12 篇文章

SQL 手撕题集中在 TopN、连续行为、留存转化、行列转换四大类,答题框架是「确认口径、定粒度、套模板、补边界」,先写对再写快。

慢 SQL 排查遵循「看计划、找倾斜、查数据」三步:explain 确认 join 策略与裁剪,任务耗时分布定位倾斜,统计信息和资源配置兜底。

row_number 按业务键分区取 rn=1 保留最新一条是主流去重法,变体含按时间取最新、多字段优先级、保序去重,掌握与 distinct/group by 的选型边界。

连续登录用「日期减排名」构造分组键识别连续区间,留存率用首日 cohort 自连接或 lag 算间隔,两类题都要先去重再套模板。

TopN 标准套路是窗口函数编号加外层过滤,掌握每组 TopN、全局 TopN、并列处理、TopN 关联明细四种变体及 order by limit 的边界。

行转列用 collect_set/collect_list 聚合加 concat_ws 拼接,列转行用 lateral view explode 展开数组,两类操作都要配合 group by 和 UDTF 理解。

窗口函数分排序、聚合、取值、分布四类,核心是 partition by 分组加 order by 排序加窗口帧,掌握 TopN、环比、去重三大高频用法。

map join 把小表广播到 map 端免 shuffle;skew join 通过倾斜 key 单独拆分、加盐打散或两阶段聚合解决热点,掌握适用条件和参数。

小文件拖垮 NameNode 并放大计算开销;成因在 reduce 数、动态分区、实时写入三个源头,治理手段分写入时合并和存量合并两条线。

分区按列值切目录做查询裁剪,分桶按哈希散列文件控制数据分布;掌握两者粒度、动态分区风险、采样和 join 优化中的分桶用法。

内部表由 Hive 全权管理数据,外部表只登记元数据,临时表只存活于当前会话;核心考点是 drop 行为、建表 location 语义和生产场景选型。

讲清 Hive 的 Driver/Metastore/执行引擎三层结构,SQL 经解析、逻辑计划、优化、物理计划四个阶段编译成 MR/Spark 任务,掌握关键算子和优化点。