1.细节问题
1.1 String, stringbuffer,stringbuilder 的区别
Final char
Sychornize
1.2 object 有哪些方法?
Equals hashCode notify notifyAll wait getClass toString
- java 集合有哪些 有什么不同
Collection 接口下
Map接口下
2.1 Jdk1.8中hashpMap有什么优化?
JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。
当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。
针对这种情况,JDK 1.8 中引入了 红黑树(查找时间复杂度为 O(logn))来优化这个问题。
红黑树相关内容学习——传送门
http://www.cnblogs.com/skywang12345/p/3245399.html
Jdk18中hashMap的hash算法
Resize(扩容算法)
扩容后返回新的Tab(新的红黑树)
初始化容量
2.2 对象的Equals和hashCode到底有什么关系?
https://www.cnblogs.com/skywang12345/p/3324958.html
简单说:1.如果不放在hash结构(hashSet,hashMap等)中,这两个东西并没有关系。
2.如果在hash结构中,只覆写equals,不复写hashCode,没有卵用。(其实是因为如上源码中,put的时候先按照hashCode来判断位置,只有hashCode相同的情况下才会去判断Equals)
- Concurrent包的使用
3.1Concurrent包下的HashMap中segment与buket有什么区别
SegMent结构-jdk15中的hashMap
https://www.cnblogs.com/dolphin0520/p/3932905.html
Jdk1.8中concurrentHashMap采用Cas机制实现无锁同步
https://www.cnblogs.com/junjiang3/p/8686290.html