🎯 后端架构面试题精选 50 题¶
适用岗位:后端开发工程师、架构师、 AI 系统工程师 难度分布:基础(20) + 进阶(20) + 系统设计(10)
一、基础题( 20 题)¶
Q1: HTTP/1.1 vs HTTP/2 vs HTTP/3 的区别? | 版本 | 传输层 | 多路复用 | 核心改进 | |------|--------|---------|---------| | 1.1 | TCP | 否(队头阻塞) | Keep-Alive 长连接 | | 2 | TCP | 是(Stream) | 二进制帧、头部压缩(HPACK)、服务器推送 | | 3 | QUIC(UDP) | 是 | 0-RTT 连接、无队头阻塞、连接迁移 |
Q2: TCP 三次握手和四次挥手? - 三次握手: SYN→SYN+ACK→ACK (确保双方收发能力) - 四次挥手: FIN→ACK→FIN→ACK (双方独立关闭) - TIME_WAIT: 2MSL 等待,防止旧连接的延迟包干扰新连接
Q3: RESTful API 设计原则? - 资源导向: URL 是名词(/users/123), HTTP 动词表示操作(GET/POST/PUT/DELETE) - 无状态:每个请求包含所有信息 - 版本控制:/API/v1/... - 分页:?page=1&size=20 - 错误码: 200/201/400/401/403/404/500
Q4: 数据库索引的原理? B+树 vs 哈希索引? - B+树:有序多叉树,支持范围查询和排序, MySQL InnoDB 默认 - 哈希索引: O(1)等值查询,不支持范围查询 - 建索引原则:高选择性字段、 WHERE/JOIN/ORDER BY 字段、最左前缀匹配
Q5: SQL 优化的基本策略? - EXPLAIN 分析执行计划 - 避免全表扫描:加索引、避免函数包裹列 - 覆盖索引:索引包含查询所有列 - 分页优化:用"WHERE id > last_id"替代"OFFSET" - 避免 SELECT *
Q6: Redis 常用数据结构和应用场景? | 数据结构 | 场景 | |---------|------| | String | 缓存、计数器、分布式锁 | | Hash | 用户信息、对象属性 | | List | 消息队列、最新 N 条记录 | | Set | 标签、共同好友 | | ZSet | 排行榜、延迟队列 |
Q7: 缓存穿透、击穿、雪崩的区别和解决? - 穿透:查不存在的 key→布隆过滤器/缓存空值 - 击穿:热 key 过期→互斥锁/永不过期+异步更新 - 雪崩:大批 key 同时过期→随机过期时间/多级缓存
Q8: MySQL 事务 ACID 属性? - Atomicity:原子性( undo log ) - Consistency:一致性(约束+应用逻辑) - Isolation:隔离性(锁+MVCC ) - Durability:持久性( redo log + WAL )
Q9: MySQL 隔离级别? - READ UNCOMMITTED → 脏读 - READ COMMITTED → 不可重复读( Oracle 默认) - REPEATABLE READ → 幻读( MySQL 默认, MVCC+间隙锁解决) - SERIALIZABLE → 完全串行化
Q10: 什么是分布式锁? Redis 实现?
- Redlock:多 Redis 实例多数派加锁
- 问题:主从切换可能丢锁 → Redisson 的看门狗续期
Q11: 消息队列的作用? Kafka vs RabbitMQ ? - 作用:异步解耦、削峰填谷、事件驱动 - Kafka:高吞吐( 100 万+/s )、持久化、适合大数据/日志/流处理 - RabbitMQ:低延迟、协议丰富(AMQP)、适合业务消息
Q12: 微服务架构的优缺点? - 优:独立部署、技术多样性、故障隔离、团队自治 - 缺:分布式复杂性、运维成本、数据一致性、调试困难 - 拆分原则:按业务域 DDD 拆分
Q13: 负载均衡算法? - 轮询(RR)、加权轮询、随机、加权随机 - 最少连接、一致性哈希(适合缓存/有状态服务) - IP Hash (会话粘性)
Q14: CAP 定理和 BASE 理论? - CAP :一致性(C) + 可用性(A) + 分区容忍(P),只能 3 选 2 - 分布式系统必须 P → 选 CP(强一致)或 AP(最终一致) - BASE :基本可用+软状态+最终一致性
Q15: 什么是 gRPC ?和 REST 对比? | 维度 | gRPC | REST | |------|------|------| | 协议 | HTTP/2 + Protobuf | HTTP/1.1 + JSON | | 性能 | 高(二进制序列化) | 中(文本序列化) | | 流式 | 支持双向流 | 不支持 | | 适用 | 微服务内部通信 | 对外 API |
Q16: Docker 容器和虚拟机的区别? - 容器共享宿主 OS 内核,秒级启动, MB 级大小 - VM 有独立 OS ,分钟级启动, GB 级大小 - 容器适合微服务, VM 适合强隔离场景
Q17: 什么是连接池?为什么需要? - 预创建一批数据库连接复用,避免频繁创建/销毁 - 参数:最小连接数、最大连接数、超时时间 - 常用: HikariCP(Java)、 SQLAlchemy Pool(Python)
Q18: 分库分表的策略? - 垂直拆分:按业务拆表(用户表/订单表分库) - 水平拆分:按主键 Hash/范围分片 - 问题:跨分片查询、分布式事务、全局 ID 生成(雪花算法)
Q19: 什么是幂等性?如何实现? - 多次执行相同操作结果一致(如 PUT 是幂等的, POST 不是) - 实现:数据库唯一约束、 Token 机制、乐观锁(版本号)
Q20: OAuth 2.0 的四种授权方式? - 授权码模式(最安全, Web APP 标准) - 隐式模式(简化版, SPA 但不推荐) - 密码模式(用户名密码,内部系统) - 客户端凭证模式(服务间通信)
二、进阶题( 20 题)¶
Q21-Q40 要点: - Q21: 分布式事务方案(2PC/TCC/Saga/消息最终一致性) - Q22: 限流算法(令牌桶/漏桶/滑动窗口) - Q23: 熔断器模式(Hystrix/Sentinel/断路器状态机) - Q24: 数据库读写分离和主从延迟解决 - Q25: 全文搜索引擎(Elasticsearch 原理/倒排索引) - Q26: API 网关的职责(路由/限流/认证/灰度) - Q27: 服务发现(Consul/Nacos/etcd) - Q28: 配置中心设计(Nacos/Apollo) - Q29: 日志系统设计(ELK/Loki) - Q30: 链路追踪(Jaeger/Zipkin/OpenTelemetry) - Q31: CQRS(命令查询职责分离)模式 - Q32: Event Sourcing(事件溯源) - Q33: 如何实现分布式 ID 生成器 - Q34: WebSocket vs SSE vs 长轮询 - Q35: CDN 原理和缓存策略 - Q36: 容器编排(Kubernetes 架构/Pod/Service/Ingress) - Q37: CI/CD 流水线设计 - Q38: 数据库连接泄漏排查方法 - Q39: JVM/Python 内存模型和 GC - Q40: 如何设计一个高并发秒杀系统
三、系统设计题( 10 题)¶
Q41: 设计一个 URL 短链接服务 - 核心: 62 进制编码(a-zA-Z0-9) → 7 位支持 62^7≈3.5 万亿 - 架构: API→ID 生成(snowflake)→62 进制→存 Redis+MySQL→301 重定向 - 扩展:自定义短链、过期、统计
Q42: 设计一个分布式文件存储系统 - 参考 HDFS : NameNode(元数据)+DataNode(数据块) - 分块存储(64MB 块)+3 副本+机架感知 - 一致性哈希分片+负载均衡
Q43: 设计一个实时排行榜系统 - Redis ZSet : ZADD/ZRANK/ZRANGE - 分段排行:前 1000 名精确排序+后续近似 - 持久化:定期 dump 到 MySQL
Q44: 设计一个即时通讯系统 - 长连接(WebSocket)+消息队列+离线消息存储 - 消息可靠性: ACK 确认+消息序号+重试 - 群聊:扩散写(写入每个成员信箱)
Q45: 设计一个日活千万的 Feed 流系统 - 推模型(Push):发布时写入粉丝收件箱(适合粉丝少) - 拉模型(Pull):查看时从关注者拉取(适合大 V) - 推拉结合:大 V 用拉,普通用户用推
Q46: 设计一个 LLM 推理服务(日调用 1 亿) - 架构: API Gateway → 请求队列 → GPU 集群(vLLM/TensorRT-LLM) - 优化: Dynamic Batching + KV Cache + PagedAttention + 量化 - 弹性: K8s HPA 按 GPU 利用率自动扩缩 + 请求优先级队列 - 成本: Spot 实例+模型量化(INT4/FP8)+短请求路由到小模型
Q47: 设计一个分布式向量检索系统 - Milvus/Qdrant 架构:协调器+查询节点+数据节点+索引节点 - 索引: IVF+PQ/HNSW ,支持百亿级向量 - 实时性:增量索引+异步全量重建
Q48-Q50:设计电商下单流程、设计监控告警系统、设计多租户 SaaS 平台
最后更新: 2026 年 2 月