# 1. Raft 的 leader election 中 term、election timeout、majority vote 如何起作用 A 获得超过半数节点投票的候选者才能成为 leader ✓ 正确答案 B 选举超时固定不变,以保证所有节点同时超时 C 每个节点在一个 term 内可以投给多个候选者 D 只有获得全部节点投票才能成为 leader
# 2. Raft 的"safety"保证,即 State Machine Safety A 允许不同节点以不同顺序应用命令 B 只保证 leader 自身状态机安全 C 保证同一索引上所有节点应用相同的条目 ✓ 正确答案 D 与日志复制无关,仅由选举决定
# 3. Raft 中 Follower、Candidate、Leader 三种角色的状态机 A 一个 term 内存在多个 leader 是允许的 B Candidate 获得多数派投票后转为 Follower C Follower 收到更高 term 的请求会转为 Leader D 任何 term 内最多一个 leader,其余为 follower/candidate ✓ 正确答案
# 4. Raft 的 ReadIndex 与 Lease Read 在实现线性一致读上有何差异,各自依赖什么前提? A ReadIndex 依赖时钟同步保证安全 B ReadIndex 需要本地读不经过任何 RPC C Lease Read 必须向多数派发送心跳才能读取 D Lease Read 依赖时钟,时钟漂移可能读到过期数据 ✓ 正确答案
# 5. Raft 的网络分区与脑裂的"少数派不服务" A 少数派孤 leader 仍能提交写入 B 分区期间两边都能产生新 leader C 分区恢复后少数派丢弃未提交日志以回退 ✓ 正确答案 D 脑裂必然导致已提交数据丢失
# 6. Raft 日志复制的 batch 与 pipeline 优化如何提升吞吐,对延迟有何影响? A batch 增加 RPC 次数 B pipeline 让多个 AppendEntries 并行在途,提升吞吐 ✓ 正确答案 C pipeline 使每条日志提交延迟严格为一个 RTT D batch 与 pipeline 都无法提升吞吐
# 7. Raft 的"线性一致性"(linearizability)保证 A leader 直接本地读即可保证线性一致 B Raft 的线性一致与日志复制无关 C 线性一致允许多个节点看到不同顺序 D 写操作经日志全序提交应用,保证线性一致 ✓ 正确答案
# 8. etcd-raft 的工程实现与 Raft 论文的差异 A etcd-raft 引入 PreVote 与 CheckQuorum 增强分区鲁棒性 ✓ 正确答案 B etcd-raft 完全照搬论文,无任何增强 C etcd-raft 不支持线性一致读 D etcd-raft 使用全局分歧的 joint consensus 而非单节点变更
# 9. Raft 协议的设计哲学,可理解性优先 vs Paxos 的晦涩 A Raft 把共识拆解为选主、复制、安全三个子问题,并采用强 leader 模型,降低实现与验证难度 ✓ 正确答案 B 可理解性优先意味着以牺牲正确性为代价 C Paxos 比 Raft 更易直接实现 D Raft 完全摒弃了 Paxos 的全部思想
# 10. Raft 的 PreVote 优化(避免 term 无效增加) A 预投票会直接打断现有 leader B 预投票获得多数派后才递增 term 发起正式选举 ✓ 正确答案 C 预投票用于提高写入吞吐 D 预投票使 term 无限增长
# 11. Raft 的 log replication,包括 AppendEntries、commitIndex、lastLogTerm A lastLogTerm 与日志安全无关 B commitIndex 由单个 follower 直接决定 C AppendEntries 用 prevLogIndex/prevLogTerm 做一致性检查 ✓ 正确答案 D 日志复制不需要多数派确认
# 12. Raft 的"membership change"(joint consensus)单节点变更 A 成员变更期间可以没有共识保证 B joint consensus 用新旧配置交集作为共识基础 C 单节点变更每次只增删一个节点,保证相邻配置多数派相交 ✓ 正确答案 D 单节点变更一次可同时删除多个节点
# 13. Raft 的"snapshot"机制如何压缩旧日志 A 快照会无限增长无法清理 B 快照会丢弃未被提交的日志 C 快照机制与 InstallSnapshot RPC 无关 D 快照将已提交并应用的日志压缩为状态机快照 ✓ 正确答案
# 14. Raft 的"日志匹配"(log matching property)的不变量 A 日志匹配由客户端请求保证 B 日志匹配只要求 term 单调递增 C 日志匹配不保证前缀一致 D 相同索引处 term 相同则随后条目与前缀都相同 ✓ 正确答案
# 15. Raft 的 leader election、log replication、safety 三个子问题 A 日志复制与选主无关 B 三个子问题彼此独立、互不依赖 C safety 只负责日志复制 D 选主、日志复制、安全三者协同构成完整共识 ✓ 正确答案
# 16. PreVote 与 CheckQuorum 分别解决网络分区下的哪类具体故障场景? A CheckQuorum 防止旧 leader 在分区后继续提交 ✓ 正确答案 B PreVote 解决 leader 持续提交问题 C 两者都用于提升写吞吐 D CheckQuorum 只影响日志复制速度
# 17. Raft 与 Viewstamped Replication(VR)的对应关系 A Raft 是 VR 的拜占庭版本 B Raft 与 VR 完全无关 C VR 的 view change 对应 Raft 的日志复制 D VR 的 view 对应 Raft 的 term,primary 对应 leader ✓ 正确答案