千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  HashMap面试题解析

HashMap面试题解析

来源:千锋教育
发布人:lxl
时间: 2023-03-24 14:18:39

HashMap面试题解析

  一、面试官套路

  我们在面试时,大多数面试官往往会从一个比较简单的问题开始问求职者,通过逐层深入,一点点来了解求职者的技术水平达到了一个什么样的程度。下面就以HashMap的知识点面试为例进行分析。

  二、面试问题分析

  2.1 请问你熟悉HashMap吗?

  对于这个问题,求职者只能回答熟悉,这是面试官对HashMap考察的开始。首先这是一个比较简单的问题,属于Java基础中集合的知识点,面试官主要想了解求职者对HashMap的使用程度。如果求职者回答不熟悉,就会大幅度的降低自己的面试成绩,因为HashMap是开发过程中很常用的集合之一,如果求职者对开发过程中常用的集合不熟悉,面试官会怀疑的你工作经历造假,极有可能面试不通过。因此,求职者只能回答熟悉,而且要在此对HashMap的基本特性进行必要的介绍。

  2.2 请你说说HashMap是如何存储数据的?

  这个问题是对上一个问题的深入,面试官想了解求职者是否阅读过HashMap的源码。求职者需要说出HashMap是使用数组+链表+红黑树进行数据存储的,存储的时候通过计算key的hash值,使用hash散列算法与数组的长度进行运算,计算出数据存储的具体位置,然后将数据存入到该位置。如果求职者对该问题回答不出来,那么说明求职者的技术水平仅停留着使用层面。

  2.3 HashMap是如何解决hash碰撞的?

  这个问题依然是对上一个问题的深入,如果上一个问题没有回答出来,这个问题可能就不会出现了,面试官想通过该问题了解求职者对源码解读的深入程度。求职者应该先解释什么是hash碰撞,然后再说明HashMap怎么解决hash碰撞的。所谓hash碰撞,指的是不同的key通过hash散列算法与数组的长度计算出来的存储位置相同。说的直白一点,就是两个key在同一个存储位置上碰头了。发生hash碰撞,说明数组的同一个位置上存储了多个元素。HashMap采用链表来解决碰撞问题,将后面存入的数据挂在前一个存储数据的下面。如果该问题回答出来,则说明求职者对源码有一定程度的理解。

  2.4 刚刚你回答的时候说到了红黑树,HashMap在什么时候会使用红黑树?

  这个问题依然是对上一个问题的深入,面试官想知道求职者是否精读过HashMap源码。求职者需要说出链表存在的问题,然后再说出优化方案。链表存在的问题:遍历链表需要从一端到另一端,如果链表过长,则会导致遍历效率降低,所以从HashMap中取值的效率也会降低。HashMap在存储数据的时候对链表的长度进行了校验,如果链表长度大于8,那么会将链表转换为红黑树。我们知道红黑树是一种二叉树,能够提高查询的速度。同样,HashMap在移除数据的时候,也会对红黑树中的数据个数进行校验,当树中存储的数据个数减少到6时,又会重新将红黑树转换为链表。

  2.5 发生hash碰撞的时候数据存储在同一个位置,那么取值的时候如何取?

  面试官通过这个问题,想了解求职者对于取值部分的源码是否进行过解读。求职者需要说出,先通过hash散列算法与数组的长度计算出数据存储的位置,然后对该位置的链表或者红黑色进行遍历比较,比较的时候使用的是equals方法,只要比较结果为真,那么就是需要获取的数据。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>