后端开发面经
核心考点
1. 数据库
索引
- B+ 树索引:叶节点存数据,范围查询高效
- 联合索引遵循「最左前缀」原则
- 覆盖索引:查询字段全在索引中,避免回表
- 避免索引失效:函数操作、隐式类型转换、
%开头的 LIKE
事务 ACID
- Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)
- 隔离级别:读未提交 → 读已提交 → 可重复读(MySQL 默认)→ 串行化
- MVCC:通过 undo log + Read View 实现无锁并发读
2. Redis
- 数据类型:String、Hash、List、Set、ZSet(跳表)、Stream
- 持久化:RDB(快照,恢复快)vs AOF(追加日志,数据更完整)
- 缓存问题:
- 穿透:查不存在的 key → 布隆过滤器 / 缓存空值
- 击穿:热点 key 过期 → 互斥锁 / 永不过期
- 雪崩:大量 key 同时过期 → 随机 TTL / 熔断
- 分布式锁:SET key value NX EX 或 Redlock
3. 分布式系统
- CAP 定理:一致性、可用性、分区容忍性,三选二
- BASE 理论:基本可用、软状态、最终一致性
- 分布式事务:2PC、TCC、Saga、消息最终一致性
- 限流算法:令牌桶、漏桶、固定窗口、滑动窗口
4. 消息队列
| 对比 | Kafka | RabbitMQ | RocketMQ |
|---|---|---|---|
| 吞吐量 | 极高 | 中等 | 高 |
| 顺序消息 | 分区内有序 | 不保证 | 支持 |
| 延迟消息 | 不支持 | 插件支持 | 原生支持 |
| 适合场景 | 日志、大数据 | 异步解耦 | 电商、金融 |
5. 微服务
- 服务发现:Consul、Nacos、Eureka
- API 网关:认证、限流、路由、聚合(Kong、APISIX)
- 熔断降级:Hystrix / Sentinel,防止级联故障
- 链路追踪:Jaeger、Zipkin、SkyWalking
6. 高频面试题
- TCP 三次握手 / 四次挥手:建立/关闭连接,TIME_WAIT 的作用
- HTTP vs HTTPS:HTTPS = HTTP + TLS,证书验证、对称/非对称加密
- JWT 原理:Header.Payload.Signature,无状态认证,注意续期和吊销
- 数据库分库分表:垂直拆分(按业务)vs 水平拆分(按数据量),ShardingSphere
- 接口幂等性:唯一请求ID、数据库唯一约束、状态机