2026Java常见面试题及答案汇总

编辑

📚 一、Java 基础

1. Java 的三大特性是什么?

✅ 答案:

  • 封装:隐藏对象的属性和实现细节,仅对外提供访问方式(getter/setter)。
  • 继承:子类继承父类的属性和方法,提高代码复用性。
  • 多态:同一方法在不同对象上有不同行为(方法重写、接口实现)。

2. == 和 equals() 的区别?

✅ 答案:

  • ==:比较基本数据类型的值,或引用类型的内存地址。
  • equals():默认比较对象地址(Object类),但可被重写(如 String 比较内容)。

3. String、StringBuilder、StringBuffer 的区别?

✅ 答案:

类 可变性 线程安全 适用场景
String ❌ 不可变 ✅ 安全(final) 字符串常量
StringBuilder ✅ 可变 ❌ 不安全 单线程字符串操作
StringBuffer ✅ 可变 ✅ 安全(synchronized) 多线程字符串操作

🔍 二、Java 集合

4. ArrayList 和 LinkedList 的区别?

✅ 答案:

对比项 ArrayList LinkedList
底层结构 动态数组 双向链表
查询效率 O(1)(随机访问快) O(n)(需遍历)
增删效率 O(n)(需移动元素) O(1)(头尾操作快)
适用场景 频繁查询 频繁增删

篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

需要全套面试笔记及答案【扫一扫】 即可免费获取**

5. HashMap 的底层原理?

✅ 答案:

  • JDK 1.7:数组 + 链表(哈希冲突时链表存储)。
  • JDK 1.8+ :数组 + 链表 + 红黑树(链表长度 ≥8 时转红黑树)。
  • 扩容机制:默认容量 16,负载因子 0.75,扩容时容量翻倍。

⚡ 三、多线程 & 并发

6. 线程的创建方式有哪些?

✅ 答案:

  1. 继承 Thread 类(不推荐,单继承限制)。
  2. 实现 Runnable 接口(推荐,可复用)。
  3. 实现 Callable 接口(可返回结果,配合 FutureTask)。
  4. 线程池(ExecutorService) (推荐,管理线程资源)。

7. synchronized 和 ReentrantLock 的区别?

✅ 答案:

对比项 synchronized ReentrantLock
实现方式 JVM 层面 Java API 层面
锁类型 非公平锁 可公平/非公平
可中断 ❌ 不支持 ✅ 支持(lockInterruptibly)
条件变量 ❌ 不支持 ✅ 支持(Condition)

🛠️ 四、JVM

8. JVM 内存模型(运行时数据区)?

✅ 答案:

  • 方法区(元空间) :存储类信息、常量、静态变量。
  • 堆(Heap) :存放对象实例(GC 主要区域)。
  • 虚拟机栈:存储方法调用、局部变量表。
  • 本地方法栈:Native 方法调用。
  • 程序计数器:记录线程执行位置。

9. 垃圾回收算法有哪些?

✅ 答案:

  • 标记-清除:简单但内存碎片多。
  • 复制算法:高效(新生代使用),但浪费空间。
  • 标记-整理:适合老年代,减少碎片。
  • 分代收集:新生代(复制算法) + 老年代(标记-整理)。

🌱 五、Spring

10. Spring Bean 的生命周期?

✅ 答案:

  1. 实例化(new)
  2. 属性赋值(populate)
  3. 初始化 (@PostConstruct、InitializingBean)
  4. 使用
  5. 销毁 (@PreDestroy、DisposableBean)

篇幅限制下面就只能给大家展示小册部分内容了。整理了一份核心面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

需要全套面试笔记及答案【扫一扫】 即可免费获取**

11. Spring AOP 的实现原理?

✅ 答案:

  • JDK 动态代理(基于接口)。
  • CGLIB 动态代理(基于子类,无接口时使用)。
  • 核心:ProxyFactory + MethodInterceptor。

📊 六、数据库 & 缓存

12. MySQL 索引失效的场景?

✅ 答案:

  • 使用 !=、<>、NOT IN。
  • 对索引列进行运算(如 WHERE age + 1 > 20)。
  • 使用 LIKE '%xx'(左模糊)。
  • 联合索引未遵循最左前缀原则。

13. Redis 持久化方式?

✅ 答案:

  • RDB(快照) :定时全量备份,恢复快但可能丢数据。
  • AOF(日志) :记录写命令,数据更安全但文件较大。
  • 混合模式(Redis 4.0+) :RDB + AOF 结合。

🚀 七、分布式 & 微服务

14. CAP 理论是什么?

✅ 答案:

  • C(一致性) :所有节点数据一致。
  • A(可用性) :每次请求都能响应。
  • P(分区容错性) :网络分区时仍能运行。
  • 结论:分布式系统只能满足其中两项(如 CP、AP)。

15. 如何解决分布式事务问题?

✅ 答案:

  • 2PC(两阶段提交) :协调者 + 参与者,强一致但阻塞。
  • TCC(Try-Confirm-Cancel) :业务补偿,适用于高并发。
  • SAGA:长事务拆分 + 补偿机制。
  • 本地消息表:异步确保最终一致。
相关推荐
IT_陈寒1 小时前
SpringBoot启动慢得像蜗牛?原来是这个配置在捣鬼
前端·人工智能·后端
不才不才不不才3 小时前
Spring 源码系列(29): 20 道高频面试题源码级解析合集
java·后端·spring
索隆zoro3 小时前
Army 的可插拔架构:army-jdbc 与方言模块
java·后端
小蒜学长4 小时前
校园社团招新网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·校园社团招新网站
蜗牛互联网5 小时前
从Barclays扩大Claude部署看受监管软件工程的责任重分配
java·大数据·人工智能·后端·软件工程
周杰伦fans6 小时前
C#对话摘要降低Token消耗
人工智能·后端·c#
做系统的大强7 小时前
脚本说 PASS、OS 读全零 —— 到底是谁在撒谎?
后端·操作系统
code2cat8 小时前
【随笔】MCP资源更新订阅:通知到达以后,Agent怎样刷新旧资料
java·后端·开发工具·ai agent·mcp
Harvil_9 小时前
任务跑一半,API 突然报“对话超长“断流:我给 Agent 修的紧急逃生通道
后端
用户EasyAdminBlazor9 小时前
EasyAdminBlazor SignalR 实时消息源码解析:从 NotificationHub 到站内消息
后端