iii. 再 hash 法,就是当通过某个 hash 函数计算的 key 存在冲突时,再用另外一个 hash 函数对这个 key 做 hash,一直运算直到不再产生冲突。这种方式会增加计算时间,性能影响较大。
iv. 建立公共溢出区, 就是把 hash 表分为基本表和溢出表两个部分,凡事存在冲突的元素,一律放入到溢出表中。
e. HashMap 在 JDK1.8 版本中,通过链式寻址法+红黑树的方式来解决 hash 冲突问题,其中红黑树是为了优化 Hash 表链表过长导致时间复杂度增加的问题。当链表长度大于 8 并且 hash 表的容量大于 64 的时候,再向链表中添加元素就会触发转化。
以上就是我对这个问题的理解!
二、问题总结
这道面试题主要考察 Java 基础,面向的范围是工作 1 到 5 年甚至 5 年以上。因为集合类的对象在项目中使用频率较高,如果对集合理解不够深刻,容易在项目中制造隐藏的 BUG。所以,再强调一下,面试的时候,基础是很重要的考核项!!
本期高手面试系列的文章就到这里结束了,喜欢的朋友记得点赞收藏。
我是 浮生,一个工作了 14 年的 Java 程序员,咱们下期再见。
三、粉丝福利
最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份?50W字面试解析文档、简历模板、学习路线图、java必看学习书籍?、 需要的小伙伴 可以关注我
公众号:“?灰灰聊架构?”, 回复暗号:“?321?”即可获取