HashMap 与 HashTable(超重点)
PS:非科班社招转行+时间不多的用户,可以不用看原理剖析,先会基本使用就行,后面面试复习时在看。
面试提问方式(都是真题,越上面的题问的越多)
PS:这些全部来源于 八股文考点全方位分析
一般集合的连环炮提问,都是 HashMap 了,以下是历史面试题的提问:
1、HashMap的底层原理
2、HashMap底层为什么要用红黑树呢?为什么不用平衡二叉树?
3、HashMap啥时候扩容,为什么扩容
4、如果两个同样的put相同的key,会发生什么?
5、HashMap是线程安全的吗?为什么呢?
6、HashMap在遇到key冲突的时候是怎么处理的呢?
7、 hashMap put get过程
8 、取模的时候为什么用&(length-1)
9、HashMap的底层数据结构?链表长度大于8就会转化成红黑树吗,没有对数组的插入有要求吗?链表是双向链表还是单向链表?
10 、hashp什么时候退回回链表?为什么不是7
11、HashMap不是线程安全的,如果要保证线程安全怎么办呢?可以用什么?
12、有哪些线程安全的集合类,讲一讲原理(HashTable,ConcurrentHashMap,CopyOnWriteArrayList)
13、hashmap一套 put流程,1.8的改进(红黑树,头插变尾插,扩容等)
14、hashmap,counrrenthashmap的原理以及区别(要求从源码上解释)
18、讲一讲HashSet、Hashtable
反正可以问的有很多,一般面试官就先简单让你聊一聊 hashmap,之后你熟悉的话,完全可以自己引导。