Java 工程师面试题 + 参考答案2026年大厂题目
Java 工程师面试题 + 参考答案──────────────────────────────────────────────────1. JDK、JRE、JVM 分别是什么?三者有什么关系?参考答案:JVM是 Java 虚拟机,负责执行字节码文件。JRE是 Java 运行环境,包含JVM和运行 Java 程序所需的核心类库。JDK是 Java 开发工具包,包含JRE以及编译器、调试工具等开发工具。关系可以理解为:JDK包含JRE,JRE包含JVM。开发 Java 程序通常需要JDK,运行 Java 程序至少需要JRE。──────────────────────────────────────────────────2. Java 为什么能跨平台?参考答案:Java 程序先被编译成与平台无关的字节码,也就是.class文件。不同操作系统上只要安装了对应实现的JVM,就可以由JVM把同一份字节码翻译成当前平台能执行的机器指令。所以 Java 跨平台的核心不是源码直接跨平台,而是字节码 + 不同平台上的 JVM实现了跨平台运行。──────────────────────────────────────────────────3. 面向对象的三大特性是什么?参考答案:Java 面向对象的三大特性是:封装:把属性和行为封装到对象内部,对外只暴露必要接口,降低耦合。继承:子类可以复用父类已有的属性和方法,提高代码复用率。多态:同一个父类引用可以指向不同子类对象,调用同一方法时表现出不同实现。例如支付系统里可以定义一个PayService接口,不同支付方式实现自己的pay()方法,这就是多态的典型应用。──────────────────────────────────────────────────4.==和equals()有什么区别?参考答案:对于基本类型,==比较的是值是否相等。对于引用类型,==比较的是两个引用是否指向同一个对象。equals()用来比较对象逻辑上是否相等。在Object类中,equals()默认实现其实也是比较地址。但像String、Integer等类已经重写了equals(),比较的是内容。面试中要补一句:如果重写了equals(),通常也要一起重写hashCode(),否则在哈希容器中会出现行为不一致的问题。──────────────────────────────────────────────────5.hashCode()有什么作用?为什么重写equals()往往要重写hashCode()?参考答案:hashCode()主要用于哈希结构中快速定位元素,比如HashMap、HashSet。对象放入哈希容器时,通常先根据hashCode()找桶位,再用equals()比较是否为同一个逻辑对象。Java 约定中:如果两个对象通过equals()比较相等,那么它们的hashCode()必须相同。如果两个对象hashCode()相同,不代表它们一定相等。如果只重写equals()而不重写hashCode(),会导致逻辑相等的对象进入不同桶,出现HashSet去重失效或HashMap查询不到值的问题。──────────────────────────────────────────────────6.String、StringBuilder、StringBuffer有什么区别?参考答案:String是不可变类,每次拼接都会产生新对象。StringBuilder是可变字符序列,线程不安全,但性能较好。StringBuffer也是可变字符序列,方法大多带同步,线程安全,但性能相对低一些。一般来说:单线程字符串频繁拼接优先用StringBuilder多线程共享字符串缓冲区时才考虑StringBuffer少量固定字符串使用String即可──────────────────────────────────────────────────7. 为什么String设计成不可变?参考答案:String不可变主要有几个原因:安全性:字符串经常用于类加载、网络地址、文件路径等关键场景,不可变可以避免内容被篡改。线程安全:不可变对象天然线程安全,多线程共享时不需要额外同步。字符串常量池复用:相同字面量可以共享对象,节省内存。哈希值稳定:字符串常作为HashMap的键,不可变可以保证hashCode()不会变化。所以不可变带来了更好的安全性、可复用性和稳定性。──────────────────────────────────────────────────8.final、finally、finalize有什么区别?参考答案:final是关键字,可以修饰类、方法、变量。finally是异常处理中的代码块,通常用于释放资源。finalize()是Object的方法,对象被垃圾回收前可能被调用。补充说明:final修饰类表示不能被继承,修饰方法表示不能被重写,修饰变量表示只能赋值一次。finally不管是否发生异常,一般都会执行。finalize()机制不可预测,性能也不好,已经不推荐作为资源释放手段,通常改用try-with-resources。──────────────────────────────────────────────────9.abstract class和interface有什么区别?参考答案:抽象类更强调“是什么”,接口更强调“能做什么”。主要区别:抽象类可以有成员变量、构造方法、普通方法和抽象方法。接口主要用于定义规范,类可以实现多个接口,但只能继承一个抽象类或父类。接口更适合做能力扩展和解耦,抽象类更适合抽取公共状态和共用逻辑。如果多个子类之间有明显的公共属性和模板逻辑,通常用抽象类;如果只是约定行为,比如Runnable、Comparable,通常用接口。──────────────────────────────────────────────────10. 重载和重写有什么区别?参考答案:重载是方法名相同、参数列表不同,发生在同一个类中,返回值类型是否相同不是区分重载的依据。重写是子类对父类方法重新实现,方法名、参数列表要一致,返回值类型要兼容,访问权限不能更严格。重载体现的是编译期多态,重写体现的是运行期多态。──────────────────────────────────────────────────11. Java 的访问修饰符有哪些?参考答案:Java 常见访问修饰符有四种:private:只能在当前类中访问默认不写:同包可访问protected:同包可访问,不同包的子类也可访问public:任何地方都可访问访问范围从小到大是:private default protected public。──────────────────────────────────────────────────12. Java 中异常分哪几类?参考答案:Java 中所有异常和错误都继承自Throwable,主要分两大类:Error:系统级严重错误,程序通常无法处理,比如OutOfMemoryErrorException:程序运行过程中可处理的异常Exception又可以分为:受检异常:编译期要求显式处理,比如IOException运行时异常:编译期不强制处理,比如NullPointerException/

相关新闻

Qt QLabel控件深度解析:从文本显示到富文本、图像与交互的全面应用

Qt QLabel控件深度解析:从文本显示到富文本、图像与交互的全面应用

1. QLabel控件:不只是显示文字的“标签” 在Qt的控件家族里,QLabel可能是最容易被新手“轻视”的一个。很多人第一眼看到它,觉得这不就是个显示几行文字的小部件吗?有什么好讲的?但在我十多年的Qt开发经历里&#xff0…

2026/10/27 10:15:42 阅读更多 →
2026 年企业邮箱系统选型攻略:5 款国内主流邮箱系统产品深度对比

2026 年企业邮箱系统选型攻略:5 款国内主流邮箱系统产品深度对比

在数字化转型全面深化的2026年,企业邮箱系统已从基础通信工具演变为企业信息化建设的核心枢纽。随着远程办公常态化、数据安全合规要求日益严格,选择一款适合自身业务发展的邮件系统成为企业决策者的重要课题。本文将深入对比分析U-Mail邮件系统、Corema…

2026/10/24 23:26:55 阅读更多 →
Unity多智能体避障:RVO2算法原理与工程实践详解

Unity多智能体避障:RVO2算法原理与工程实践详解

1. 项目概述:为什么RVO2是Unity智能体避障的“终极”选择? 如果你在Unity里做过RTS游戏、模拟城市或者任何需要大量NPC或单位移动的项目,大概率被“群体卡顿”和“鬼畜穿模”这两个问题折磨过。让几十上百个智能体(Agent&#xff…

2026/10/25 18:56:14 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →