跳到主要内容

后端开发面经

核心考点

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. 消息队列

对比KafkaRabbitMQRocketMQ
吞吐量极高中等
顺序消息分区内有序不保证支持
延迟消息不支持插件支持原生支持
适合场景日志、大数据异步解耦电商、金融

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、数据库唯一约束、状态机