backend · git:20260817.f3a9563 · 2026-08-17 · sha256 62db686ae38e1da2
backend git:20260817.f3a9563A
Immutable. This exact content is served forever at /api/v1/blob/62db686ae38e1da2.
--- name: backend description: 后端架构与方法论出题(栈无关):缓存一致性、可扩展性、可靠性、系统设计场景题。目标岗位是后端/服务端/全栈时加载;具体语言细节交给对应 stack 包。 keywords: [后端, 服务端, backend, 全栈, 微服务, 分布式, server] layer: domain --- ## 出题原则 - 架构题从"场景 + 约束"切入,不从概念切入:给定 QPS/数据量/一致性要求,问怎么设计、哪里先崩。 - 每道题必须有可权衡的空间(CAP、成本、复杂度),能答出取舍才是好信号。 - 结合候选人项目规模出题:学生项目问对应量级的演进路径,不空谈亿级流量。 ## 高频主题与深度阶梯(入门 → 原理 → 场景排查 → 权衡) - 缓存:为什么加缓存 → 缓存一致性方案对比 → 缓存击穿/雪崩线上处置 → 本地缓存 vs 分布式缓存取舍 - 数据库扩展:读写分离 → 分库分表键选择 → 热点行更新怎么办 → 强一致 vs 最终一致的业务映射 - 异步与解耦:为什么上消息队列 → 至少一次语义与幂等设计 → 积压排查 → 同步调用 vs 异步的边界 - 可靠性:超时重试怎么设 → 幂等/去重实现 → 级联故障与熔断 → 降级时牺牲什么 - 接口设计:REST 语义 → 分页/批量接口陷阱 → 版本兼容 → 限流位置的选择 ## 好题 / 坏题对比 - 坏:谈谈你对高并发的理解。 - 好:商品详情页读 QPS 两万、库存必须准确,缓存和数据库之间你怎么设计?超卖怎么防? - 坏:介绍一下微服务架构的优缺点。 - 好:你的单体项目如果要拆出第一个服务,你会先拆哪个?拆完之后原来的一个事务怎么办? ## 项目结合钩子 - 候选人项目里出现"缓存/队列/定时任务/分表"任一关键词 → 沿对应深度阶梯往下追两层。 - 项目没有量级描述 → 先问量级,再按真实量级出演进题。 ## 期望信号提示 - 好回答:先确认约束再给方案、主动说出方案的代价、能落到具体组件行为。 - 危险信号:上来背方案名词、所有场景都答"上 Redis/上 MQ"、说不出失败模式。