# 1. PostgreSQL 行级安全(Row-Level Security, RLS)策略的实现? A RLS 在行级限制访问,通过 CREATE POLICY 定义使用条件,由数据库强制 ✓ 正确答案 B RLS 只能过滤列 C RLS 需要应用层配合 D RLS 与多租户无关
# 2. Schema-per-Tenant 的约束冲突,连接池、迁移成本? A 迁移只需一次 B 连接池无需处理 C 每租户一个 schema,隔离好但连接池需按租户切换、DDL 迁移成本高 ✓ 正确答案 D 隔离性差
# 3. 共享表(Shared Table)多租户的取舍,tenant_id 列、行级安全(RLS)? A 共享表无需 tenant_id B 所有租户共享一张表,用 tenant_id 区分,配合 RLS 强制隔离 ✓ 正确答案 C RLS 无法用于共享表 D 共享表隔离性最好
# 4. 多租户场景下的资源竞争,连接池、CPU、I/O 争用? A 资源竞争不存在 B 连接池、CPU、I/O 都可能被某个租户独占,需用资源限制与隔离缓解 ✓ 正确答案 C 连接池无需共享 D 慢查询不影响其他租户
# 5. 领域驱动设计(DDD)中的聚合根(Aggregate Root)、限界上下文(Bounded Context)如何映射到数据库? A 聚合无需事务边界 B 聚合根映射为表,聚合内强一致、跨限界上下文用事件最终一致 ✓ 正确答案 C 所有上下文共享一张表 D 限界上下文与数据库无关
# 6. PostgreSQL RLS 的 CREATE POLICY 语法? A WITH CHECK 过滤现有行 B USING 只用于 INSERT C USING 过滤现有行,WITH CHECK 校验新写入的行 ✓ 正确答案 D 策略无需 FOR 子句
# 7. RLS 的 SELECT、INSERT、UPDATE、DELETE 策略? A SELECT 用 USING,INSERT 用 WITH CHECK,UPDATE 同时用两者 ✓ 正确答案 B INSERT 用 USING C SELECT 用 WITH CHECK D DELETE 用 WITH CHECK
# 8. UUID 主键的分布式友好性与索引体积代价? A 分布式友好、可离线生成,但体积大、随机性强导致索引碎片化 ✓ 正确答案 B UUID 体积小 C UUID 顺序写入 D UUID 不适合分布式
# 9. 主键的数据类型选择,INT vs BIGINT vs UUID vs 字符串? A UUID 体积最小 B 字符串最适合做主键 C INT/BIGINT 性能好索引小,UUID 分布式友好但体积大,字符串一般不宜做主键 ✓ 正确答案 D INT 范围最大
# 10. 主键的物理顺序与聚簇索引的关系(InnoDB IOT)? A InnoDB 是 IOT,数据按主键物理顺序存储,单调递增主键写入高效 ✓ 正确答案 B 主键不影响物理顺序 C 随机主键写入高效 D 二级索引叶子存主键值无需回表
# 11. 唯一键(UNIQUE)与主键的 NULL 处理差异? A 主键允许 NULL B 主键非空,唯一键允许 NULL,PostgreSQL 中多个 NULL 可共存 ✓ 正确答案 C 唯一键不允许 NULL D 所有数据库唯一键都只允许一个 NULL
# 13. UUID v4 与 v7 的索引写入性能? A v7 时间有序大致单调递增,写入索引性能优于随机 v4 ✓ 正确答案 B v4 顺序性好 C v7 与 v4 完全随机 D v7 写入性能更差
# 14. 主键的 ALTER TABLE ADD PRIMARY KEY 的代价? A 加主键不影响表结构 B 加主键无需锁表 C 加主键立即完成 D 大表加主键可能重建表或全表建索引,耗时且锁表,应建表时确定 ✓ 正确答案
# 15. 唯一约束的 NULL 处理(PG 多 NULL vs SQL Server 单 NULL)? A 所有数据库都只允许一个 NULL B PostgreSQL 允许多个 NULL,SQL Server 默认只允许一个 NULL ✓ 正确答案 C 所有数据库允许多个 NULL D 唯一约束不允许 NULL
# 16. 反范式的优势,减少 JOIN、提升查询性能? A 通过冗余减少 JOIN、提升查询性能,但需承担一致性维护成本 ✓ 正确答案 B 反范式减少冗余 C 反范式提升写入性能 D 反范式无需维护一致性
# 17. 反范式(Denormalization)的常见模式,冗余字段、派生列、预计算聚合? A 冗余字段无需同步 B 冗余字段、派生列、预计算聚合都减少查询成本,但需维护一致性 ✓ 正确答案 C 派生列会自动更新 D 预计算聚合每次实时算
# 18. 预计算聚合表(Aggregate Table),物化视图、汇总表? A 物化视图由数据库管理,汇总表由应用维护,都预存聚合结果提升查询性能 ✓ 正确答案 B 物化视图每次实时聚合 C 汇总表自动实时更新 D 预计算聚合只用于 OLTP
# 19. 星型模型(Star Schema)的反范式? A 维度表无冗余 B 星型模型遵守 3NF C 维度表扁平化冗余、减少 JOIN 层级,是 OLAP 的核心反范式设计 ✓ 正确答案 D 星型模型需多级 JOIN
# 20. 列数过多(PostgreSQL 1600 列限制)的存储开销,NULL bitmap? A 列数过多增加行宽与 NULL bitmap 开销,PG 最多 1600 列 ✓ 正确答案 B NULL 列无任何成本 C 列数不影响行宽 D PG 无列数限制
# 21. 大宽表的查询优化,列裁剪(Column Pruning)、分区? A 大宽表无需优化 B 列裁剪无效果 C 分区不能裁剪 D 列裁剪只读所需列、分区裁剪只扫相关分区,都能减少 IO ✓ 正确答案
# 22. 稀疏列的存储优化,稀疏列存储(sparse column)、EAV 模型? A 稀疏列无优化 B EAV 查询简单 C 稀疏列存储、EAV、JSONB 都能避免大量 NULL 的浪费 ✓ 正确答案 D JSONB 无法处理稀疏数据
# 24. 稀疏列的 GIN 索引,大量 NULL/空值列如何用 GIN 索引加速查询,与 B-tree 在稀疏数据上的差异与代价? A GIN 适合等值查询 B GIN 是倒排索引,只索引有值的键,适合稀疏/多值数据,但写入开销大 ✓ 正确答案 C B-tree 适合稀疏数据 D GIN 不索引 JSONB
# 25. PostgreSQL JSONB 与 MongoDB 的对比,查询语言、事务支持、索引? A 两者查询语言相同 B PG 用 SQL+JSONB 操作符且 ACID 事务成熟,MongoDB 用 MQL 且事务语义较新 ✓ 正确答案 C MongoDB 事务比 PG 成熟 D PG JSONB 无索引
# 26. 关系数据库模拟文档数据库,JSONB 列、hstore? A hstore 支持嵌套 B JSONB 不支持索引 C JSONB 是二进制 JSON 支持索引与查询,hstore 是简单键值对,二者都提供灵活 schema ✓ 正确答案 D JSONB 有强类型约束
# 27. 关系模型与文档模型的对比,结构化 vs 半结构化、JOIN 能力? A 文档模型 JOIN 能力强 B 关系模型结构化强、JOIN 能力强、schema 固定,文档模型 schema 灵活、嵌套存储 ✓ 正确答案 C 关系模型 schema 灵活 D 两者模型相同
# 28. 文档模型的反范式与查询性能,嵌套 vs 引用? A 嵌套无数据重复 B 嵌套读一次取回、无关联查询但数据重复,引用数据唯一但需多次查找 ✓ 正确答案 C 引用查询性能更好 D 嵌套与引用等价
# 29. 聚合根(Aggregate Root)的文档建模? A 聚合根映射为文档,聚合内实体嵌套其中,利用文档原子性实现聚合内强一致 ✓ 正确答案 B 聚合内实体分开存储 C 聚合根无需文档 D 聚合间强关联
# 30. JSONB 的查询能力,@>、?|、jsonb_path_query 等操作符如何支撑半结构化查询,与关系列的查询能力边界在哪里? A JSONB 支持外键 B JSONB 有强类型检查 C @>、?、jsonb_path_query 等操作符配合 GIN 支撑半结构化查询,但类型检查弱于关系列 ✓ 正确答案 D JSONB 查询速度总快于关系列
# 31. MongoDB 与 PostgreSQL 的事务对比? A PG 支持完整 ACID 与多隔离级别,MongoDB 事务较新、隔离级别少 ✓ 正确答案 B MongoDB 事务与 PG 一样成熟 C PG 不支持事务 D MongoDB 无事务
# 32. MongoDB 的聚合管道与 SQL 的对比? A 聚合管道用阶段的链式管道处理文档,与 SQL 的 WHERE/GROUP BY/JOIN 等对应 ✓ 正确答案 B 聚合管道不支持分组 C $lookup 相当于内连接 D SQL 比聚合管道更灵活
# 33. 关系数据库的 JSON 列索引? A 可用 GIN 索引、表达式索引或虚拟列索引,针对特定键或操作符加速 ✓ 正确答案 B JSON 列无法建索引 C 普通 B-tree 可直接索引整个 JSON D JSON 索引覆盖所有查询
# 34. Database-per-Tenant 的隔离性、性能、运维成本? A 运维成本低 B 隔离性差 C 隔离性最好、无租户干扰,但运维成本高、需管理大量数据库 ✓ 正确答案 D 适合租户数极多场景
# 35. RLS 的绕过风险,超级用户、表 owner、FORCE ROW LEVEL SECURITY? A 表 owner 不绕过 RLS B RLS 绝对不可绕过 C 超级用户、表 owner、BYPASSRLS 角色可绕过 RLS,FORCE ROW LEVEL SECURITY 可约束 owner ✓ 正确答案 D FORCE 使 RLS 失效
# 36. 多租户数据隔离的三种模式,单数据库单 schema、单数据库多 schema、多数据库? A 多库成本最低 B 共享表成本最低、多库隔离最强,按租户数与隔离要求选择 ✓ 正确答案 C 共享表隔离最强 D 三种模式隔离性相同
# 37. 多租户数据迁移的挑战,单 schema 迁移 vs 多 schema 迁移? A 迁移无需考虑一致性 B 多 schema 迁移只需一次 C 单 schema 迁移最复杂 D 单 schema 迁移简单但影响所有租户,多 schema 迁移需遍历所有 schema、易遗漏 ✓ 正确答案
# 38. RLS 的会话设置(SET app.tenant_id)? A 用 SET app.tenant_id 设置租户上下文,策略用 current_setting 读取,实现按租户隔离 ✓ 正确答案 B 会话变量无需设置 C current_setting 读取数据库配置 D RLS 策略无法引用会话变量
# 40. 自然键与代理键(Surrogate Key)的取舍,业务变更对系统的影响? A 代理键有业务意义 B 自然键稳定 C 代理键稳定无业务意义,业务变更不影响主键,自然键易受业务变化影响 ✓ 正确答案 D 自然键无需唯一约束
# 41. 派生列(Derived Column)的应用,用户统计、订单总金额? A 派生列与源数据无关 B 派生列无法自动维护 C 派生列需每次实时计算 D 派生列存储可计算值加速查询,可用生成列由数据库自动维护一致性 ✓ 正确答案
# 43. 雪花模型(Snowflake Schema)的取舍? A 雪花模型查询更快 B 雪花模型维度表进一步规范化,节省存储但查询需更多 JOIN、性能下降 ✓ 正确答案 C 雪花模型无冗余 D 雪花与星型相同
# 44. 大宽表与列存数据库的协同,Parquet、ORC、ClickHouse? A 行存适合宽表分析 B 列存适合窄表 C Parquet 是行存格式 D 列存按列存储、列裁剪与高压缩,适合宽表,Parquet/ORC 是列式文件格式、ClickHouse 是列式数据库 ✓ 正确答案
# 45. 大宽表(Wide Table)的应用场景,数据仓库、用户画像、订单事实表? A 大宽表加列容易 B 大宽表只用于 OLTP C 大宽表用于数据仓库、用户画像、订单事实表,减少 JOIN 但加列成本高 ✓ 正确答案 D 大宽表字段少
# 46. 稀疏数据的 EAV 模型(Entity-Attribute-Value)的约束冲突? A EAV 值可加非空约束 B EAV 有强类型约束 C EAV 查询简单 D EAV 灵活适合稀疏属性,但 value 无强类型、查询需自连接、约束弱 ✓ 正确答案
# 47. 何时使用文档数据库(MongoDB),可变 Schema、嵌套结构? A 文档数据库适合强事务 B 可变 schema、嵌套结构、快速迭代时适合,强事务与复杂 JOIN 场景不适合 ✓ 正确答案 C 文档数据库适合复杂 JOIN D 文档数据库 schema 固定
# 48. 文档数据库模拟关系数据库,嵌入式文档 vs 引用(DBRef)? A 嵌入式文档无重复 B 嵌入式文档读一次取回但数据重复,引用(DBRef)数据唯一但需关联查询 ✓ 正确答案 C 引用无需查询 D 嵌入式与引用等价
# 49. MongoDB 在 OLTP 场景的取舍? A MongoDB 事务强于 SQL B 高吞吐、灵活 schema、单文档原子,但多文档事务较新、无强约束 ✓ 正确答案 C MongoDB 有强外键约束 D MongoDB 适合复杂 JOIN
# 50. PostgreSQL BYPASSRLS 属性的作用,拥有该属性的角色如何绕过行级安全(RLS)策略,与超级用户权限的差异及安全边界? A 拥有该属性的角色绕过 RLS,但只授予需访问全部数据的角色,区别于超级用户 ✓ 正确答案 B BYPASSRLS 授予超级用户权限 C BYPASSRLS 不影响 RLS D 普通角色应默认授予 BYPASSRLS
# 51. MySQL 多 schema 的限制? A MySQL 跨库事务无限制 B MySQL 支持实例内多 schema 独立概念 C MySQL 中 schema 与 database 等价,多 schema 即多库,跨库查询与事务有限 ✓ 正确答案 D MySQL schema 与 PG 相同
# 52. RLS 与 ORM 的协同? A 连接池无需处理租户上下文 B ORM 必须实现 RLS C 应用设置租户上下文,RLS 在数据库层自动过滤,ORM 无需感知 RLS ✓ 正确答案 D RLS 与 ORM 冲突
# 53. tenant_id 列的设计准则? A tenant_id 可不建索引 B tenant_id 应作索引前缀并强制查询条件,配合 RLS 保证隔离 ✓ 正确答案 C 查询可不带 tenant_id D tenant_id 只用于展示
# 55. 雪花 ID 的趋势递增特性与索引性能? A 雪花 ID 由时间戳+机器+序列号组成,趋势递增,对索引写入友好 ✓ 正确答案 B 雪花 ID 完全随机 C 雪花 ID 与 UUID v4 相同 D 雪花 ID 无分布式能力
# 56. INT 与 BIGINT 的选择? A INT 范围最大 B INT 省空间但约 21 亿上限,BIGINT 范围大,数据量大或分布式时用 BIGINT ✓ 正确答案 C BIGINT 与 INT 相同 D 分布式用 INT
# 57. Snowflake ID 的时钟回拨? A 时钟回拨可能导致 ID 重复,需检测并等待或拒发,保证唯一性 ✓ 正确答案 B 时钟回拨不影响 ID C 雪花 ID 无时钟依赖 D 时钟回拨只影响性能
# 58. UUID v7 与雪花 ID 的对比? A UUID v7 是 64 位 B UUID v7 是 128 位标准 ID,雪花 ID 是 64 位可自定义,两者都趋势递增 ✓ 正确答案 C 雪花 ID 是 128 位 D 两者都随机无序
# 59. 主键与 UUID v1 的隐私问题? A UUID v1 与 v4 相同 B UUID v1 完全随机 C UUID v1 含 MAC 地址会泄露机器信息,对外暴露主键时不应使用 ✓ 正确答案 D UUID v1 无隐私风险
# 60. OLTP 与 OLAP 的范式差异? A OLTP 用反范式 B OLTP 高范式保证一致性,OLAP 反范式(星型/宽表)提升查询性能 ✓ 正确答案 C OLAP 用 3NF D 两者范式相同
# 61. EAV(实体-属性-值)模型的查询复杂度,动态属性带来的多表连接与类型转换代价,何时该用 JSONB 或宽表替代? A EAV 多属性需自连接与类型转换、查询复杂,属性适中时用 JSONB 或宽表替代 ✓ 正确答案 B EAV 查询简单 C EAV 无需类型转换 D EAV 适合属性多且固定的场景
# 62. 宽表在 ETL 中的处理策略,动态加列对管道的影响、Schema-on-Write 与 Schema-on-Read 的取舍,以及列裁剪与行存/列存的选择? A 动态加列影响管道,Schema-on-Read 更灵活,分析场景用列存作列裁剪 ✓ 正确答案 B 列存适合点查 C Schema-on-Write 更灵活 D 动态加列不影响管道
# 64. 稀疏列的存储格式(Parquet)? A Parquet 是行存格式 B Parquet 列存 + 压缩让稀疏列 NULL 几乎不占空间,列裁剪只读所需列 ✓ 正确答案 C Parquet 对稀疏列无优化 D Parquet 必须读全列
# 65. JSON Schema 在数据库中的应用,用 CHECK 约束与 jsonb_typeof 保障半结构化数据质量,与文档数据库的 schema 校验差异及适用场景? A CHECK 约束不支持 JSONB B JSONB 无法加约束 C jsonb_typeof 只用于查询 D 用 CHECK 约束 + jsonb_typeof 校验 JSONB 类型,保障半结构化数据质量 ✓ 正确答案
# 66. 文档模型的 Schema 演进? A 文档模型字段增减无需迁移整表、演进成本低,但需校验器控制数据质量 ✓ 正确答案 B 文档模型演进需重建整表 C 文档模型有强制 schema D 文档模型无法演进