# 1. WiredTiger 存储引擎的特性,MVCC、压缩、文档级锁? A WiredTiger 是 MongoDB 默认的 MMAPv1 引擎 B WiredTiger 使用全局数据库锁,并发低 C WiredTiger 不支持任何压缩 D WiredTiger 支持 MVCC 快照隔离、压缩与文档级锁 ✓ 正确答案
# 2. Change Streams 与 Kafka 的协同(Debezium MongoDB Connector)? A Kafka 无法消费 Change Streams 事件 B Change Streams 是 Kafka 的替代品 C Debezium 订阅 Change Streams 并把变更事件发布到 Kafka ✓ 正确答案 D Change Streams 只能用于本地实时查询
# 3. Change Streams 的 resume token、断点续传? A resume token 只能用于单次会话 B resume token 与 oplog 无关 C resume token 标识变更流位置,用于断点续传,但依赖 oplog 未被覆盖 ✓ 正确答案 D resume token 会导致重复读取且无法恢复
# 4. Change Streams 的概念与应用,实时捕获集合变更? A Change Streams 只能捕获查询结果 B Change Streams 实时捕获集合变更,支持 insert/update/delete 等事件 ✓ 正确答案 C Change Streams 需要轮询数据库 D Change Streams 不支持 delete 事件
# 5. Change Streams 的可用性与限制(open 变更流、事务中的变更、TTL 删除是否产生事件) A Change Streams 无需保持 open 状态 B 事务内变更在提交前即可见 C TTL 删除不产生任何变更事件 D 事务内变更在提交后可见,TTL 删除会产生 delete 事件 ✓ 正确答案
# 6. drop、dropDatabase、rename 集合为何会触发 Change Streams 的 invalidate 事件并终止游标?应用应如何感知并重建变更流? A drop/rename 集合会触发 invalidate 事件并终止变更流游标 ✓ 正确答案 B invalidate 事件不会终止游标 C invalidate 后应用可继续用原游标接收事件 D invalidate 只由普通数据插入触发
# 7. Change Streams 依赖 oplog 的时间窗口,resume token 对应的 oplog 被覆盖后为何无法续传?如何规划 oplog 大小? A oplog 大小与续传无关 B oplog 是环形缓冲,resume token 对应记录被覆盖后无法续传,需规划足够大的 oplog ✓ 正确答案 C oplog 永远不会被覆盖 D resume token 不依赖 oplog
# 8. WiredTiger 的压缩算法,snappy、zlib、zstd? A snappy 压缩率最高 B zlib 速度最快但压缩率最低 C snappy 速度快压缩率低,zstd 在压缩率与速度间取得平衡 ✓ 正确答案 D 压缩算法不影响 CPU 开销
# 9. WiredTiger 的检查点(Checkpoint)机制? A 检查点把已提交数据持久化到磁盘,崩溃时结合 journal 回放恢复 ✓ 正确答案 B 检查点只在数据库关闭时生成 C 检查点与崩溃恢复无关 D 检查点会阻塞所有写入
# 10. WiredTiger 与原 MMAPv1 引擎的对比? A WiredTiger 不支持压缩 B MMAPv1 并发高于 WiredTiger C WiredTiger 采用文档级锁并支持压缩,优于 MMAPv1 的全局锁 ✓ 正确答案 D MMAPv1 是当前默认引擎
# 11. Change Streams 的事件语义,insert/update/replace/delete 与事务事件? A update 事件包含 updateDescription,delete 事件包含 documentKey ✓ 正确答案 B delete 事件包含全量文档 C 事务内变更在提交前即可见 D replace 事件只包含字段级描述
# 12. Change Streams 的断点恢复,resume token 的实现与集群切换? A 分片集群中一个 token 即可管理所有分片 B resume token 在集群切换后必然失效 C resume token 与 oplog 无关 D resume token 基于 oplog 时间戳,集群切换后只要 oplog 保留即可续传 ✓ 正确答案
# 13. validator 的 validationLevel/validationAction(warn/error)与存量文档的兼容处理 A validationLevel 只决定违规处置 B validator 默认会校验所有存量文档 C validationAction: error 拒绝违规写入,warn 仅记录警告 ✓ 正确答案 D warn 模式仍会拒绝写入
# 14. WiredTiger 的缓存管理与驱逐(cache_size、eviction)对读写延迟的影响 A 缓存只影响读,不影响写 B cache_size 越大驱逐越频繁 C 驱逐与读写延迟无关 D 缓存满时触发驱逐,若驱逐不及时会导致写延迟上升 ✓ 正确答案
# 15. WiredTiger 的 journal 与 checkpoint 如何配合崩溃恢复?未 checkpoint 的数据如何通过 journal 回放恢复? A checkpoint 记录所有未提交写入 B 崩溃后无需 journal,直接丢失未 checkpoint 数据 C 崩溃后从最近 checkpoint 恢复,再回放 journal 恢复未 checkpoint 的已提交写入 ✓ 正确答案 D journal 只在正常关闭时写入
# 16. WiredTiger 的 block_compressor 与索引前缀压缩对写放大和查询性能有何影响?压缩率与 CPU 开销如何权衡? A 索引前缀压缩会增大索引存储 B 压缩率越高 CPU 开销越低 C 压缩不影响写放大 D 压缩率越高磁盘越省但 CPU 开销越大,需在空间与 CPU 间权衡 ✓ 正确答案
# 17. Change Streams 与事务,事务内写入的变更事件何时对外可见? A 事务内变更在事务提交后才对外可见,回滚则不产生事件 ✓ 正确答案 B 事务内变更在写入时即对外可见 C 回滚的事务也会产生变更事件 D 事务中变更在提交前即可被消费
# 18. WiredTiger 的快照隔离与并发控制,MVCC 与锁的配合? A 锁用于控制读读冲突 B 读操作会阻塞写操作 C 快照隔离让所有写串行 D 读基于 MVCC 快照不阻塞写,写通过文档级锁控制冲突 ✓ 正确答案
# 19. Change Streams 在分片集群中的事件顺序保证(全局顺序 vs 分片内顺序) A 同一分片内顺序保证,跨分片全局顺序不保证 ✓ 正确答案 B 分片集群中全局顺序严格保证 C 跨分片事件顺序也严格保证 D 分片内事件顺序不保证