java HashMap的树化与还原是什么?还有哪些面试题?

BSO 2020-11-30 15:27:24 java常见问答 6029

我们平时学习java知识的最终目的都是希望通过这门技术获得一份不错的工资,提升自己的工作水平。其实在java求职过程中会遇到很多平时不怎么熟悉的问题,一起来了解一下吧。

首先说一下,java HashMap的树化与还原是什么?

1.哈希表的最小树形化容量

2.当哈希表中的容量大于这个值时(64),表中的桶才能进行树形化

3.否则桶内元素太多时会扩容,而不是树形化

4.为了避免进行扩容、树形化选择的冲突,这个值不能小于4 *TREEIFY_THRESHOLD

5.一个桶的树化阈值

6.当桶中元素个数超过这个值时(8),需要使用红黑树节点替换链表节点

7.这个值必须为8,要不然频繁转换效率也不高

8.一个树的链表还原阈值

9.当扩容时,桶中元素个数小于这个值(6),就会把树形的桶元素 还原(切分)为链表结构

10.这个值应该比上面那个小,至少为6,避免频繁转换

条件1. 如果当前桶数组为null或者桶数组的长度<MIN_TREEIFY_CAPACITY(64),则进行扩容处理

条件2. 当不满足条件1的时候则将桶中链表内的元素转换成红黑树。

然后再补充一个常见面试题,抽象类和接口类的区别是什么?

1.抽象方法必须为public或者protected,缺省情况下默认为public。而接口的所有方法访问权限自动被声明为public abstract,接口中可以定义“成员变量”,会自动变为public static final修饰的静态常量

2.抽象方法必须由子类来实现,接口可以通过类命名直接访问:ImplementClass.name

3.如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法,如果子类没有实现父类的抽象方法,则必须将子类也定义为抽象类。 而 实现接口的非抽象类必须实现接口中所有方法,抽象类可以不用全部实现

4.抽象类可以有构造器,而接口没有

5.一个子类只存在一个父类,而实现多接口接口

其实java中很多的知识点都是比较偏的,所以大家有时候没有掌握也是很正常的。如果你想要了解更多Java面试题,敬请关注奇Q工具网。

推荐阅读:

hashmap面试题汇总

hashmap的实现原理和hashset的实现原理是什么?

hashmap和hashtable区别是什么?有什么区别?