请求到持久化与权衡

共 62 题
#

1. "写请求返回成功"前需要经过 cache 失效 → DB 写入 → binlog(MySQL)→ 主从同步 → 客户端确认,讨论 commit latency 的临界点。

A 若要求主从同步完成才返回,延迟最高但数据最安全 ✓ 正确答案
B cache 失效与延迟无关
C 返回成功前无需写 binlog
D 异步同步必然不丢数据
#

2. "缓存击穿"(cache stampede)的处理,singleflight、分布式锁如何应用。

A 分布式锁会让更多请求打数据库
B 缓存击穿是缓存剩余空间不足
C singleflight 让同一 key 的并发请求只回源一次,避免击穿数据库 ✓ 正确答案
D 缓存击穿与热 key 无关
#

3. "缓存穿透"(cache penetration)的处理,空值缓存、布隆过滤器如何应用。

A 布隆过滤器可把"不存在"的请求挡在数据库之前 ✓ 正确答案
B 缓存穿透是缓存溢出
C 空值缓存会加重数据库压力
D 布隆过滤器有漏判
#

4. "读己之写"(read-your-writes)一致性,在主从架构下的 session 路由策略。

A 读从库总能读到最新
B 主从复制无延迟则无需处理
C session 粘性路由让刚写入的用户读路由到主库,保证读到自己的写入 ✓ 正确答案
D 与 session 路由无关
#

5. "链路预算"(request budget),100ms 总预算的子调用拆分。

A 子调用时间互不影响
B 预算只用于非关键调用
C 总预算越大越好
D 子调用超时应基于剩余预算,避免各跳超时之和超过总预算 ✓ 正确答案
#

6. MySQL 的两阶段提交(XA)vs 单库事务的延迟差异。

A XA 多轮网络交互与协调者,延迟高于单库事务 ✓ 正确答案
B 单库事务延迟更高
C XA 无需 prepare 阶段
D 两者延迟相同
#

7. 从浏览器到数据库的端到端链路,DNS → TCP → TLS → HTTP → 应用线程 → 缓存 → DB → 磁盘。

A 缓存命中可省去 DB 访问,缩短链路延迟 ✓ 正确答案
B DNS 与 TCP 环节无法优化
C 磁盘落盘与延迟无关
D 应用线程排队不影响延迟
#

8. 应用层缓存(Redis)vs 数据库缓存(innodb_buffer_pool)的边界。

A Redis 能减少磁盘 I/O
B 两者都缓存业务计算结果
C buffer_pool 需应用维护一致性
D Redis 缓存业务结果需维护一致性,buffer_pool 透明缓存数据页 ✓ 正确答案
#

9. 数据库 fsync(fdatasync)的延迟贡献,磁盘 WAL 写入的 fsync 在 HDD、SSD、NVMe 的差异(ms → μs)。

A NVMe 的 fsync 延迟远低于 HDD,且可用组提交降低每次事务的 fsync 成本 ✓ 正确答案
B fsync 与持久化无关
C HDD 与 NVMe 的 fsync 延迟相同
D 每次事务都必须独立 fsync 无法合并
#

10. 数据库连接池(HikariCP)的 wait/active 配置与延迟。

A wait 持续升高说明连接池饱和,需考虑加大连接数或缩短查询 ✓ 正确答案
B 连接池越大延迟一定越低
C wait 与连接数无关
D active 越大越好
#

11. "协程"(goroutine、virtual thread、coroutine)在百万并发的实现差异。

A goroutine 用运行时 M:N 调度,栈小,支持大规模并发 ✓ 正确答案
B 协程与线程栈大小相同
C virtual thread 会阻塞 OS 线程
D 协程需 OS 线程一一对应
#

12. "自适应限流"(adaptive concurrency limit)的 AIMD 算法(TCP 拥塞控制类比)。

A 始终固定并发数
B 正常时并发加性增加,检测到过载时乘性减少,类比 TCP 拥塞控制 ✓ 正确答案
C 只在故障时增加并发
D 与延迟无关
#

13. "舱壁隔离"(bulkhead),线程池隔离、信号量隔离、连接池隔离的工程实践。

A 所有调用共享一个线程池
B 用独立线程池/信号量/连接池隔离各调用,避免一个耗尽拖垮整体 ✓ 正确答案
C 信号量隔离会占独立线程
D 隔离与故障无关
#

14. "连接数增加但吞吐不增"的工程诊断,可能瓶颈在 epoll 上限、CPU、内存、I/O、数据库。

A 说明另有瓶颈,需排查 epoll 上限、CPU、I/O、DB 等 ✓ 正确答案
B 连接数就是吞吐瓶颈
C 增加连接必然增加吞吐
D 与 epoll 无关
#

15. "连接预热"(warm-up)的工程,如何避免冷启动的延迟劣化。

A 预热只影响数据库
B 预热提前建立连接与加载资源,避免冷启动首请求的高延迟 ✓ 正确答案
C 冷启动无延迟问题
D 预热与 JIT 无关
#

16. "熔断"(circuit breaker)的滑动窗口,count-based vs time-based。

A 滑动窗口只统计成功
B 两者统计完全相同
C 熔断器不需要滑动窗口
D count-based 按请求数滑动,time-based 按时间滑动,适用流量场景不同 ✓ 正确答案
#

17. "限流"(rate limit)的"溢出"(overflow)策略。

A 溢出请求可丢弃/排队/降级,按业务选择,避免限流引发雪崩 ✓ 正确答案
B 溢出请求一律丢弃最简单
C 排队不增加延迟
D 降级与限流无关
#

18. "mTLS"(mutual TLS)在服务间调用的性能开销。

A 加密开销必然高于握手
B 握手开销在短连接高频调用下显著,连接复用与 session resumption 可优化 ✓ 正确答案
C mTLS 无握手开销
D 证书链大小不影响握手
#

19. "加密传输"(TLS)vs"端到端加密"(E2EE)的边界与代价。

A TLS 保护传输链路,E2EE 保护内容本身,信任边界不同 ✓ 正确答案
B 两者完全相同
C E2EE 服务端可解密内容
D TLS 可做端到端加密
#

20. "加密开销"(encryption overhead)在 HTTPS、TLS、磁盘加密的吞吐影响。

A 现代硬件加速下 AES 加密吞吐影响小,主要开销在握手与密钥管理 ✓ 正确答案
B 加密必然大幅降低吞吐
C 磁盘加密无任何开销
D 硬件加速与加密无关
#

21. "密钥管理服务"(KMS)的中心化与分布式。

A 中心化无单点问题
B 中心化统一管理但可能单点,分布式的本地解密性能好但分发复杂 ✓ 正确答案
C 分布式密钥无需轮换
D 两者无差异
#

22. "缓存键"(cache key)的设计,如何避免 PII 泄漏与租户越权。

A cache key 无需分区
B cache key 应包含租户标识与参数哈希,避免越权与 PII 泄漏 ✓ 正确答案
C 明文手机号适合做 cache key
D 缓存键与租户无关
#

23. "鉴权缓存"(auth cache)的租户边界,cache key 的设计如何避免越权。

A 鉴权缓存与安全无关
B 鉴权缓存可跨租户共享
C 权限变更无需失效缓存
D auth cache 的 key 须含租户与用户标识,权限变更需能失效 ✓ 正确答案
#

24. "文件系统"(filesystem)的跨平台差异,ext4、xfs、btrfs、ntfs、FAT32 的工程取舍。

A 所有文件系统都支持快照
B FAT32 支持大文件与权限
C xfs 不支持大文件
D ext4/xfs 是 Linux 主流,FAT32 兼容性最好但功能受限 ✓ 正确答案
#

25. "时区"(timezone)的数据库存储与展示,UTC 优先策略。

A 夏令时不影响存储
B 应存服务器本地时间
C 时区与存储无关
D 数据库统一存 UTC,展示层按用户时区转换,避免夏令时歧义 ✓ 正确答案
#

26. "特性探测"(feature detection)vs"特性协商"(feature negotiation)的客户端/服务器边界。

A negotiation 是显式协商能力(如 ALPN),detection 是探测式尝试 ✓ 正确答案
B 两者相同
C 协商无需双方支持
D 探测永不误判
#

27. "编码"(encoding)的跨平台处理,UTF-8、UTF-16、GBK 的字节序。

A GBK 是国际通用编码
B UTF-8 无字节序问题且跨平台最安全,UTF-16 需注意 BOM/字节序 ✓ 正确答案
C UTF-16 无字节序问题
D 网络传输默认小端
#

28. "网络协议"(network protocol)的版本协商,HTTP/1.1 vs HTTP/2 vs HTTP/3。

A HTTP/3 基于 TCP
B HTTP/1.1 多路复用性能最好
C HTTP/2 用 ALPN 协商、应用层多路复用,HTTP/3 基于 QUIC 消除队头阻塞 ✓ 正确答案
D 三者无队头阻塞差异
#

29. 前端 SSR vs CSR 的延迟权衡,TTFB 与首次渲染。

A CSR 首屏最快
B SSR 无需服务端渲染
C SSR 首屏快但 TTFB/服务端开销可能高,CSR TTFB 低但首屏慢 ✓ 正确答案
D 两者无差别
#

30. 持久化的"半同步"(semisync)与"最终同步"(async)取舍。

A 两者一致性相同
B 异步更安全
C 半同步无延迟
D 半同步保证至少一从同步但增加延迟,异步延迟低但可能丢数据 ✓ 正确答案
#

31. "队列"作为缓冲的工程价值,SQS、Kafka、RabbitMQ 在延迟与吞吐的取舍。

A 所有队列吞吐相同
B Kafka 高吞吐适合流式,RabbitMQ 低延迟适合任务,SQS 托管 ✓ 正确答案
C Kafka 延迟一定最低
D RabbitMQ 吞吐最高
#

32. "复制延迟"(replication lag)在主从架构的工程影响。

A 从库总能读到最新
B lag 无影响
C lag 会导致读己之写读到旧值,敏感读需走主库或半同步 ✓ 正确答案
D 主从切换不丢数据
#

33. "脑裂"(split-brain)的 quorum 与 fencing token 防御。

A 脑裂无需处理
B quorum 允许双主
C fencing token 是加的锁
D quorum 要求多数派当选主,fencing token 让旧主失效防止写覆盖 ✓ 正确答案
#

34. "超时"(timeout)的合理值,基于历史 P99 还是经验值。

A 基于历史 P99 设定(如 2-3 倍)比固定经验值更合理 ✓ 正确答案
B 超时越短越好
C 经验值总是最优
D 超时与重试无关
#

35. "constant-time"(常量时间)在密码学运算的工程应用,如何避免侧信道。

A 执行时间越短越安全
B 执行时间与秘密无关,避免时序侧信道,需用可信密码学库 ✓ 正确答案
C 普通 memcmp 即可安全比较
D 侧信道与缓存无关
#

36. "加密磁盘"(encryption at rest)的全盘加密与字段级加密。

A 全盘加密透明但粗粒度,字段级加密精准但需改应用且查询受限 ✓ 正确答案
B 全盘加密粒度最细
C 字段级加密无需改应用
D 两者无差别
#

37. "密钥轮换"(key rotation)的频率与工程影响,性能抖动与零停机。

A 零停机轮换用双密钥过渡与后台渐进重加密,避免性能抖动 ✓ 正确答案
B 轮换越频繁越好
C 轮换不影响性能
D 轮换必须停机
#

38. "证书透明度"(CT log)的合规与性能。

A 浏览器要求证书含 SCT,CT 增加签发延迟与证书大小 ✓ 正确答案
B CT 是可选合规
C SCT 不影响证书大小
D CT 与浏览器无关
#

39. "API 版本"(API versioning)的三种策略,URL 版本、Header 版本、媒体类型版本。

A URL 版本难缓存
B 三者无差别
C URL 版本最直观易用,媒体类型版本符合 REST 但实现复杂 ✓ 正确答案
D 媒体类型版本最易用
#

40. "向前兼容"(forward compatible)vs"向后兼容"(backward compatible)的协议演进。

A 演进只需加字段
B 两者相同
C 前向兼容无需设计
D 向后兼容指新版本处理旧数据,向前兼容指旧版本处理新数据,后者更难 ✓ 正确答案
#

41. "字节序"(endianness)的跨平台处理,网络协议、文件格式、序列化。

A 小端是网络标准
B 所有平台字节序相同
C 网络协议规定大端,跨平台文件/序列化需明确字节序并转换 ✓ 正确答案
D 字节序无需处理
#

42. "前端慢"现象的拆解,TTFB、FCP、LCP、TBT、CLS 的 Web Vitals。

A TTFB 反映网络/服务端,LCP 反映首屏、TBT 反映主线程阻塞 ✓ 正确答案
B 所有指标都反映同一问题
C CLS 反映加载速度
D TTFB 与前端无关
#

43. "请求重试"(retry)的副作用,放大故障、毒丸请求、客户端幂等性。

A 重试永远安全无副作用
B 重试可能放大故障(retry storm)并重复副作用,需配退避与幂等保护 ✓ 正确答案
C 重试次数越多越好
D 重试与平台无关
#

44. 请求从接入到持久化的完整链路(接入、鉴权、业务逻辑、WAL、落盘)中,哪些环节可能成为吞吐瓶颈,如何用延迟分解与队列深度定位?

A 瓶颈一定在接入层
B 只需看总延迟
C 队列积压说明该环节正常
D 延迟分解找耗时环节,队列深度找积压环节,二者结合定位瓶颈 ✓ 正确答案
#

45. "令牌桶"(token bucket)、"漏桶"(leaky bucket)、"滑动窗口"(sliding window)限流的工程取舍。

A 令牌桶允许突发,漏桶平滑输出,滑动窗口精确限流 ✓ 正确答案
B 三者相同
C 令牌桶强制平滑
D 滑动窗口允许无限突发
#

46. "熔断器"(circuit breaker)的三态(Closed、Open、Half-Open)切换逻辑。

A Closed 统计失败,失败超阈值转 Open,冷却后 Half-Open 试探并恢复 ✓ 正确答案
B Open 正常转发请求
C Half-Open 全量放行
D 熔断器无法自动恢复
#

47. "线程池"(thread pool)的核心/最大配置与任务队列的协同。

A 核心线程处理稳态,队列缓冲突发,max 兜底峰值,队列应设界 ✓ 正确答案
B 队列无限最安全
C 核心线程数应等于最大线程数
D 任务队列与线程数无关
#

48. "连接池"(connection pool)的最优大小,((core_count * 2) + effective_spindle_count) HikariCP 公式。

A 连接池大小固定不变
B 连接数越多吞吐越高
C 公式与 CPU 无关
D 公式基于 CPU 核数与磁盘主轴数,连接数过多反而降低吞吐 ✓ 正确答案
#

49. "响应丢失"的处理,客户端超时 vs 服务端完成的隐性不一致。

A 重试无需幂等
B 超时即服务端失败
C 客户端超时不代表服务端失败,重试需幂等或状态确认 ✓ 正确答案
D 响应丢失不会造成不一致
#

50. "幂等"(idempotency)在重试机制的工程实现,Idempotency Key、状态机、版本号。

A 幂等无法实现
B 幂等只需重试
C 版本号与幂等无关
D Idempotency Key 去重,状态机保证终态,版本号防覆盖 ✓ 正确答案
#

51. "故障转移"(failover)的 RTO/RPO 与自动切换的边界。

A 自动切换无需判断故障
B RPO 越大越好
C 同步复制 RPO≈0 但延迟高,异步可能丢数据,自动切换需防误切换 ✓ 正确答案
D RTO 与恢复无关
#

52. "部分成功"(partial success)场景的工程语义,订单成功但支付失败的补偿逻辑。

A 订单创建后无需处理支付失败
B 部分成功需强一致事务
C 补偿无需幂等
D 用 SAGA/补偿实现最终一致,每个已执行步骤需有可逆的补偿操作 ✓ 正确答案
#

53. "重试"(retry)的指数退避(exponential backoff)与 jitter(抖动)。

A jitter 让所有客户端同时重试
B 指数退避降低重试频率,jitter 错开各客户端重试,避免重试风暴 ✓ 正确答案
C 退避无上限更好
D 重试无需退避
#

54. "C10K"问题的工程演进,epoll、io_uring、DPDK 的吞吐提升。

A DPDK 走内核协议栈
B 三者相同
C epoll 每连接一线程
D epoll 事件复用、io_uring 异步减 syscall、DPDK 用户态绕过内核,吞吐逐级提升 ✓ 正确答案
#

55. "JWT"vs"Session"在无状态与有状态服务的取舍。

A JWT 可主动撤销
B JWT 必须存服务端
C Session 无状态
D JWT 无状态适合水平扩展但难主动失效,Session 有状态可管理但需存储 ✓ 正确答案
#

56. "OAuth scope"的细粒度与最小权限。

A 客户端应申请全部权限
B scope 越粗越好
C scope 应细分并坚持最小权限,客户端只申请所需权限 ✓ 正确答案
D scope 与权限无关
#

57. "RBAC"vs"ABAC"vs"PBAC"在权限模型的取舍。

A 三者无差别
B RBAC 最灵活
C ABAC 最简单
D RBAC 简单易管理,ABAC 基于属性灵活但复杂,按需选型 ✓ 正确答案
#

58. "审计"(audit)的"全量"与"采样"取舍,合规 vs 存储成本。

A 关键/敏感操作全量审计,非关键可采样,用分级存储控成本 ✓ 正确答案
B 所有操作都采样
C 全量审计无成本
D 审计与合规无关
#

59. "ABI 兼容性"(Application Binary Interface)的工程边界,版本升级的兼容性。

A ABI 兼容与二进制无关
B 结构体字段增删/重排、函数签名变化会破坏 ABI,升级需保持布局稳定 ✓ 正确答案
C 只追加字段也会破坏 ABI
D 源码兼容即 ABI 兼容
#

60. "TLS 1.3"的兼容性与 TLS 1.2 的回退。

A TLS 1.3 通过版本协商与 1.2 共存,但需防降级攻击 ✓ 正确答案
B TLS 1.3 无法回退
C 降级是安全的
D 回退到 1.0 也安全
#

61. "消息格式升级"(schema evolution)的兼容性规则,Avro、Protobuf 的前后向兼容。

A 新旧 schema 无需兼容
B 删除字段无影响
C 字段号可随意重排
D 升级只能加字段不能删,Protobuf 用字段号、Avro 用默认值保证新旧互读 ✓ 正确答案
#

62. "滚动升级"(rolling upgrade)与"蓝绿发布"(blue-green)的回滚速度差异。

A 两者回滚速度相同
B 滚动回滚最快
C 蓝绿无需双环境
D 蓝绿回滚快(流量切换)但需双环境,滚动回滚慢但成本低 ✓ 正确答案