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"、说不出失败模式。