数据仓库与 ETL

共 23 题
#

1. SCD2 的生效日期/失效日期/当前标志位设计与拉链表(zipper table)实现

A SCD2 只保留最新值,不保留历史
B 拉链表每次变化都全量覆盖
C 拉链表只能查当前状态
D SCD2 用生效日期、失效日期与当前标志位保留历史版本,拉链表通过增量失效旧记录并追加新记录实现,节省存储且能回溯历史 ✓ 正确答案
#

2. 事实表类型(事务/周期快照/累积快照)的选型与粒度设计

A 事务事实表记录单笔事件、周期快照记录周期状态、累积快照记录流程生命周期,粒度决定可分析维度与数据量,应与业务需求匹配 ✓ 正确答案
B 三种事实表粒度完全相同
C 周期快照记录单笔事件
D 累积快照不记录状态
#

3. Apache Druid 的实时 OLAP

A Druid 是批量处理引擎,不支持实时
B Druid 通过列式存储、预聚合(Rollup)与实时摄取实现秒级可见、亚秒级查询,适合实时监控与交互式 BI ✓ 正确答案
C Druid 行式存储,无预聚合
D Druid 擅长复杂 join 分析
#

4. ETL 与 ELT 的差异

A ETL 在加载前转换(目标弱计算时用),ELT 先加载原始数据再在目标存储内转换(适合强计算的数据湖仓),现代主流趋向 ELT ✓ 正确答案
B ETL 保留原始数据到目标
C ELT 在加载前转换
D 两者完全等价
#

5. dbt(data build tool)与 ELT 协作

A dbt 负责抽取数据
B dbt 模型无法引用其他模型
C dbt 负责 ELT 的转换层,用 SQL 模型(model)在仓库内构建 DAG、支持物化与测试,让转换代码化、可测试可复用 ✓ 正确答案
D dbt 不做数据质量校验
#

6. 数据仓库的分层架构(ODS/DWD/DWS/ADS)

A DWS 存原始数据
B ODS 已是汇总数据
C ODS 存原始数据、DWD 清洗建模成明细、DWS 按主题汇总、ADS 面向应用,分层实现职责清晰、数据复用与降低重复计算 ✓ 正确答案
D 分层越多越简单,无代价
#

7. 数据建模的命名规范如何统一(表/字段/索引),命名与可维护性的关系如何体现?

A 命名规范与可维护性无关
B 统一表(层级_主题_业务)、字段(一致语义)、索引前缀命名,可降低理解成本、便于血缘追踪与维护,命名即文档 ✓ 正确答案
C 字段可以用同义词随意命名
D 命名只需表名统一,字段随意
#

8. 数据湖(Data Lake)与数据仓库(Data Warehouse)

A 数据湖存已建模数据
B 数仓 schema 读时定义
C 数仓存已建模结构化数据(写时定义 schema、强一致 SQL),数据湖存任意原始数据(读时定义 schema、灵活),湖仓一体兼顾两者 ✓ 正确答案
D 数据湖支持强一致事务分析
#

9. 数据血缘(Data Lineage)与 Atlas

A 血缘只记录数据量,不记录链路
B Atlas 无法采集 Hive 血缘
C 血缘无法用于影响分析
D 数据血缘记录数据从源到目标的链路,支持追溯与影响分析,Atlas 通过 hook 采集元数据血缘并存入图存储提供血缘查询 ✓ 正确答案
#

10. 维度建模(星型/雪花模型)

A 雪花模型查询更简单
B 星型模型维度表直接关联事实表、查询简单性能好,雪花模型维度表进一步规范化、减少冗余但查询需多层 join,主流优先星型 ✓ 正确答案
C 星型模型维度表几乎不拆分
D 星型模型冗余更大但性能差
#

11. Apache Doris/StarRocks 的 MPP 架构

A MPP 把数据分片到多节点并行执行,FE 负责规划调度、BE 负责存储执行,列式存储+实时摄入+物化视图面向实时 OLAP ✓ 正确答案
B MPP 架构只能单机执行
C Doris 不支持实时导入
D FE 负责数据存储
#

12. Apache Hive 的 Metastore 与外部表

A 外部表删除会删除数据文件
B Metastore 存储数据文件内容
C Metastore 用关系库存表结构/分区/文件位置等元数据,外部表数据与元数据解耦、删除表不删数据文件,适合共享数据 ✓ 正确答案
D 内部表删除不删数据
#

13. Apache Hudi 的增量数据湖

A Hudi 在数据湖上提供 ACID 事务、upsert 与增量读取,COW 更新重写文件读快写放大、MOR 更新写日志读需合并,支持时间旅行 ✓ 正确答案
B Hudi 只能追加数据,不能更新
C MOR 表更新重写基本文件
D Hudi 不支持增量读取
#

14. Apache Iceberg 的表格式演进

A Iceberg 只能被单一引擎使用
B Iceberg schema 演进需重写全量数据
C Iceberg 不支持 ACID
D Iceberg 是开放表格式,支持 schema 演进不重写数据、快照时间旅行、ACID 事务与隐藏分区,可被多引擎共享访问 ✓ 正确答案
#

15. ClickHouse 的列式存储

A ClickHouse 行式存储,查询全表扫描
B 列式存储让查询只读所需列、高压缩、支持向量化执行,MergeTree 按分区+排序键组织并用稀疏索引加速,但复杂 join 与高频更新较弱 ✓ 正确答案
C ClickHouse 支持强事务更新
D ClickHouse 擅长复杂 join
#

16. DataVault、Anchor 与 3NF 建模

A 3NF 与维度建模相同
B DataVault 查询最简单
C Anchor 表数量少、查询简单
D 3NF 规范化消除冗余、查询多重 join,DataVault 用 Hub/Link/Satellite 强调可追溯可扩展,Anchor 极致拆分属性但表数量爆炸,工程少用 ✓ 正确答案
#

17. Delta Lake 的 ACID 表

A Delta Lake 无事务日志,无法保证一致性
B Delta Lake 只能追加不能更新
C Delta Lake 不支持时间旅行
D Delta Lake 用事务日志(_delta_log)记录每次 commit 并通过乐观并发控制实现 ACID,支持时间旅行、schema 演进与 upsert,与 Spark 集成最紧密 ✓ 正确答案
#

18. DolphinScheduler 的 DAG 定义与 Spark/Flink 任务集成的参数传递

A DAG 用节点+边定义任务依赖,支持全局参数(工作流级)、局部参数与任务间传递,Spark/Flink 任务通过 ${var} 注入调度参数 ✓ 正确答案
B DAG 只能串行执行,无依赖
C 参数只能在单个节点内使用
D DolphinScheduler 不支持定时任务
#

19. 数据质量(Data Quality)的检验维度

A 数据质量只衡量数据量大小
B 数据质量用完整性、准确性、一致性、及时性、唯一性、有效性等维度衡量,通过规则校验、抽样比对与监控告警治理 ✓ 正确答案
C 数据质量无需监控
D 一致性指数据不缺失
#

20. ES 与 ClickHouse/Doris 的 OLAP 选型对比(实时写入/聚合查询/Join 能力)

A ES 的聚合能力最强
B ES 强在全文检索但 join 弱,ClickHouse 聚合极快但 join 弱,Doris/StarRocks join 与实时摄入强,按检索/聚合/join 需求选型 ✓ 正确答案
C ClickHouse 的 join 能力最强
D Doris 不支持实时导入
#

21. Presto/Trino 的联邦查询

A Trino 存储数据,负责 ETL
B Trino 只能查询单一数据源
C Trino 通过 connector 连接多个异构数据源,用统一 SQL 做跨源 join 与下推查询,是无状态查询引擎,适合交互式跨源分析 ✓ 正确答案
D Trino 不支持跨源 join
#

22. 数据调度平台(DolphinScheduler/Airflow)的任务依赖与 SLA 监控

A 调度平台无告警能力
B 任务依赖无法定义先后关系
C SLA 监控与任务无关
D 调度平台用 DAG 管理任务间/时间依赖,支持定时触发、失败重试与超时告警,SLA 监控保障数据准时产出 ✓ 正确答案
#

23. 缓慢变化维(SCD1/2/3)的处理策略与 Hive/Spark SQL 实现

A SCD1 覆盖不保留历史、SCD2 新增版本保留完整历史、SCD3 用双列保留最近的旧值,按历史需求选择,SCD2 用拉链/merge 实现 ✓ 正确答案
B SCD1 保留完整历史
C SCD3 保留无限历史
D SCD2 只保留当前值