Java高级工程师面试题及详细答案(实战版).docxVIP

  • 1
  • 0
  • 约6.66千字
  • 约 10页
  • 2026-10-13 发布于河北
  • 举报

Java高级工程师面试题及详细答案(实战版).docx

Java高级工程师面试题及详细答案(实战版)

一、Java核心基础(高频进阶)

1、==和equals的区别?重写equals为什么必须重写hashCode?

详细答案:

==是运算符,既可以比较基本类型也可以比较引用类型。基本类型比较的是数值本身,引用类型比较的是对象的内存地址。

equals是Object类的方法,原生逻辑和==一致,也是比较对象地址。大部分业务类(String、Integer、自定义实体)都会重写该方法,重写后是比较对象的内容、属性值,不再比较地址。

必须重写hashCode的核心原因:Java哈希表集合(HashMap、HashSet)存储数据时,先判断hashCode是否一致,再判断equals是否相等。

如果只重写equals不重写hashCode,两个内容相同的对象,会生成不同的hash值,在哈希集合中会被判定为两个不同对象,导致重复存储、去重失效,违反哈希存储规则。

2、String、StringBuilder、StringBuffer的区别?业务场景怎么选?

详细答案:

String是不可变字符串,底层是final修饰的字符数组(JDK9+是字节数组),每次拼接、修改都会生成新对象,频繁操作会产生大量无用对象,占用内存。

StringBuffer和StringBuilder是可变字符串,修改不会生成新对象。核心区别是线程安全:

文档评论(0)

1亿VIP精品文档

相关文档