分类原则:每道题只保留一个主类型,按面试中占比最高的作答方式判定。Go、MySQL、Redis、MQ 等属于知识域,不再作为题型。
| 题型 | 英文标签 | 判断标准 |
|---|---|---|
| 原理问答题 | Concepts & Internals | 解释概念、机制、执行过程与适用边界 |
| 选型与权衡题 | Trade-off Analysis | 比较多个方案,结合约束给出选择与取舍 |
| 编码与算法题 | Coding & Algorithms | 需要算法、数据结构、伪代码或代码,并分析复杂度与边界 |
| 故障排查题 | Troubleshooting | 已出现异常,要求止损、建立证据链并定位根因 |
| 性能与容量题 | Performance & Capacity | 提速、降耗、消除长尾,或估算并发、吞吐与资源 |
| 专项设计题 | Focused Design | 设计边界明确的机制、流程或局部工程能力 |
| 系统设计题 | System Design | 从零设计完整系统、平台、框架或多组件子系统 |
| 工程实践题 | Engineering Practice | 围绕风险清单、预防、检测、响应与复盘形成工程闭环 |
存在交叉时,按以下顺序确定主类型:
- 明确要求编写算法、数据结构、伪代码或可运行代码,归为编码与算法题。
- 已经发生异常且原因未知,需要止损、建立证据链并定位根因,归为故障排查题。
- 瓶颈或目标基本明确,重点是提速、降耗、消除长尾或估算资源,归为性能与容量题。
- 给出多个候选方案,要求结合约束进行选择,归为选型与权衡题。
- 设计边界明确的机制、流程或单项能力,归为专项设计题;设计包含多个独立组件、数据模型和高可用架构的完整系统,归为系统设计题。
- 重点覆盖预防、检测、响应、演练和复盘等完整生命周期,归为工程实践题。
- 不属于以上场景,主要解释概念、机制、执行过程和适用边界,归为原理问答题。
P0:必刷,优先掌握
| 原题号 | 整理后的题目 | 题型 | 优先级 |
|---|---|---|---|
| ✅ | 设计一个 RPC 框架,你会怎么设计? | 系统设计题 | P0 |
| ✅ | 如何设计一个秒杀系统? | 系统设计题 | P0 |
| ✅ | 设计一个消息队列,你会怎么设计? | 系统设计题 | P0 |
| ✅ | MQ 应该 Push 还是 Pull?两种模式有什么优缺点? | 选型与权衡题 | P0 |
| ✅ | 数据库、Redis 和 ZooKeeper 实现分布式锁各有什么取舍?在不同一致性、可用性和性能要求下如何选择? | 选型与权衡题 | P0 |
| ✅ | 如何设计一个分布式 ID 生成器? | 专项设计题 | P0 |
| ✅ | 什么是限流?有哪些限流算法?如何实现? | 原理问答题 | P0 |
| ✅ | Go: Go map 为什么不支持并发读写?并发读写可能产生什么后果? | 原理问答题 | P0 |
| ✅ | 一个接口突然变慢,完整排查路径是什么? | 故障排查题 | P0 |
| ✅ | 单体系统 QPS 已到 1 万,是否应该拆微服务?如何判断? | 选型与权衡题 | P0 |
| ✅ | 系统每天固定时段瘫痪约一小时,如何定位? | 故障排查题 | P0 |
| ✅ | 线上 Go 服务 CPU 飙高如何排查? | 故障排查题 | P0 |
| ✅ | Linux CPU Load 飙高如何排查? | 故障排查题 | P0 |
| ✅ | 服务上线后接口响应很慢,如何定位并解决? | 故障排查题 | P0 |
| ✅ | 订单取消的一瞬间用户正好支付成功,怎么处理? | 专项设计题 | P0 |
| ✅ | 如何避免用户重复创建未支付订单并占用库存? | 专项设计题 | P0 |
| ✅ | Redis 服务器 CPU 飙高且请求延迟上升,如何排查和解决? | 故障排查题 | P0 |
| ✅ | 同一订单同时通过微信和支付宝支付,怎么保证只成功一次? | 专项设计题 | P0 |
| ✅ | 微服务 RPC 超时时间应该如何设置? | 选型与权衡题 | P0 |
| ✅ | 从网关到多个后端服务,RPC Timeout 如何分配? | 专项设计题 | P0 |
| ✅ | 线上数据库连接池耗尽 / 爆满如何排查? | 故障排查题 | P0 |
| 42 | 如何实现数据库不停服迁移? | 专项设计题 | P0 |
| 43 | MySQL SQL 调优的完整方法是什么? | 性能与容量题 | P0 |
| 44 | MySQL 深度分页怎么解决? | 性能与容量题 | P0 |
| 45 | 使用了索引为什么 SQL 仍然慢?如何判断索引是否有效? | 故障排查题 | P0 |
| 49 | 如何事先设计 MQ 故障时的降级和兜底机制? | 专项设计题 | P0 |
| 51 | Go: 如何分析 Go 服务当前内存占用?OOM 后如何使用 pprof 等工具分析? | 故障排查题 | P0 |
| 52 | Redis 内存溢出 / 耗尽了,如何排查和解决? | 故障排查题 | P0 |
| 56 | 使用分布式锁后并发度下降,应该怎么办? | 性能与容量题 | P0 |
| 62 | 如何设计订单超时自动取消? | 专项设计题 | P0 |
| 63 | 调用第三方 API 时要考虑哪些问题? | 工程实践题 | P0 |
| 65 | MySQL 2000 万数据,Redis 只缓存 20 万,如何保证留下的是热点数据? | 专项设计题 | P0 |
| 66 | 一个请求横跨十几个微服务且很慢,如何定位? | 故障排查题 | P0 |
| 67 | Redis 被用来抗高并发时,如何设计高可用和降级机制,使 Redis 故障后系统仍能运行? | 专项设计题 | P0 |
| 68 | 微服务之间怎么自动发现彼此?服务发现原理是什么? | 原理问答题 | P0 |
| 69 | 暂时不分库分表,单表数据量很大还能怎么优化? | 性能与容量题 | P0 |
| 70 | Go: Go 进程 RSS 持续上涨,但 Heap 指标变化不大,可能是什么原因? | 故障排查题 | P0 |
| 72 | 本地操作 A + 远程操作 B,如何保证事务一致性? | 专项设计题 | P0 |
| 73 | 单体应用多机部署后,用户登录态如何共享? | 专项设计题 | P0 |
| 80 | 核心系统如何进行缓存预热? | 专项设计题 | P0 |
| 82 | 服务重启后大量客户端同时重连,如何避免重连风暴? | 专项设计题 | P0 |
| 87 | JWT 被盗后攻击者就能登录,如何保证 Token 安全? | 专项设计题 | P0 |
| 89 | 线上 API 遭遇恶意刷流量怎么处理? | 故障排查题 | P0 |
| 92 | 一个新系统上线时应该重点监控哪些指标? | 工程实践题 | P0 |
| 94 | 注册接口被攻击,攻击者伪造手机号大量发送验证码,除了限流还能怎么办? | 专项设计题 | P0 |
| 95 | MySQL 大表在线新增字段,如何尽量不影响线上读写? | 工程实践题 | P0 |
| 100 | 分布式订单系统调用限流 100 QPS 的支付接口,既要 FIFO 又要吃满配额,如何设计? | 专项设计题 | P0 |
| 101 | MySQL 1 亿行数据如何快速添加索引? | 性能与容量题 | P0 |
| 103 | 电商订单数据如何同步到数仓,保证准确且高性能? | 系统设计题 | P0 |
| 104 | 如何设计 MySQL → 数据仓库实时同步系统? | 系统设计题 | P0 |
| 105 | 如何设计高可用数据同步系统?需要哪些容错机制? | 系统设计题 | P0 |
| 106 | 用 LIMIT OFFSET 分页同步数据为什么会丢数据?如何解决? | 原理问答题 | P0 |
| 108 | 双十一期间,数据同步消息持续堆积并已经影响同步时效,你会如何排查、止损和恢复?事后如何避免再次发生? | 故障排查题 | P0 |
| 109 | MQ 同步订单状态时消息乱序,怎么保证顺序? | 专项设计题 | P0 |
| 110 | 数据同步任务执行一半失败,如何保证数据一致性? | 专项设计题 | P0 |
| 111 | 如何设计 API Gateway?动态路由、限流等核心能力如何实现? | 系统设计题 | P0 |
| 113 | 网关如何防止接口重放攻击? | 专项设计题 | P0 |
| 114 | 微服务中如何设计配置中心?配置变更怎么实时通知? | 系统设计题 | P0 |
| 115 | 配置中心不可用时,业务服务如何继续运行?应事先设计哪些容错机制? | 专项设计题 | P0 |
| 116 | 下单后如何保证订单、库存、支付三个服务的数据一致性? | 专项设计题 | P0 |
| 117 | 分布式事务补偿机制怎么设计?补偿也失败怎么办? | 专项设计题 | P0 |
| 118 | 如何实现一致性 Hash?它解决了普通 Hash 的什么问题? | 原理问答题 | P0 |
| 119 | 如何设计灰度发布系统?怎样逐步切换流量? | 系统设计题 | P0 |
| 120 | 灰度期间新旧版本如何保证数据兼容?数据库结构变化怎么办? | 专项设计题 | P0 |
| 121 | 如何实现 SSO?多个系统如何做到一次登录? | 系统设计题 | P0 |
| 122 | 如何事先设计 SSO 容错机制,使认证中心不可用时已登录用户仍能正常访问? | 专项设计题 | P0 |
| 123 | 如何设计接口签名机制,防篡改、防重放? | 专项设计题 | P0 |
| 124 | 身份证号、手机号等敏感数据如何安全传输和存储? | 专项设计题 | P0 |
| 126 | 除了限流,还有哪些手段可以防止 API 被恶意刷量? | 专项设计题 | P0 |
| 128 | 短信验证码如何防止恶意轰炸? | 专项设计题 | P0 |
| 129 | 如何利用 MQ 实现延迟任务,例如 30 分钟未付款取消订单? | 专项设计题 | P0 |
P1:高频扩展题,P0 刷完继续
| 原题号 | 整理后的题目 | 题型 | 优先级 |
|---|---|---|---|
| 1 | 如何避免类似支付宝事故的线上生产事故再次发生? | 工程实践题 | P1 |
| 3 | 5000 万条开始 / 结束时间数据,如何统计流量最大时段? | 编码与算法题 | P1 |
| 7 | 如何设计一个短链接系统? | 系统设计题 | P1 |
| 10 | 如何统计每个 API 每分钟的调用次数? | 专项设计题 | P1 |
| 11 | 如何设计文件上传系统? | 系统设计题 | P1 |
| 14 | IM 系统中,历史消息如何做下拉分页加载? | 专项设计题 | P1 |
| 17 | Go: 写一个必然发生死锁的 Go 程序,不能依赖 time.Sleep | 编码与算法题 | P1 |
| 20 | 40 亿 QQ 号,只有 1GB 内存,如何做去重? | 编码与算法题 | P1 |
| 21 | Go: Go 中如何实现并发安全的单例?init、sync.Once、atomic 如何选择? | 选型与权衡题 | P1 |
| 23 | Go: 如果让你设计一个哈希表,类似 Go map,怎么设计? | 编码与算法题 | P1 |
| 28 | 500GB 数据排序,只有 4GB 内存,怎么做? | 编码与算法题 | P1 |
| 33 | 百万级数据导出 Excel 很慢,如何优化? | 性能与容量题 | P1 |
| 34 | 几百万行 Excel 导入数据库,要注意什么? | 工程实践题 | P1 |
| 36 | Go: 大型哈希表扩容如何避免一次性迁移导致请求长尾? | 编码与算法题 | P1 |
| 39 | Go: 如何设计一个 Goroutine Worker Pool? | 编码与算法题 | P1 |
| 46 | 每次进入订单列表都会触发全量同步,应该如何优化? | 性能与容量题 | P1 |
| 47 | Go: Go 服务升级后出现 JSON / Protobuf 序列化兼容性问题,如何排查? | 故障排查题 | P1 |
| 48 | API Gateway 出现大量 500 如何定位? | 故障排查题 | P1 |
| 50 | 如何设计一个点赞系统? | 系统设计题 | P1 |
| 53 | 200 万生产者、一个消费者,MQ 系统如何高效设计? | 系统设计题 | P1 |
| 54 | 100 万商户中如何快速找到最近的 5 家? | 编码与算法题 | P1 |
| 55 | Go: Go 调用 Write 写文件经历了什么?Page Cache、syscall、fsync 分别做什么? | 原理问答题 | P1 |
| 57 | 如何设计购物车系统? | 系统设计题 | P1 |
| 58 | 5000 万会员,如何提前 7 天通知即将过期会员? | 系统设计题 | P1 |
| 59 | 如何实时统计店铺销量 Top 50 商品? | 系统设计题 | P1 |
| 60 | MySQL SELECT * 查询千万行数据,会发生什么?客户端 / 数据库会不会爆内存? | 原理问答题 | P1 |
| 61 | Go: 1000 个任务每个 100ms,要求 1 秒内完成,Worker Pool 并发度怎么计算? | 性能与容量题 | P1 |
| 71 | Bitmap 存用户 ID,但 ID 非常稀疏,会有什么问题?如何优化? | 原理问答题 | P1 |
| 74 | 如何实现一个简单的负载均衡器? | 专项设计题 | P1 |
| 75 | 如何设计“强制用户下线”功能? | 专项设计题 | P1 |
| 77 | 一个 1 秒接口怎么优化到毫秒级?你会从哪些层面分析? | 性能与容量题 | P1 |
| 78 | 如果让你设计一个 IM / WebSocket 协议,需要考虑哪些问题? | 专项设计题 | P1 |
| 81 | 数据库设计中,关联表和冗余字段分别有什么优缺点? | 选型与权衡题 | P1 |
| 83 | 第三方上游接口异步处理是否应该用 MQ?不用 MQ 还能怎么做? | 选型与权衡题 | P1 |
| 84 | 4C8G 和 8C16G 服务器怎么选?依据是什么? | 性能与容量题 | P1 |
| 88 | CDN 流量突然异常暴增,可能是什么原因?如何排查? | 故障排查题 | P1 |
| 90 | 项目需要同时适配 MySQL、PostgreSQL 等数据库,如何设计数据访问层? | 专项设计题 | P1 |
| 91 | 除了优化代码,还能从哪些方面优化系统性能? | 性能与容量题 | P1 |
| 93 | 如何设计 OAuth2.0 授权服务?Token 如何管理? | 系统设计题 | P1 |
| 97 | 国内到海外数据传输延迟很高,系统架构如何优化? | 性能与容量题 | P1 |
| 98 | 给定一天的登录 / 登出日志,如何计算最大在线人数和最长持续时间? | 编码与算法题 | P1 |
| 99 | Go: 一个 Goroutine 如何等待多个并发任务结束并汇总结果? | 编码与算法题 | P1 |
| 102 | Go: 一个 []T 中有 1 亿条数据,如何高效去重? | 编码与算法题 | P1 |
| 107 | 数据同步任务出现 OOM,如何定位和解决? | 故障排查题 | P1 |
| 112 | API Gateway 如何同时管理 v1 / v2 / v3 多个接口版本? | 专项设计题 | P1 |
| 125 | 加密后的数据如何实现模糊搜索? | 专项设计题 | P1 |
| 130 | 什么是死信队列?什么场景需要 DLQ?如何处理死信? | 原理问答题 | P1 |
| 131 | 微信扫码登录的技术方案是什么? | 专项设计题 | P1 |
P2:低优先级 / 特殊场景
| 原题号 | 整理后的题目 | 题型 | 优先级 |
|---|---|---|---|
| 8 | 如何实现分布式环境下的“单例”? | 专项设计题 | P2 |
| 22 | 抢红包时红包金额应该如何计算? | 编码与算法题 | P2 |
| 27 | 如何实现高性能敏感词过滤? | 编码与算法题 | P2 |
| 29 | IP 地址在数据库里应该使用什么类型存储? | 选型与权衡题 | P2 |
| 40 | 数亿条键值数据需要写入 Redis Hash,如何在不压垮 Redis 且允许失败重试的前提下设计写入流程? | 专项设计题 | P2 |
| 76 | 不允许使用 >、<,怎么比较两个正整数? | 编码与算法题 | P2 |
| 79 | 在 Linux Shell 输入一条命令后,系统发生了什么? | 原理问答题 | P2 |
| 85 | Agent 出现死循环如何检测和处理? | 工程实践题 | P2 |
| 86 | GPU 集群 1000 tokens/s,1000 用户并发意味着每人只有 1 token/s 吗?如何做性能分析? | 性能与容量题 | P2 |
| 96 | 如何快速找出 5 分钟内重复登录两次的 QQ 号? | 编码与算法题 | P2 |
| 127 | 滑动验证码如何实现?如何提高机器破解成本? | 专项设计题 | P2 |
按题型刷题的建议顺序
每个题型内部仍然先刷 P0,再刷 P1、P2。推荐按能力递进:
原理问答 → 选型与权衡 → 编码与算法 → 故障排查 → 性能与容量 → 专项设计 → 系统设计 → 工程实践
| 题型 | 建议答题框架 |
|---|---|
| 原理问答题 | 定义 → 核心机制 → 适用边界 → 优缺点 |
| 选型与权衡题 | 约束 → 比较维度 → 结论 → 代价与例外 |
| 编码与算法题 | 澄清约束 → 思路 → 实现 → 复杂度 → 边界用例 |
| 故障排查题 | 止损 → 观察 → 缩小范围 → 验证根因 → 修复与复盘 |
| 性能与容量题 | 基线 → 目标 → 建模或定位瓶颈 → 优化 → 压测验证 |
| 专项设计题 | 目标 → 约束 → 核心流程 → 异常与一致性 → 权衡 |
| 系统设计题 | 需求 → 容量估算 → 架构 → 数据模型 → 关键链路 → 高可用 |
| 工程实践题 | 风险 → 预防 → 检测 → 响应 → 演练与复盘 |