Java常见面试题及答案汇总(2025持续更新)

Java 作为企业级开发的主流语言,面试时涉及的知识点广泛且深入。本文整理了 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. 初始化@PostConstructInitializingBean
  4. 使用
  5. 销毁@PreDestroyDisposableBean

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 面试高频问题,涵盖 基础、集合、并发、JVM、Spring、数据库、分布式 等核心知识点,适合 校招 & 社招 备战!

💡 建议收藏 + 实践 + 深入理解原理!

📌 你的点赞和关注是我持续更新的动力! 🚀

📢 欢迎在评论区补充你的面试经验! 💬

Read more

GitHub 上 10 大热门开源 AI Agent 项目综述(2025 最新)

随着 AI 技术的快速发展,AI Agent(AI 智能体)正成为科技界最炙手可热的话题之一。这些能够自主感知、决策和行动的 AI 系统正在改变我们与技术交互的方式。而在这场 AI 革命中,开源社区扮演着至关重要的角色。 GitHub,作为全球最大的开源代码托管平台,汇聚了众多创新的 AI Agent 项目。这些项目不仅展示了 AI 技术的最新进展,还为开发者和研究者提供了宝贵的学习和实验资源。在本文中,我们将详细介绍 10 个在 GitHub 上广受欢迎的开源 AI Agent 项目,探讨它们的特点、应用场景以及对未来 AI 发展的影响,以下排名不分先后。 AutoGPT * GitHub Stars: 166k+ * 链接: https://github.com/Significant-Gravitas/AutoGPT

By Ne0inhk

100%开源,国产Qmini双足机器人,从3D打印资源到软件系统、驱动算法全公开

文末联系小编,获取项目源码 宇树 Qmini 是一款由宇树科技设计并开源的低成本双足机器人,拥有完整的硬件BOM清单、电气系统框图、3D结构的STEP文件、装配SOP、URDF模型和基础控制软件,适合业余爱好者、教育工作者和研究人员使用。 Qmini 机器人组装过程简单,个人开发者可以完全通过 3D 打印进行复刻,并以类似乐高的模块化方式组装自己的机器人,3-5小时即可完成。该项目为机器人技术提供了一个便捷且经济的切入点,加速创新,并为全球机器人生态系统的发展做出贡献。 Qmini 秉承“优秀工具应该易于使用”的理念,在构建时充分考虑了简洁性和成本效益,以树莓派4B(Raspberry Pi 4 Model B)作为默认主控板,机器人核心骨骼、四肢部件可以通过3D打印来制造,告别复杂机械加工;另外最关键的是开源的较为彻底从机械到驱动算法全公开;虽然编程技术门槛有一些,但相较于其他开源项目,代码结构清晰比较友好。 01 Qmini 双足机器人架构方案 Hardware: 硬件: • 提供完整的物料清单(BOM) • 提供电气系统框图 • 提供

By Ne0inhk
OpenClaw(原Clawdbot/Moltbot):开年最火开源桌面Agent 完整部署指南(零门槛 + 飞书/钉钉集成 + 自动化实战)

OpenClaw(原Clawdbot/Moltbot):开年最火开源桌面Agent 完整部署指南(零门槛 + 飞书/钉钉集成 + 自动化实战)

一、前置准备(零门槛,普通电脑可跑,命令直接复制) 1.1 硬件要求(无最低配置限制,适配所有办公电脑) * CPU:≥2核(Intel i3/i5、AMD Ryzen 3/5及以上) * 内存:≥4G(推荐8G,避免多任务卡顿) * 存储:SSD剩余≥10G(仅存储镜像/配置,无大文件) * 网络:可正常联网(国内网络即可,已适配国内镜像源) 1.2 软件要求(固定版本,避免兼容问题) * 操作系统:Windows10+/macOS12+/Linux(Ubuntu22.04最佳,Windows推荐WSL2) * 核心工具:Docker≥24.0 + Docker

By Ne0inhk
【玩转机械臂】(二)机器人DH参数模型与正运动学

【玩转机械臂】(二)机器人DH参数模型与正运动学

目录 1  DH参数模型(Denavit-Hartenberg) 1.1  四个DH参数的定义 1.2  机器人坐标系的建立方法 1.3  DH参数表及相应坐标变换 2  机器人正向运动学 2.1  正运动学与雅可比矩阵 3  机器人运动的速度  3.1  速度在的坐标系间的变换 3.1.1  速度变换的一般形式 3.1.2  用角速度矢量表示坐标系的旋转运动 3.1.3  角速度矢量在不同坐标系之间的传递 3.2  速度在机器人关节间的传递 3.2.1  转动关节向前传递 3.2.2  移动关节向前传递 3.2.3  小结

By Ne0inhk