高级编程工程师面试题(含详细真实面试版答案).docxVIP

  • 1
  • 0
  • 约5.46千字
  • 约 8页
  • 2026-08-21 发布于河北
  • 举报

高级编程工程师面试题(含详细真实面试版答案).docx

高级编程工程师面试题(含详细真实面试版答案)

一、Java核心基础(高级高频)

1.说一说==和equals的核心区别,以及重写equals为什么必须重写hashCode?

详细答案:

首先两者的比对维度完全不同:==是直接比对内存地址,对于基本数据类型比对数值,对于引用类型比对对象地址;equals是Object类的方法,默认实现也是用==比对地址,大部分业务类(String、Integer、自定义实体)都会重写该方法,用来比对对象内容。

重写equals必须重写hashCode的核心原因是为了保证哈希表容器(HashMap、HashSet)的存储一致性。

如果只重写equals不重写hashCode,会出现内容相等的两个对象,hashCode值不同的情况。此时用HashMap存储时,两个内容相同的对象会被存到不同哈希桶中,出现重复存储,违背集合去重规则;同时get查询时会因为哈希桶不一致,无法查到已存入的对象,造成业务bug。

行业规范:equals相等的两个对象,hashCode必须相等;但hashCode相等的对象,equals不一定相等(哈希碰撞)。

2.String、StringBuilder、StringBuffer的区别及实战选型场景

详细答案:

1)String:不可变字符串,底层是final修饰的字符数组,每次拼接、修改都会生成新的Stri

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档