跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 核心面试高频题与解析:从基础到分布式架构

Java 面试核心考点覆盖基础特性、集合框架、多线程并发、JVM 内存模型、Spring 容器机制、数据库索引优化及分布式事务解决方案。内容针对校招与社招场景整理,提供关键知识点解析与对比,帮助开发者系统复习并掌握底层原理。

心动瞬间发布于 2026/3/23更新于 2026/10/1575 浏览

Java 在企业级开发中占据主导地位,面试考察点往往贯穿基础至架构层。以下梳理了高频考点及核心解析,涵盖基础、集合、并发、JVM、Spring、数据库及分布式领域。

一、Java 基础

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

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

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

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

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

二、Java 集合

4. ArrayList 和 LinkedList 的区别?
对比项ArrayListLinkedList
底层结构动态数组双向链表
查询效率O(1)(随机访问快)O(n)(需遍历)
增删效率O(n)(需移动元素)O(1)(头尾操作快)
适用场景频繁查询频繁增删
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 的区别?
对比项synchronizedReentrantLock
实现方式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)
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:长事务拆分 + 补偿机制。
  • 本地消息表:异步确保最终一致。

综上,上述内容覆盖了 Java 技术栈的核心面试环节,包含基础语法、数据结构、并发编程、虚拟机原理、主流框架及分布式架构方案。掌握这些核心点有助于构建扎实的技术体系。

目录

  1. 一、Java 基础
  2. 1. Java 的三大特性是什么?
  3. 2. == 和 equals() 的区别?
  4. 3. String、StringBuilder、StringBuffer 的区别?
  5. 二、Java 集合
  6. 4. ArrayList 和 LinkedList 的区别?
  7. 5. HashMap 的底层原理?
  8. 三、多线程 & 并发
  9. 6. 线程的创建方式有哪些?
  10. 7. synchronized 和 ReentrantLock 的区别?
  11. 四、JVM
  12. 8. JVM 内存模型(运行时数据区)?
  13. 9. 垃圾回收算法有哪些?
  14. 五、Spring
  15. 10. Spring Bean 的生命周期?
  16. 11. Spring AOP 的实现原理?
  17. 六、数据库 & 缓存
  18. 12. MySQL 索引失效的场景?
  19. 13. Redis 持久化方式?
  20. 七、分布式 & 微服务
  21. 14. CAP 理论是什么?
  22. 15. 如何解决分布式事务问题?

更多推荐文章

查看全部
  • ROG-Map: 基于机器人中心的大场景高分辨率 LiDAR 运动规划网格地图
  • ClaudeCode 结合 Figma-MCP 实现前端 UI 1:1 还原指南
  • 用双栈模拟队列:深入理解 LIFO 到 FIFO 的转换策略
  • 秋叶绘世 Stable Diffusion 整合包功能说明
  • 医疗 AI 场景下算法编程深度解析
  • Lumerical Python API 实战:从数据自动化到光子逆向设计
  • AIGC 在元宇宙与虚拟世界中的应用及技术实现
  • Django+Vue3 前后端分离 Web 视觉系统:集成 YOLO 与 LLM 大模型智能分析
  • Spring AI MCP Server 集成与源码解析
  • Flutter 组件 Genkit 在鸿蒙平台的适配与 AI 流式响应实践
  • Spring Boot 3.5.11 + JDK21 整合 RabbitMQ/RocketMQ/Kafka 对比与选型
  • 基于 Spark 与 Django 的电影票房预测及推荐系统
  • cJSON 1.7.19 源码深度剖析:数据结构、解析流程与注释实践
  • GitHub AI Agent 开源生态概览
  • 10 款主流 AIGC 降重工具对比:免费与付费功能详解
  • 使用 Ollama 本地部署 Llama 3.1 模型
  • 15 种典型 RAG 框架及最新技术综述
  • Ambari Blueprint 核心概念与高可用部署说明
  • MySQL 8.0.0 开发里程碑版本发布
  • 基于大模型的信息采集模型实现与提示词优化

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online