目录
1、HashMap 的数据结构?
2、HashMap 的工作原理?
3、当两个对象的 hashCode 相同会发生什么?
4、你知道 hash 的实现吗?为什么要这样实现?
5.为什么要用异或运算符?
6.HashMap 的 table 的容量如何确定?loadFactor 是什么?该容量如何变化?这种变化会带来什么问题?
7.HashMap中put方法的过程?
8.数组扩容的过程?
9.拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
10.说说你对红黑树的见解?
11.jdk8中对HashMap做了哪些改变?
12.HashMap,LinkedHashMap,TreeMap 有什么区别?
13.HashMap & TreeMap & LinkedHashMap 使用场景?
14.HashMap 和 HashTable 有什么区别?
15.Java 中的另一个线程安全的与 HashMap 极其类似的类是什么?同样是线程安全,它与 HashTable 在线程同步上有什么不同?
16.HashMap & ConcurrentHashMap 的区别?
17.为什么 ConcurrentHashMap 比 HashTable 效率要高?
18.针对 ConcurrentHashMap 锁机制具体分析(JDK 1.7 VS JDK 1.8)
19.ConcurrentHashMap 在 JDK 1.8 中,为什么要使用内置锁 synchronized 来代替重入锁 ReentrantLock?
20.ConcurrentHashMap 简单介绍?
21.ConcurrentHashMap 的并发度是什么?
参考:面试:HashMap 夺命二十一问!鸡哥都扛不住~
1、HashMap 的数据结构?
2、HashMap 的工作原理?
3、当两个对象的 hashCode 相同会发生什么?
关于hashcode和equals方法的理解:
从意义上来说,如果两个对象的hashCode相同,这两个对象不一定相同;如果两个对象的equals返回true,那么这两个对象一定相同。
参考:
1)https://zhuanlan.zhihu.com/p/34899107
2)看似简单的hashCode和equals面试题,竟然有这么多坑!(包含重写)
4、你知道 hash 的实现吗?为什么要这样实现?
5.为什么要用异或运算符?
6.HashMap 的 table 的容量如何确定?loadFactor 是什么?该容量如何变化?这种变化会带来什么问题?
7.HashMap中put方法的过程?
8.数组扩容的过程?
9.拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
10.说说你对红黑树的见解?
11.jdk8中对HashMap做了哪些改变?
12.HashMap,LinkedHashMap,TreeMap 有什么区别?
13.HashMap & TreeMap & LinkedHashMap 使用场景?
14.HashMap 和 HashTable 有什么区别?
15.Java 中的另一个线程安全的与 HashMap 极其类似的类是什么?同样是线程安全,它与 HashTable 在线程同步上有什么不同?
16.HashMap & ConcurrentHashMap 的区别?
17.为什么 ConcurrentHashMap 比 HashTable 效率要高?
18.针对 ConcurrentHashMap 锁机制具体分析(JDK 1.7 VS JDK 1.8)
19.ConcurrentHashMap 在 JDK 1.8 中,为什么要使用内置锁 synchronized 来代替重入锁 ReentrantLock?
20.ConcurrentHashMap 简单介绍?
21.ConcurrentHashMap 的并发度是什么?