91学AI · 大数据工程师

面试题精选 100

从知识框架核心题到公司真题库必刷题,按模块分组编号。时间紧就刷这一页——刷完这 100 题,覆盖面试 90% 的考点。

精选·数仓与建模

18该分类全部 →
  1. 1

    维度建模常见反模式:大宽表滥用、层级穿透与其他坑

    维度建模的典型反模式:大宽表滥用、维度层级穿透、混合粒度、多值维度硬塞、SCD 处理缺失。识别信号加对应解法,用桥接表和一致性维度纠偏。

  2. 2

    数仓成本治理与表生命周期:钱花在哪儿、怎么省下来

    数仓成本分存储和计算两块。存储侧靠生命周期 TTL、冷表下线、压缩和小文件合并;计算侧治全量扫描和资源浪费;成本要分摊到团队才有治理动力。

  3. 3

    数据回刷与补数策略:什么时候刷、怎么刷才不出事故

    回刷分口径变更、故障修复、脏数据修复、历史初始化四类场景。核心是幂等重跑、血缘联动下游、影子表双跑切换,以及与正常调度的资源隔离。

  4. 4

    实时数仓怎么分层?技术选型怎么定

    实时数仓沿用 ODS-DWD-DWS-ADS 思路但层数要压浅,Kafka 存原始与明细,Flink 做清洗和汇总,CK/Doris 承接查询,点查走 Redis/HBase。

  5. 5

    Lambda 和 Kappa 架构对比:两套链路的痛与流批一体的解

    Lambda 用批层保准确、速度层保时效,代价是双链路口径和运维成本;Kappa 全流简化架构,但重算和大状态是硬伤。选型看实时占比和重算需求。

  6. 6

    数据血缘与影响分析:怎么建、怎么用

    血缘靠 SQL 解析拿表级和字段级依赖,调度依赖做兜底。核心用途是影响分析、口径溯源、问题定位和下线评估,准确率要靠多来源互补。

  7. 7

    数据质量监控(DQC)怎么落地:规则、卡点和熔断

    DQC 落地的三要素:规则体系覆盖完整性/及时性/准确性/一致性,卡点挂在任务产出后下游启动前,强规则熔断阻断调度、弱规则告警通知。

  8. 8

    宽表设计的收益与代价:什么时候该建,什么时候是灾难

    宽表用冗余存储换查询性能和使用门槛,收益是免 join、口径统一;代价是回刷贵、变更僵、字段膨胀。适合放 DWS/ADS 服务固定场景,不适合放明细层。

  9. 9

    数仓模型怎么优化?复用度和穿透率怎么度量

    数仓优化的抓手是公共层沉淀和指标口径统一。复用度看 DWS 表被多少下游消费,穿透率看下游绕过公共层直查明细的比例,用血缘数据就能算。

  10. 10

    怎么评价一个数仓建得好不好?从五个维度看

    评价数仓看五点:数据质量(完整准确一致及时)、模型复用度、稳定性与 SLA、资源成本、规范性。可量化为 DQC 通过率、任务破线率、重复表比例等指标。

  11. 11

    指标体系怎么设计?指标字典到底解决什么问题

    指标体系自上而下拆解:北极星指标按 OSM/UJM 拆到过程指标;落地靠「原子指标+修饰词+时间周期」定义派生指标。指标字典解决同名不同义、同义不同名的口径混乱。

  12. 12

    一致性维度和一致性事实:数仓能跨主题对数的前提

    一致性维度是各事实表共享、含义和取值统一的维度,一致性事实是口径统一的度量。两者是总线架构的总线标准,保证跨业务过程能联合分析、同指标各报表一致。

  13. 13

    总线矩阵是什么?数据域怎么划分

    总线矩阵是「业务过程 × 公共维度」的二维表,是数仓建设的总设计图;数据域按业务过程聚类划分(交易、流量、用户等),矩阵先于建模,指导优先级和维度共享。

  14. 14

    星型模型和雪花模型怎么选?大数据场景为什么是星型

    星型是事实表直连扁平维表,雪花把维表再规范化拆成多级。星型 join 少、查询快、口径直观;雪花省存储但 join 链路长。大数据场景一律选星型。

  15. 15

    维度表设计与缓慢变化维:拉链表到底是怎么实现的

    维度表设计涵盖代理键、维度退化、一致性维度;缓慢变化维有 SCD0/1/2/3 四种处理,拉链表是 SCD2 在 Hive 上的经典实现,用起止日期保存历史。

  16. 16

    三种事实表:事务事实表、周期快照、累积快照怎么选

    事务事实表记录原子事件,周期快照定期度量状态,累积快照跟踪流程多里程碑。选型看业务过程是瞬间事件、状态量还是长周期流程。

  17. 17

    维度建模四步法:从业务过程到事实表的标准动作

    Kimball 四步法:选业务过程、声明粒度、确定维度、确定事实。粒度声明是整张表的契约,先定粒度再谈维度和事实,顺序不能乱。

  18. 18

    数仓为什么要分层?ODS/DWD/DWS/ADS 每层到底干什么

    分层是为了解耦、复用和可追溯。ODS 贴源保留现场,DWD 清洗明细并统一口径,DWS 轻度汇总沉淀公共逻辑,ADS 面向应用出指标。

精选·Spark

12该分类全部 →
  1. 34

    Spark SQL 的 Catalyst 优化器原理是什么?一条 SQL 是怎么变成物理计划的?

    考察 Catalyst 的完整流水线:逻辑计划解析、Analyzer 绑定元数据、规则优化(谓词下推/列裁剪/常量折叠)、代价模型选 join 策略、生成物理计划与 code-gen 执行。

  2. 35

    Spark on YARN 的提交与执行流程是怎样的?client 和 cluster 模式区别在哪?

    考察 Spark 在 YARN 上的完整生命周期:ApplicationMaster 申请资源、driver 位置(client/cluster)、executor 注册与任务分发,以及两种部署模式的网络拓扑差异和选型。

  3. 36

    cache/persist 和 checkpoint 有什么区别?分别什么时候用?

    考察两种物化机制的本质差异:cache 保留血缘、内存/磁盘存储、服务于复用提速;checkpoint 切断血缘、写可靠存储、服务于长链容错,以及 cache 后再 checkpoint 的标准用法。

  4. 37

    Spark 数据倾斜怎么处理?从定位到治理的完整方法论

    考察数据倾斜的实战处理:从 UI 指标定位倾斜,到加盐打散、两阶段聚合、广播小表、过滤热点 key 等手段的取舍,以及 AQE 自动倾斜优化的边界。

  5. 38

    Spark AQE(自适应查询执行)有哪三大优化能力?原理是什么?

    考察对 Spark 3.x AQE 的理解:运行时利用 shuffle 物化后的真实统计,动态合并小分区、切换 join 策略(SMJ 转 BHJ)、拆分倾斜分区,解决计划阶段统计不准的问题。

  6. 39

    Spark 的统一内存模型怎么讲?Execution 和 Storage 内存是怎么动态共享的?

    考察 Spark 1.6+ 统一内存管理:execution 与 storage 区域动态借用、on-heap/off-heap 的划分、OOM 时的逐出与 spill 策略,以及 spark.memory.fraction 等参数的调优逻辑。

  7. 40

    Broadcast Join 的原理是什么?阈值怎么定?有哪些坑?

    考察广播 join 的完整链路:driver 收集、TorrentBroadcast 分块分发、executor 建 hash 表探测,autoBroadcastJoinThreshold 的语义与调优,以及统计失真、driver OOM 等典型坑。

  8. 41

    Spark Join 有哪几种实现?生产上怎么选型?

    考察对 Broadcast Hash Join、Shuffled Hash Join、Sort Merge Join 三种实现的原理与适用场景,以及 Catalyst 的 join 选择逻辑和强制广播的 hint 写法。

  9. 42

    reduceByKey 和 groupByKey 有什么区别?为什么生产上基本不用 groupByKey?

    考察对 map 端预聚合(combine)的理解:reduceByKey 在 shuffle 前做本地聚合削减数据量,groupByKey 全量搬运,网络 IO 和内存压力差异可达数量级,以及 groupByKey 不可替换的场景。

  10. 43

    Spark Shuffle 是怎么演进的?Hash、Sort、Tungsten 各自解决了什么问题?

    考察对 Spark shuffle 机制演进的理解:HashShuffle 的小文件问题、SortShuffleManager 的排序与归并、unsafe/sort 分支的选择条件,以及 Tungsten 的二进制排序和堆外内存优化。

  11. 44

    Spark 的宽依赖和窄依赖怎么区分?Stage 是怎么划分的?

    考察 DAG 调度核心:宽窄依赖的本质区别在于子分区是否依赖父 RDD 全部分区,stage 以 shuffle(宽依赖)为边界切分,决定了流水线执行与失败重算的粒度。

  12. 45

    RDD 是什么?它的血缘机制和容错原理怎么讲清楚?

    考察对 Spark 计算抽象的理解:RDD 五大特性、immutable 设计的动机、血缘(lineage)如何通过重算实现容错,以及血缘过长时 checkpoint 的兜底作用。

精选·Kafka与消息队列

10该分类全部 →
  1. 46

    Kafka 到下游系统的端到端 Exactly-Once 怎么实现?

    拆解"端到端"的三段语义,讲清 Kafka 事务 + 位移原子提交的内环方案、Flink 两阶段提交检查点的外环方案,以及什么时候该退回业务幂等。

  2. 47

    Kafka、RocketMQ、Pulsar 怎么选型?各自适合什么场景?

    从架构模型、吞吐延迟、功能特性(延迟消息/事务/死信)、生态四个维度对比三者,给出日志流选 Kafka、业务消息选 RocketMQ、云原生多租户看 Pulsar 的选型逻辑。

  3. 48

    Kafka 消息积压怎么排查?怎么快速扩容消费?

    以 lag 监控为入口,按"消费慢、分区不均、Rebalance 频繁、下游瓶颈"四类根因排查,给出临时扩容、加消费者、加分区、跳过历史消息的分级处置方案。

  4. 49

    Kafka 分区数怎么定?消息有序性怎么保证?

    分区数从吞吐目标、消费者并行度、Broker 负载三方面推算,讲清单分区内有序、全局无序的模型,以及按 key 哈希保业务有序的正确姿势。

  5. 50

    Kafka 为什么能做到高吞吐?顺序写、零拷贝、页缓存、批量处理怎么配合?

    从磁盘顺序追加、Page Cache 读写缓冲、sendfile 零拷贝、端到端批量压缩四个层面解释 Kafka 的高吞吐,纠正"消息队列都慢在磁盘"的直觉误区。

  6. 51

    Kafka Rebalance 是什么机制?会带来哪些影响,怎么缓解?

    讲清 Rebalance 的触发条件和三个阶段的流程,说透 Stop The World、重复消费两大影响,以及静态成员、Cooperative 协议等缓解手段。

  7. 52

    Kafka 为什么会重复消费?消费位移应该怎么管理?

    重复消费的根源是"处理"和"提交位移"不是原子的,拆解自动提交的坑、手动提交的两种模式,给出先处理后提交、业务幂等兜底的工程方案。

  8. 53

    Kafka 幂等生产者和事务分别解决了什么问题?底层怎么实现的?

    幂等解决单分区内的重复写入(PID+序列号去重),事务解决跨分区跨主题的原子写,两阶段提交 + 事务协调器,并能说出各自的边界和代价。

  9. 54

    Kafka 的 acks 机制是什么?怎么配置才能保证数据不丢失?

    说清 acks 0/1/all 三档语义,给出不丢失的最小配置组合(acks=all + min.insync.replicas + retries),并点破"不丢"是生产、Broker、消费三段的事。

  10. 55

    Kafka 整体架构是怎样的?ISR 机制解决了什么问题?

    讲清 Broker、Controller、分区副本的角色分工,重点说透 ISR 的入列出列条件、HW 与 LEO 的关系,以及 ISR 为什么能在可靠性和可用性之间取平衡。

精选·Hive与SQL

12该分类全部 →
  1. 56

    大厂 SQL 手撕常见题型有哪些?答题框架和避坑指南

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

  2. 57

    SQL 执行慢怎么排查?执行计划、数据倾斜、参数调优三板斧

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

  3. 58

    用 row_number 去重有哪几种变体?distinct、group by、窗口函数怎么选?

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

  4. 59

    连续登录、留存率这类 SQL 怎么写?日期差分组与 lag 两种解法

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

  5. 60

    TopN 与组内排序类 SQL 怎么写?row_number、rank 实战套路

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

  6. 61

    行转列、列转行分别怎么写?concat_ws、collect_list、lateral view 实战

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

  7. 62

    窗口函数有哪几类?row_number、rank、lag 各适合什么场景?

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

  8. 63

    Hive/Spark SQL 中 map join 是什么?数据倾斜的 join 怎么优化?

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

  9. 64

    Hive 小文件问题是怎么产生的?如何治理?

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

  10. 65

    Hive 分区表和分桶表有什么区别?怎么设计才合理?

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

  11. 66

    Hive 内部表、外部表、临时表有什么区别?drop 表时数据会怎样?

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

  12. 67

    Hive 架构是什么?一条 Hive SQL 是如何转成 MR 或 Spark 执行的?

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

精选·OLAP与存储

12该分类全部 →
  1. 68

    OLAP 高频场景题:用户画像系统怎么设计

    用户画像系统核心是三件事:ID-Mapping 打通身份、标签分层存储(明细宽表 + 位图)、圈人查询用位图交并加速,存储选型按更新频率和查询模式拆给 Doris 与 CK。

  2. 69

    OLAP 高频场景题:实时大屏怎么设计

    实时大屏设计核心是分层降载:Kafka 接流、Flink 做窗口预聚合、OLAP 存多粒度结果、缓存挡并发,让大屏查询只扫小数据量,秒级刷新生生不息。

  3. 70

    OLAP 数据导入方式与攒批:为什么小批量高频写入是毒药

    OLAP 引擎按批组织存储,ClickHouse 攒批防 part 爆炸,Doris Stream Load 按批次生成 segment;导入调优核心是批大小、频率与上游幂等重试。

  4. 71

    位图索引与 BloomFilter 在 OLAP 中的应用

    位图索引把低基数列的等值/集合查询转成位运算,Doris/StarRocks 还用它做精确去重加速;BloomFilter 用哈希概率结构做低成本存在性过滤,牺牲一点误判换 IO 大降。

  5. 72

    OLAP 引擎选型方法论:从数据量、并发、更新频率出发

    OLAP 选型先定三个硬指标:数据量级与增速、查询并发与延迟要求、数据更新频率,再叠加 join 复杂度、团队运维能力和生态,用排除法收敛候选。

  6. 73

    Kylin 预计算思想与现状:Cube 时代的遗产

    Kylin 核心思想是用空间换时间,按维度组合预计算 Cube 存 HBase,查询下压命中 Cuboid;实时引擎崛起后其重建模模式收缩到超大规模固定报表场景。

  7. 74

    ClickHouse vs Doris 怎么选:从更新、并发、Join 到运维的对比

    ClickHouse 单机性能极致、适合明细大宽表追加写,Doris 强在高并发、行级更新、多表 Join 与 MySQL 生态,选型核心是更新频率和并发模式。

  8. 75

    Doris 物化视图与 Rollup:预聚合的两种形态

    Rollup 是表内按维度子集预聚合的物化视图,随基表同步更新;异步物化视图支持多表 join 与定时刷新,选型看是否需要跨表和刷新灵活性。

  9. 76

    Doris 架构拆解:FE、BE 的职责与三种数据模型

    Doris 采用 FE 管元数据与查询规划、BE 管存储与执行的 MPP 架构,数据模型分明细、聚合、主键三种,选型核心看更新需求与查询模式。

  10. 77

    ClickHouse 物化视图与 Projection:两种预计算加速路线

    物化视图在写入时触发转换写入目标表,Projection 是把不同排序或聚合的数据冗余存进 part 内部,查询自动路由,二者分别适合预聚合和多排序键场景。

  11. 78

    ClickHouse 表引擎家族与选型:MergeTree 系、Log 系与外表引擎

    ClickHouse 表引擎分 MergeTree、Log、集成、特殊四大类,核心选型逻辑是围绕 MergeTree 变体:去重用 Replacing、预聚合用 Aggregating、求和用 Summing。

  12. 79

    ClickHouse 为什么读写都快:列存、稀疏索引、向量化与 MergeTree

    ClickHouse 快在四个层面:列式存储减少 IO、稀疏主键索引快速定位 granule、向量化执行榨干 CPU、MergeTree 后台合并保证写入吞吐。

精选·数据湖与治理

10该分类全部 →
  1. 80

    数据资产盘点怎么做?存储与计算成本治理有哪些招?

    数据资产盘点的方法(元数据驱动、打标签、定责任人),以及存储分层、僵尸表下线、计算优化的成本治理组合拳。

  2. 81

    埋点体系怎么设计?数据采集架构怎么搭?

    埋点方案选型(代码/全埋点/可视化)、事件模型设计、从端上 SDK 到 Kafka 入湖的采集链路,以及数据质量保障手段。

  3. 82

    数据权限体系怎么设计?敏感数据脱敏有哪些手段?

    讲清 RBAC/ABAC 权限模型、Ranger 的列级管控,以及静态/动态脱敏的实现方式、脱敏算法选择和审计要求。

  4. 83

    元数据管理与数据目录怎么做?DataHub 与 Atlas 对比

    元数据的三类划分、数据目录的核心能力(搜索/血缘/owner),以及 DataHub 和 Apache Atlas 的架构差异与选型建议。

  5. 84

    数据治理体系到底包含什么?元数据、质量、安全、成本四条线

    数据治理的四条主线:元数据管理、数据质量、数据安全与合规、成本与生命周期,各自的抓手、工具和落地顺序。

  6. 85

    湖仓一体架构怎么落地?从分层设计到引擎选型

    湖仓一体的落地路径:存储层统一用湖格式、计算层多引擎共存、按 ODS/DWD/DWS/ADS 分层建模,以及迁移时的现实步骤。

  7. 86

    数据湖的时间旅行和增量读取原理是什么?

    基于快照的时间旅行查询、快照保留策略,以及增量读取(incremental read/CDC)的实现方式和典型用途。

  8. 87

    数据湖的 ACID 是怎么实现的?Schema 演进又有哪些坑?

    讲清湖表格式用快照隔离+乐观并发实现 ACID 的原理,以及列变更的兼容性规则与演进中的工程细节。

  9. 88

    Iceberg、Hudi、Delta Lake 三大湖格式怎么选?

    从元数据架构、更新模型、生态绑定三个角度对比 Iceberg/Hudi/Delta Lake,给出不同业务场景下的选型结论。

  10. 89

    数据湖和数据仓库有什么区别?面试标准答法与延伸

    数据湖与数仓在数据形态、schema 时机、成本模型、适用场景上的本质差异,以及为什么行业在往湖仓一体收敛。

精选·Java与并发

11该分类全部 →
  1. 90

    CountDownLatch、CyclicBarrier 与 Semaphore 的原理和使用场景

    对比三个 JUC 同步工具的实现原理(AQS 共享模式/Condition/许可)、可复用性差异和典型场景,结合大数据任务编排给出落地示例。

  2. 91

    ThreadLocal 原理与内存泄漏问题

    讲清 ThreadLocal 的线程私有副本机制、Entry 弱引用设计导致的内存泄漏原因、线程池场景的正确用法,以及和 InheritableThreadLocal 的区别。

  3. 92

    线程池核心参数、拒绝策略与线程数怎么定

    讲清 ThreadPoolExecutor 七个参数的任务调度流程、四种内置拒绝策略、Executors 工厂的坑,以及 IO/CPU 密集型线程数估算方法。

  4. 93

    AQS 原理与 ReentrantLock 实现剖析

    讲清 AQS 的 state+CLH 队列+模板方法三大核心、独占与共享两种模式,以及 ReentrantLock 公平/非公平锁在 AQS 上的实现差异。

  5. 94

    synchronized 锁升级过程:无锁、偏向锁、轻量级锁、重量级锁

    从对象头 Mark Word 讲起,讲清 JDK 6 之后 synchronized 的四级锁升级路径、每级的实现原理和触发条件,以及与 ReentrantLock 的对比。

  6. 95

    volatile 关键字与 Java 内存模型(JMM)

    讲清 JMM 的主内存/工作内存抽象、volatile 保证可见性和有序性但不保证原子性的原因、内存屏障原理,以及双重检查锁的正确写法。

  7. 96

    类加载机制与双亲委派模型

    讲清加载-验证-准备-解析-初始化五个阶段、三层类加载器与双亲委派的工作流程和意义,以及 SPI、Tomcat 等破坏委派的实际场景。

  8. 97

    垃圾回收算法与 G1 收集器原理

    从标记-清除、复制、标记-整理三种基础算法讲起,解释分代假说与 GC Roots,重点讲 G1 的 Region 划分、回收流程和停顿控制机制。

  9. 98

    JVM 运行时内存结构与各区域职责

    按线程共享/私有讲清堆、方法区、虚拟机栈、本地方法栈、程序计数器的职责,结合大数据场景说明 OOM 排查思路和常见参数。

  10. 99

    ConcurrentHashMap 在 JDK 7 与 JDK 8 的实现演进

    讲清分段锁 Segment 到 CAS+synchronized 桶锁的演进逻辑、put 流程、size 统计方式变化,以及为什么读操作完全不加锁。

  11. 100

    HashMap 底层原理、扩容机制与树化条件

    大数据面试 Java 必考题。讲清哈希桶数组+链表+红黑树的结构、put 流程、扩容 rehash 细节,以及树化阈值 8 和退化阈值 6 的设计原因。

91学AI

© 2026 91学AI · 按岗位学 AI 与大数据. All rights reserved.