Skip to content
错题本 0已完全掌握 0正在读取本地学习状态…
先想一想,再看答案

系统设计与分布式基础 ​

面向全栈岗位的语言无关基础。先口述定义与场景,再解释一致性、性能和故障边界;产品特有行为会明确标注。

1. 系统设计面试应该按什么顺序回答? ​

展开答案与追问

参考答案: 先澄清功能、规模、延迟、可用性与一致性目标,再定义核心数据模型和 API,画主链路,找容量与故障瓶颈,最后说明演进、监控和取舍。数量估算要写明假设而不是凭空报 QPS。

追问与易错点: 先画能正确运行的最小方案,再讨论扩展,不以微服务数量作为设计质量。

2. 负载均衡与无状态服务解决什么? ​

展开答案与追问

参考答案: 负载均衡分发请求并结合健康状态避开故障实例;无状态应用让请求不依赖某一实例的本地会话,便于扩缩容与替换。必要状态仍存于数据库、缓存等依赖中。

追问与易错点: 长连接、上传和粘性会话有额外路由需求;无状态不等于整个系统没有状态。

3. CAP 如何正确理解? ​

展开答案与追问

参考答案: 在发生网络分区时,无法同时满足所有请求都返回非错误响应的可用性与线性一致性。设计需要定义分区期间哪些操作拒绝或降级,不能笼统给整个复杂系统贴 CP/AP 标签。

追问与易错点: CAP 中的可用性不是日常 SLA 的百分比;一致性也不是 ACID 的那个字母含义。

4. 强一致、最终一致与读己之写有什么区别? ​

展开答案与追问

参考答案: 线性一致性要求操作表现得像在调用到返回之间某一时刻生效;最终一致性通常要求在写停止且传播等条件满足时副本趋同,但不自带固定收敛期限;读己之写是会话保证。

追问与易错点: 选取用户可接受语义:余额确认、个人资料保存与统计看板可能需要不同保证。

5. 超时、重试、退避与抖动怎样配合? ​

展开答案与追问

参考答案: 为整条请求链设预算,只重试可安全重试的暂时故障,限制次数并采用退避与抖动,避免大量客户端同时重试。上游多层各自重试会放大流量,需要统一策略与可见性。

追问与易错点: 重试不能修复持续过载,应配合限流与快速失败。重试设计

6. 限流、熔断、降级与背压有什么区别? ​

展开答案与追问

参考答案: 限流约束进入速度,熔断暂时停止访问表现不健康的依赖,降级缩减功能以保持核心流程,背压向上游传播容量不足以放慢生产。需要定义恢复和半开探测等行为。

追问与易错点: 返回缓存旧数据可作为某些读场景降级,但不能无条件用于权限或最终结算。

7. 分布式事务为何难?Outbox 和 Saga 怎么用? ​

展开答案与追问

参考答案: 跨组件提交可能部分成功且网络结果不确定。Outbox 将业务写入和待发布事件存入同一数据库事务,再由投递器发送,消费者需幂等。Saga 用一组本地事务与补偿协调长流程。

追问与易错点: Outbox 不自动消除重复,Saga 补偿也不等于物理回滚,发出的邮件或外部行为可能不可撤销。

8. 为什么消息顺序要限定范围? ​

展开答案与追问

参考答案: 全局顺序通常代价较高,业务常只需同一订单或用户的局部顺序。可用业务键分区与单序列处理,并处理重试、迟到和版本条件;扩容及分区迁移也可能影响顺序假设。

追问与易错点: 幂等不能自动解决乱序,例如“发货”先于“支付”到达时仍需状态规则。

9. 分布式 ID 如何选择? ​

展开答案与追问

参考答案: 数据库序列、随机 UUID、时间有序 ID 或分配号段各有唯一性、存储局部性、吞吐和协调成本。时间型方案需要处理时钟回拨与节点身份,随机方案需考虑索引写入与碰撞概率。

追问与易错点: 不把难猜的 ID 当授权机制,也不要让 ID 泄露的时间或规模信息违背隐私要求。

10. 单体、模块化单体与微服务如何选择? ​

展开答案与追问

参考答案: 单体部署简单,模块化单体用业务边界控制耦合,微服务让部分能力独立部署和扩缩,但引入网络、数据一致性、可观测性和组织成本。团队规模与变化边界比潮流更重要。

追问与易错点: 对全栈学习项目,先把模块契约和事务边界做好,再根据独立扩展需求拆分。

11. 如何设计一个避免超卖的下单流程? ​

展开答案与追问

参考答案: 先定义库存与订单不变量;用数据库事务和带库存条件的原子更新作为基础保障,检查影响行数。请求带幂等键,支付回调去重,超时释放库存通过可靠任务并校验状态处理。

追问与易错点: Redis 预扣可作为削峰手段,但不能省略持久化、对账和补偿。面试要讲支付迟到及取消并发。

12. 如何设计短链接服务并说明演进? ​

展开答案与追问

参考答案: 核心是短码唯一映射、创建与跳转 API、过期和滥用控制。先用唯一约束和关系库,热点读可加缓存;需要自定义短码时处理冲突,统计可异步化。按规模再考虑分片和多地域。

追问与易错点: 需明确是否永久重定向与缓存策略、目标 URL 校验和恶意链接处置;不能随意抓取任意目标以免引入 SSRF。

进一步阅读 ​

这里讨论的是跨技术的设计思路,官方示例中的特定云服务不是本题库的前置条件。

先尝试回答,再展开答案。每天进步一点。