2025 面经整理

星期六, 12月 20, 2025 | 3分钟阅读 | 更新于 星期三, 12月 24, 2025

@
2025 面经整理

收藏夹

知乎收藏夹: https://www.zhihu.com/collection/991923727 小红书收藏夹: https://www.xiaohongshu.com/board/690a2ff300000000130224b3?source=web_profile_page

内容大纲

Java

synchronized

Java 锁升级(Lock Escalation)的过程:

synchronized 和 java.util.concurrent.locks.ReentrantLock 有什么本质区别?(例如:性能、是否可中断、是否公平锁、是否需要手动释放)

类加载

什么是类加载器?双亲委派模型是什么?为什么需要它?如何打破双亲委派模型?

GC

设计模式

常用设计模式

JDK 或 Spring 源码中使用了哪些设计模式?

Spring

Redis

  • 为什么选择 Redis 而不是其他缓存(如 Guava/Map)?
  • Redis 的常见数据结构及应用场景(String, List, Set, Hash, ZSet)。
  • Redis 的持久化机制:RDB 和 AOF 的原理与优缺点。
  • Redis 的内存淘汰机制(LRU, LFU 等)。
  • 缓存雪崩、缓存穿透、缓存击穿的区别和解决方案。
  • 如何保证数据库和缓存之间的数据一致性(例如:双写策略)。
  • 分布式锁的实现方式(SET NX)。

MySQL

  • 事务的 ACID 特性及其实现原理。
  • 数据库的四种隔离级别,以及它们分别解决了什么问题(脏读、不可重复读、幻读)。
  • MyISAM 和 InnoDB 存储引擎的主要区别。
  • 索引的底层数据结构(B+ 树)及为什么选择 B+ 树。
  • 联合索引的“最左匹配原则”如何生效?
  • SQL 调优:如何使用 EXPLAIN 分析 SQL 性能?

Kafka

  • 为什么要使用消息队列?它解决了哪些问题?
  • Kafka 的核心特性:高吞吐、高可用、低延迟是如何实现的?
  • 消息的存储机制(分区、副本、日志段)。
  • Consumer Group 的 Rebalance 机制。
  • 如何保证消息的顺序性不丢失不重复(幂等性)?
  • 消息队列可能带来的问题(如数据一致性、重复消费)及解决方案。

系统设计

  • 高可用:限流(令牌桶、漏桶)、降级、熔断机制。
  • 负载均衡:常见的负载均衡算法(轮询、加权、最少连接)及一致性哈希原理。
  • 架构模式:分层架构、微服务架构的优缺点。
  • 分布式事务:CAP 原则、BASE 理论,以及常见的分布式事务解决方案(2PC、TCC、SAGA)。
  • 设计实践:如何设计一个高并发的秒杀系统?如何设计一个短链接系统?