[toc]
大数据面试终极突击一页纸(全栈合集)
直接背这一张,面试 80% 知识点全覆盖,全程精简无废话。
一、Kafka 核心
核心组件
生产者、Broker、Topic、Partition 分区、副本、消费者组、Offset。
核心原理
- 单分区有序,全局无序;分区决定并行度。
- Leader 负责读写,Follower 同步做高可用。
- acks:0 最快易丢;1 落 Leader;-1/all 最安全。
- 削峰填谷:磁盘可堆积,高峰缓存、低峰匀速消费,解耦护下游。
常见问题 & 解决
- 消息丢失:acks=-1 + 多副本 + 先消费后提交 offset。
- 重复消费:业务唯一主键幂等、手动提交 offset。
- 重平衡频繁:调大会话超时、稳定消费者数量。
- 消息积压:加分区、扩消费并行度、优化消费逻辑。
调优
生产者:批量 + 压缩 + acks=-1;
消费者:关闭自动提交、手动批量提交;
分区数和 Flink/Spark 并行度对齐,生产 3 副本。
二、Flink 核心
核心特性
原生事件驱动流式、EventTime+Watermark 水位线、窗口、Checkpoint、状态管理、Exactly-Once。
关键概念
- 时间语义:事件时间、处理时间、摄入时间。
- 水位线:解决乱序 / 迟到数据,触发窗口计算。
- Checkpoint:保存 offset 和算子状态,故障自动恢复。
- 状态后端:生产用RocksDB,配 TTL 防状态膨胀 OOM。
项目难点 & 解法
- 数据倾斜:局部 + 全局聚合、热点 key 加盐打散、Runtime Filter。
- 反压:定位瓶颈算子、增加并行度、简化计算逻辑。
- 迟到数据:水位线 + 允许迟到 + 侧输出兜底。
- 小文件:窗口攒批、分区合并、控制写入频次。
三、Spark 核心
原理
RDD 惰性求值、DAG 宽窄依赖、遇到 Shuffle 切分 Stage、Task 按分区执行。
版本区别
- Spark Streaming:固定微批,老旧已淘汰。
- Spark Structured Streaming:默认底层仍是微批轮询,非事件驱动,只适合准实时。
常见问题
- 数据倾斜:空值过滤、加盐打散、两阶段聚合。
- OOM:Driver 不做 Collect、合理分区、加大内存。
- 小文件:repartition/coalesce 合并、离线定时清理。
优化口诀
尽早过滤、谓词下推、广播小表、少 Shuffle、合理缓存。
四、Spark vs Flink 选型
- 离线数仓、批量 ETL、报表画像 → Spark
- 实时大屏、秒级低延迟、乱序严重、窗口精准、强一致性 → Flink
- 流批一体:全站 Flink,离线保留 Spark 做复盘。
五、CDC 增量同步
定义
CDC 变更数据捕获,监听 MySQL Binlog,实时抓取Insert/Update/Delete增量,不用全量拉表,秒级延迟、业务无侵入。
三种实现
定时轮询、数据库触发器(不用)、Binlog 监听(Flink CDC/Canal/Debezium)。
Flink CDC 优势
一条任务自动全量快照 + 增量无缝切换,无需中间件,和 Flink 原生集成,支持 Exactly-Once。
实时数仓标准链路
MySQL → Flink CDC → Kafka → Flink 清洗加工 → Doris/ClickHouse 落地。
六、实时数仓 & 离线数仓
四层架构通用
ODS 原始层、DWD 明细宽表层、DWS 聚合层、ADS 应用指标层。
离线数仓
Hive+Spark、T+1 / 小时级、定时全量 / 增量调度、用于日报月报、用户画像、业务复盘,可反复重跑数据精准。
实时数仓
Flink+Kafka+CDC+Doris、秒级延迟、流式增量加工、用于实时大屏、风控告警、订单指标。
双仓价值
实时看当下业务、离线做复盘口径校准;湖仓一体 Hudi/Paimon 实现一套数据、流批共用。
七、Doris vs ClickHouse
ClickHouse
单表查询性能极强、压缩率高;Join 弱、更新差、并发低、运维重;适合日志、时序、离线大宽表。
Apache Doris
全能 OLAP、CBO 优化器多表 Join 强、支持实时 UPSERT/DELETE、兼容 MySQL、运维简单、高并发 BI、湖仓一体友好。
选型
复杂关联 / 实时更新 / 高并发 BI / 低运维 → Doris
纯日志时序、无复杂 Join、几乎不更新 → ClickHouse
八、大数据主流 SQL 分清
- Hive SQL:离线数仓标配
- Spark SQL:高性能通用大数据 SQL
- Flink SQL:实时流处理专用
- Presto/Trino:跨数据源统一查询
- T-SQL:SQL Server、Azure Synapse
- Cosmos DB SQL:微软 Cosmos 自研类 SQL,不是 T-SQL
九、面试必背 SQL 模板
分组取 Top1
1 | SELECT * FROM ( |
行转列
1 | CONCAT_WS(',',COLLECT_LIST(field)) |
列转行
1 | LATERAL VIEW EXPLODE(SPLIT(str,',')) tmp AS field |
广播 Join
1 | SELECT /*+ BROADCAST(b) */ a.* FROM 大表a JOIN 小表b |
十、项目自我介绍通用话术
我负责大数据离线与实时数仓开发,采用标准四层 ODS/DWD/DWS/ADS 架构。
离线基于 Hive+Spark,定时同步业务库,做分层建模、指标计算,支撑 T+1 报表和用户画像;
实时采用 Flink+Kafka+Flink CDC+Doris,通过 CDC 监听 MySQL Binlog 做增量同步,秒级入仓,Flink 完成清洗、维度关联、窗口聚合,落地 Doris 支撑实时大屏和风控指标。
项目解决过数据倾斜、Kafka 积压、Flink 反压、状态 OOM、小文件、CDC 重复消费等问题,采用离在线双仓架构,实时看业务、离线做复盘校准。