# 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 硬件加速与加密无关
# 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 蓝绿回滚快(流量切换)但需双环境,滚动回滚慢但成本低 ✓ 正确答案