# 1. 设计一个千万级 QPS 的短链生成系统,ID 生成、缓存、持久化、统计? A 短码直接用长链哈希,无需唯一性 B 用全局唯一 ID 编码为短码,Redis 缓存扛高并发读,异步落库并撑统计 ✓ 正确答案 C 高并发下应直接读数据库,不缓存 D 统计通过同步写数据库即可
# 2. 审计日志的写入与查询,Append-only、压缩、分区的设计? A 审计日志允许更新与删除 B 审计日志应 Append-only 追加、按时间分区并压缩归档,保证不可篡改且可查询 ✓ 正确答案 C 审计日志应不分区、全量扫描查询 D 审计日志无需时间戳
# 3. 支付系统的对账,T+1 对账、资金安全、幂等设计? A 对账补偿可以重复执行 B 对账只需核对总额,无需明细 C T+1 用内部流水与渠道流水比对差异并补偿,处理必须幂等以保资金安全 ✓ 正确答案 D 幂等与资金安全无关
# 4. 秒杀场景的库存扣减,行锁、乐观锁、Redis 预扣减、消息队列削峰的取舍? A 乐观锁适合超高并发秒杀 B 秒杀直接用事务锁库存即可满足千万 QPS C 行锁简单但吞吐低,主流方案是 Redis 原子预扣 + 消息队列削峰 + 数据库最终扣减 ✓ 正确答案 D 无需防超卖
# 5. 设计千万级用户的 Feed 流存储,推拉结合、缓存、分库与一致性 A 推拉结合(普通用户推、大 V 拉)平衡读写放大,配合缓存与分库及最终一致 ✓ 正确答案 B 纯拉模式写放大严重 C 明星大 V 也应使用推模式 D Feed 流无需缓存
# 6. 设计一个亿级日活的点赞与收藏系统,如何用 Redis 聚合计数、异步落库与最终对账,保证计数与明细的一致性? A 点赞数直接在数据库每条请求累加即可 B 无需记录点赞明细 C 对账会破坏一致性 D 用 Redis 原子计数与明细、消息队列异步落库、最终对账保证计数与明细一致 ✓ 正确答案
# 7. 设计一个附近的人 LBS 系统,GeoHash、Redis GEO 与数据库空间索引在精度、范围查询与写入成本上的取舍? A GeoHash 能精确按真实距离排序 B Redis GEO 查询快但内存成本高,数据库空间索引持久可靠但慢,GeoHash 便于分桶常配合使用 ✓ 正确答案 C 空间索引查询性能高于 Redis GEO D 只需用一个方案即可应对所有场景
# 8. 如何设计数据库主库宕机切换(failover)演练,检测与选主流程、脑裂防护(fencing、quorum、STONITH)、切换后的数据一致性校验与旧主降级回收? A 切换后旧主可直接升回主,无需校验 B 无需检测主库健康状态 C 脑裂不会造成数据问题 D 需检测选主、用 quorum/fencing/STONITH 防脑裂,切换后校验一致性并让旧主降级为从库再回收 ✓ 正确答案
# 9. 区域级故障下如何设计跨地域灾备切换演练,DNS/全局流量调度切换、备库禁写与追平确认、RPO 评估与切回(failback)方案? A 切换无需关闭备库写入 B 跨地域复制 RPO 一定为 0 C failback 无需同步数据即可切回 D 用 DNS/全局调度切流量,切换前备库禁写并追平确认,评估 RPO,切回前先反向同步 ✓ 正确答案
# 10. 如何设计定期备份恢复演练以实测验证 RTO/RPO 达标(恢复沙箱、计时、数据校验)?演练如何自动化与常态化? A 演练只需恢复一次,无需校验 B 演练会影响生产业务 C 在恢复沙箱恢复备份、计时测 RTO、数据校验测 RPO,并自动化每周/每月常态化执行 ✓ 正确答案 D RTO/RPO 无需实测,靠估计即可
# 11. CDC/复制链路中断后如何设计数据回补与对账方案(断点续传、全量/增量比对、差异补偿写入与幂等)? A 中断后直接重灌全量即可,无需比对 B 用日志位点断点续传防止重漏,全量/增量比对定位差异,补偿写入幂等防止重复 ✓ 正确答案 C 断点续传无需记录位点 D 补偿写入可以不幂等
# 12. 设计一个全球部署的 SaaS 数据库,多租户、跨地域、合规? A 多租户用库/schema/表隔离,跨地域就近部署并异步同步,同时考虑数据主权与隐私合规 ✓ 正确答案 B 所有租户共享一个表即可,无需隔离 C 跨地域部署无需遵循数据本地化 D 合规与数据库设计无关
# 13. 设计一个分布式 IM 系统的消息存储,消息顺序、漫游、消息可靠性? A 消息无需持久化,只存内存 B 用会话内单调 seq 保证顺序,服务端持久化支持漫游,落库+去重+ACK 保证可靠 ✓ 正确答案 C 会话内消息顺序无关紧要 D 消息可以重复发送,无需去重
# 14. 设计一个电商订单系统的数据库 Schema,订单、库存、支付、物流的关系建模与一致性约束? A 金额用 FLOAT 存即可 B 订单与明细一对多、金额用 DECIMAL、库存扣减原子、状态机受控并加唯一约束保证一致 ✓ 正确答案 C 库存可随意扣减,无需考虑超卖 D 订单状态可以任意跳转
# 15. 实时排行榜的数据库设计(Redis ZSET 缓存 + 定期落库 + 对账) A 用 Redis ZSET 原子加分与实时排名,异步落库持久化,定期对账保证一致 ✓ 正确答案 B 排行榜直接实时写数据库即可 C 分数无需持久化,重启丢失也无妨 D 对账会拖慢排行榜
# 16. 设计订单超时未支付自动取消,延迟队列(Redis ZSET 时间轮)与数据库定时扫描两种方案的精度、吞吐与恢复机制如何权衡? A DB 定时扫描精度最高 B 扫描时需要重复处理已取消订单 C Redis 延迟队列无需持久化 D Redis 延迟队列精度与吞吐高但需设计恢复,DB 定时扫描简单可靠但精度吞吐受限,常用二者结合 ✓ 正确答案
# 17. 设计一个可观测性平台的数据存储,Metrics、Logs、Traces? A 三类数据都用一个关系库即可 B Metrics 数据量最大,无需压缩 C Trace 无需关联日志 D Metrics 用时序库、Logs 用日志检索库、Traces 用链路库,三者关联用于故障定位 ✓ 正确答案
# 18. 设计数据库读写分离的监控与自动切换(延迟告警、从库摘除) A 从库延迟不影响读取一致性 B 从库故障会拖垮主库,无需摘除 C 读写路由无需监控主库状态 D 监控复制延迟,超阈值告警并摘除异常从库,主库故障才切换主从 ✓ 正确答案
# 19. 设计用户签到系统,连续签到天数、补签与月度统计如何用 Redis 与数据库建模?并发防重与跨天边界如何处理? A 签到无需防重,可重复签到 B Redis 用 Bitmap 存签到与 SETNX 防重,DB 持久化统计,统一日期键处理跨天边界 ✓ 正确答案 C 连续天数可任意计算,无需按日期连续 D 月度统计只能全量扫描 DB