【面试总结】java基础

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

 

 

 

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农胖虎-java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值