# 1. MongoDB 多文档事务(4.0+)的实现,基于 WiredTiger 的 MVCC? A 事务提交无需多数派,单节点即可完成 B 事务基于 WiredTiger 的 MVCC 快照隔离,提交需多数派确认 ✓ 正确答案 C 事务内读取基于最新提交,不提供快照 D 多文档事务只能在单机模式下运行
# 2. 副本集的选举(Election)机制,基于 Raft? A 选举完成后无需同步数据 B 选举只需任意一个 secondary 自封 primary C priority 高的节点选举时一定失败 D 选举基于多数派投票,借鉴 Raft 但并非严格 Raft ✓ 正确答案
# 3. MongoDB 分片(Sharding)的架构,mongos、config server、shard? A mongos 存储数据,shard 负责路由 B config server 保存 chunk 元数据,mongos 路由查询到 shard ✓ 正确答案 C 每个 shard 必须是一个单节点 D 分片集群不需要 config server
# 4. 分片键(Shard Key)的选择,基数、频率、单调性? A 单调递增键会导致写入集中在最新分片,产生热点 ✓ 正确答案 B 分片键基数越低越好,便于集中 C 分片键可以随意更改 D 高频取值有助于数据均匀分布
# 5. 副本集(Replica Set)的架构,Primary、Secondary、Arbiter? A Arbiter 存储全部数据并参与写入 B Primary 可以同时有多个,共同写 C Secondary 不接受写操作但会存储数据并可被选举 D Arbiter 参与选举投票但不存储数据 ✓ 正确答案
# 6. 分片集群的 chunk 分裂与均衡(chunkSize、jumbo chunk)对查询性能的影响 A chunk 越大均衡粒度越精细 B jumbo chunk 无法分裂也无法迁移,导致分片数据倾斜 ✓ 正确答案 C chunk 分裂与 Balancer 无关 D jumbo chunk 是良性状态,不影响性能
# 7. MongoDB 跨分片事务如何用两阶段提交(prepare/commit)协调多个分片?协调者或分片故障时事务如何恢复? A prepare 阶段不持久化事务状态,故障无法恢复 B 跨分片事务无需协调者,各分片自行提交 C 跨分片事务由 mongos 协调,采用两阶段提交(prepare/commit) ✓ 正确答案 D 跨分片事务提交不需多数派确认
# 8. MongoDB 事务的读关注默认值(local)与强一致场景下 majority 的取舍?事务内 write concern 与 read concern 的组合如何影响性能与一致性? A 事务读关注默认 local,majority 可避免读到已回滚数据但增加延迟 ✓ 正确答案 B 事务内 write concern 越低越持久 C read concern majority 提高性能 D 事务不需要 write concern
# 9. Balancer 的工作原理,自动迁移分块? A Balancer 无法手动开关 B Balancer 只负责分裂 chunk,不迁移 C Balancer 迁移 chunk 不影响任何性能 D Balancer 自动在各分片间迁移 chunk,把数据多的分片迁移到少的 ✓ 正确答案
# 10. 分片集群的元数据存储,config server? A config server 存储实际数据 B config server 存储 chunk 元数据,通常以副本集高可用部署 ✓ 正确答案 C config server 故障不影响集群路由 D config server 只需一个节点即可
# 11. 副本集的回滚(Rollback)机制? A 回滚丢弃旧 primary 未复制到多数派的写入,数据以多数派为准 ✓ 正确答案 B 回滚后数据以旧 primary 为准 C 回滚只发生在正常运行时 D 回滚不需要 oplog 比较
# 12. MongoDB 事务的实现? A 事务提交与副本集无关 B 事务基于单节点内存实现,无需持久化 C 事务基于 WiredTiger MVCC 快照隔离,提交需多数派确认 ✓ 正确答案 D 事务默认读关注 local 即可
# 13. 分片策略,哈希、范围、Zone? A Zone 分片用于扩大数据分布 B 范围分片对单调键无热点问题 C 哈希分片保证数据均匀分布,但范围查询效率低 ✓ 正确答案 D 哈希分片支持高效范围查询
# 14. 跨分片事务的支持与性能边界(读偏好、聚合限制) A 跨分片事务内读操作必须路由到主节点,且提交延迟较高 ✓ 正确答案 B 跨分片事务可以自由使用 secondary 读偏好 C 跨分片事务性能与单分片无差异 D 跨分片聚合无内存限制
# 15. Balancer 迁移对线上读写的影响(moveChunk 抖动)与迁移窗口配置 A 迁移只能在高峰期执行 B 迁移 chunk 不影响任何读写性能 C moveChunk 会占用网络与 IO 并造成读写抖动,可通过迁移窗口避开高峰 ✓ 正确答案 D 迁移窗口无法配置
# 16. 副本集选举中 priority 与 votes 参数如何影响选主?为什么 votes 为 0 的成员既不能投票也不能被选举? A votes 为 0 的节点永远无法当选 ✓ 正确答案 B votes 为 0 的成员不参与投票,但可被选举为 primary C priority 与当选无关 D votes 决定节点是否存储数据
# 17. MongoDB 分片集群的 zone 与 tag 设置如何实现数据本地化(多租户/合规)? A 通过 tag 给分片打标、zone 绑定分片键范围,实现数据本地化 ✓ 正确答案 B zone 只用于扩大分片数量 C tag 与数据路由无关 D zone 无法实现多租户隔离
# 18. mongos 的连接池与会话亲和性(对事务的支持) A mongos 连接池与事务无关 B mongos 通过会话维护事务状态,确保同一事务路由到正确分片 ✓ 正确答案 C 跨分片事务不需要会话 D mongos 是存储数据的分片
# 19. 为什么大事务会报 TransactionTooLargeForCache?事务写集大小限制与拆分批次策略如何设计? A 事务写集大小无限制 B 大事务写集需常驻缓存,超过缓存限制会报错,应拆分批次 ✓ 正确答案 C 该错误与事务大小无关 D 拆分批次会使事务更慢,应避免