【面试总结】java基础

版权声明:本文为博主原创文章,转载请标明来源http://blog.csdn.net/srk950606 宋荣凯的博客 https://blog.csdn.net/srk950606/article/details/85270011

1.细节问题

1.1 String, stringbuffer,stringbuilder 的区别

Final char

Sychornize

 

1.2 object 有哪些方法?

Equals hashCode  notify notifyAll  wait  getClass  toString

 

 

  1. 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)

 

 

  1. 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

 

 

 

  

猜你喜欢

转载自blog.csdn.net/srk950606/article/details/85270011