多级缓存与限流调度

共 22 题
#

1. CPU 缓存行与程序性能中按行优先遍历二维数组更快,缓存行(64B)失效与伪共享(false sharing)如何影响多线程性能?

A 行优先遍历利用空间局部性命中缓存行更快,伪共享是不同线程写同一缓存行内不同变量导致反复失效 ✓ 正确答案
B 伪共享指线程间真正共享同一变量
C 缓存行大小与程序性能无关
D 列优先遍历比行优先更快,因为列优先局部性更好
#

2. 随机公平排队(SFQ)的哈希冲突中不同流映射到同一队列时如何互相干扰,如何用流感知哈希或按流维护状态降低冲突?

A SFQ 为每个流分配独立队列,无冲突
B 哈希冲突不影响公平性
C 增大队列数必然完全消除冲突
D 哈希冲突使不同流进同一队列互相挤占带宽,可用流感知哈希或热流单独队列降低影响 ✓ 正确答案
#

3. Deficit Round Robin 的公平调度中 deficit counter 如何实现按权重分配带宽且免排序,与 WFQ 的复杂度对比?

A deficit 累计加 quantum 实现按权重分配带宽且免排序,复杂度低于 WFQ ✓ 正确答案
B DRR 需要按虚拟时间排序所有队列
C DRR 的 deficit 与权重无关
D WFQ 比 DRR 实现更简单
#

4. 多级缓存的包含策略中 inclusive 与 exclusive 的区别,为什么 L1/L2 常 exclusive、LLC 常见 inclusive,对命中率与一致性的影响?

A inclusive 是上级与下级数据互斥
B exclusive 缓存一致性维护最简单
C all 缓存都必然是 inclusive
D L1/L2 常 exclusive 提高容量利用率,LLC 常见 inclusive 简化一致性维护 ✓ 正确答案
#

5. ECN 与 DCTCP 中路由器如何用标记代替丢包传递拥塞信号,DCTCP 如何利用 ECN 精确控制队列长度,与 TCP Reno 的差异?

A ECN 通过丢包来感知拥塞
B ECN 用标记代替丢包传递拥塞信号,DCTCP 用标记比例估计拥塞并平滑减窗 ✓ 正确答案
C DCTCP 与 Reno 的拥塞响应完全相同
D DCTCP 不理解 ECN 标记
#

6. SJF 的最优性与缺陷中最短作业优先最小化平均等待时间,但长作业可能饿死,抢占式 SRTF 如何改变这一局面?

A SJF 以先来先服务方式运行,无抢占
B SRTF 不会导致长作业饥饿
C SJF 最小化平均等待时间,但新短作业不断插入会导致长作业饿死 ✓ 正确答案
D SJF 不需要知道作业长度
#

7. BBR 与 CUBIC 的区别中 BBR 用带宽与 RTT 估计 BDP 而非依赖丢包,在浅缓冲/深缓冲链路分别表现如何?

A BBR 依赖丢包信号来调整窗口
B BBR 用 BDP(带宽×RTT)建模并主动避免填满缓冲区,减少丢包依赖 ✓ 正确答案
C CUBIC 在浅缓冲下表现优于 BBR
D BBR 与 CUBIC 的拥塞控制完全相同
#

8. CUBIC 的拥塞窗口曲线中在 BDP 大的链路上比 Reno/AIMD 增长更快,其凹/凸阶段切换与公平收敛性如何?

A 凸阶段快速探测带宽、凹阶段在 Wmax 附近稳定,时间驱动使其在大 BDP 链路增长更快 ✓ 正确答案
B CUBIC 每 RTT 线性加一,与 Reno 相同
C CUBIC 的窗口增长完全依赖 RTT
D CUBIC 在 Wmax 附近仍快速增长
#

9. WFQ 的虚拟时间中如何用 finish time 按权重公平排队,与严格优先级队列在延迟保障与带宽公平上的差异?

A WFQ 与 SP 的调度结果完全相同
B WFQ 用加权 finish time 实现按权重公平分配带宽,SP 则保证绝对优先级但可能导致低优先级饿死 ✓ 正确答案
C WFQ 不隔离流之间的干扰
D SP 能保证所有流的带宽公平
#

10. 多级缓存(本地缓存加 Redis 加 DB)的更新策略中 Cache-Aside 与 Write-Through 的差异,如何避免缓存击穿与雪崩?

A Cache-Aside 每次写都同步写缓存和 DB
B Write-Through 读 miss 时才回填 DB
C Cache-Aside 写 DB 后删缓存、由应用管理,Write-Through 写缓存同步写 DB;击穿用互斥重建、雪崩用 TTL 抖动 ✓ 正确答案
D 击穿与雪崩的治理手段完全相同,无需区分
#

11. 令牌桶与滑动窗口的精度对比中令牌桶允许突发到桶容量、滑动窗口平滑但内存/实现成本高,如何按业务选择?

A 令牌桶能精确控制任意时刻的瞬时速率
B 滑动窗口实现成本总是低于令牌桶
C 两种方案对突发的容忍度完全相同
D 令牌桶允许突发到桶容量且实现简单,滑动窗口更平滑但内存/实现成本高 ✓ 正确答案
#

12. 限流中的公平性中公平队列(FQ)如何按流分配带宽避免饿死,与令牌桶按总量限制在公平性上的差异?

A FQ 按流公平分配避免饿死,令牌桶只限制总速率不区分流 ✓ 正确答案
B FQ 只能限制总量,不能保证流间公平
C 令牌桶与 FQ 解决的问题完全相同
D 令牌桶天然保证各流之间公平
#

13. 多级缓存的级联故障中缓存雪崩(同时过期)、击穿(热点失效)、穿透(不存在 key)在各缓存层如何传播,预防手段有哪些?

A 雪崩与击穿是同一成因,治理手段相同
B 布隆过滤器解决的是热点过期问题
C 多级缓存不需要任何兜底即可应对故障
D 穿透用布隆/空值缓存、击穿用互斥重建、雪崩用 TTL 抖动与多级兜底 ✓ 正确答案
#

14. CPU 调度中的饿死与优先级反转中短作业优先会饿死长作业,老化(aging)与优先级继承如何解决?

A SJF 因新短作业不断到达饿死长作业,老化提升等待作业优先级,优先级继承防止持锁被抢占 ✓ 正确答案
B 老化会让短作业更快饿死
C 优先级反转只影响实时系统,不影响普通系统
D 优先级继承解决的是短作业饿死问题
#

15. 网关限流的分布式计数中多实例共享限流状态如何用 Redis+Lua 原子操作,节点故障导致计数丢失时如何保证限流不失效?

A Redis+Lua 保证计数原子性,Redis 故障时用本地限流或降级策略兜底 ✓ 正确答案
B Lua 脚本不能保证原子性
C 多实例各自独立计数即可,无需共享状态
D Redis 故障时限流状态永不丢失
#

16. CPU 三级缓存的容量与延迟量级中 L1/L2/L3 的典型容量与访问延迟差异,为什么'缓存友好'算法能比理论复杂度更决定实际性能?

A L1 缓存容量大于 L3
B 缓存未命中代价远大于命中,缓存友好(局部性好)的算法可能比理论复杂度低的算法更快 ✓ 正确答案
C 缓存局部性与算法性能无关
D 主存访问延迟接近 L1 命中延迟
#

17. TCP Vegas 的拥塞控制中为什么用 RTT 变化(而非丢包)探测拥塞能减少排队延迟,其公平性与 Reno 相比的问题?

A Vegas 与 Reno 一样靠丢包触发减窗
B Vegas 会填满缓冲区导致高排队延迟
C Vegas 的公平性完全不受 RTT 影响
D 用 RTT/吞吐差探测拥塞,在丢包前调整窗口减少排队延迟,但公平性受 RTT 影响 ✓ 正确答案
#

18. TCP 收发缓冲区与 BDP 中缓冲区至少应为带宽×RTT 才能跑满吞吐,过小限速、过大的内存代价如何权衡?

A 缓冲区越小吞吐越高
B 缓冲越大延迟越低
C BDP 与缓冲区大小无关
D 缓冲区至少应为带宽×RTT 才能跑满吞吐,太大会浪费内存并增大延迟 ✓ 正确答案
#

19. 令牌桶与漏桶的区别中为什么令牌桶允许突发而漏桶强制平滑,各自的实现与适用场景?

A 令牌桶输出速率恒定,不允许突发
B 令牌桶允许突发到桶容量,漏桶固定输出速率强制平滑 ✓ 正确答案
C 漏桶允许突发超过桶容量
D 两种方案对突发行为的处理完全相同
#

20. 分布式限流的精度与成本中 Redis 集中计数 vs 本地令牌桶+定期配额同步,超发窗口与降级策略如何设计?

A 本地令牌桶状态全局精确,无超发
B Redis 集中计数每次请求延迟最低
C Redis 集中计数精确但网络成本高,本地令牌桶+配额同步低延迟但存在超发窗口 ✓ 正确答案
D 两种方案的成本与精度完全相同
#

21. 端到端背压的实现中从 TCP 窗口、队列积压到应用层限流如何逐级反馈,为什么缺少背压会导致内存溢出与重试风暴?

A 背压只存在于 TCP 层,与应用层无关
B 无限缓冲可以完全替代背压机制
C 背压通过 TCP 窗口、有界队列、应用限流逐级反馈上游限速,缺背压会导致内存溢出与重试风暴 ✓ 正确答案
D 重试风暴与背压无关
#

22. 自适应限流(如 ConcurrencyLimiter)中如何根据线程利用率与排队延迟动态调整并发上限,过载时如何快速失败而非排队?

A 根据线程利用率与排队延迟动态调整并发上限,过载时快速失败而非排队 ✓ 正确答案
B 过载时让请求排队等待能更好地保护系统
C 自适应限流的并发上限是固定不变的
D 线程利用率与并发上限无关