![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
pyd1040201698
世界是怎样的,程序就是怎样的
展开
-
12、说说synchronized关键字的底层原理是什么?(基础篇)
我这个synchronized是用来加锁的,我可以对一个对象去加锁,我也可以对一个类去加锁,锁之间会有互斥,有一个人加了锁,另外一个人就必需得在外面等着,得让加了锁的把synchronized里面的代码都执行完,执行出去了之后,才会把锁释放,锁释放了之后,排在后面的线程才能够过来去获取锁,然后再执行synchronized里面的代码synchronized 底层原理是什么?首先 synchronized 加锁,他会执行一个 monitorenter 指令,释放锁的时候,会执行一个 moni.原创 2020-08-23 09:26:01 · 376 阅读 · 0 评论 -
10、说说HashMap是如何进行扩容的可以吗?
有两个hash值,他们俩可能高16位是一样的,低16位是不一样的,这个时候直接让他去与(n-1)去进行与运算,与出来高16位反正都是0,如果与出来低16位是一样的,那么他们hash冲突就会有问题,所以把这两个hash值高低16位,去异或一下,让他们两低16位不一样,这个时候他们与出来,位置就不一样了...原创 2020-08-22 01:29:19 · 1173 阅读 · 0 评论 -
09、你知道HashMap是如何解决hash碰撞问题的吗?
HashMap什么样的情况下会产生hash冲突?以put方法为例,首先会根据key计算出hash值,到数组中去寻址,如果该位置上没有值得话,就直接插入数据如果有值得话,判断key是否相等,如果相等的话,就直接覆盖数据,如果key不相等的话,这个时候就产生了hash冲突如何解决hash冲突呢?jdk1.7的解决办法:链表jdk1.8的解决办法:链表 + 红黑树会将key-value值存入到一个链表当中,如果链表比较长的话,我们去遍历这个链表,此时时间复杂度是O(n),时间比较.原创 2020-08-22 01:13:27 · 913 阅读 · 0 评论 -
08、JDK 1.8中对hash算法和寻址算法是如何优化的?
HashMap问题:hash算法和寻址算法是如何优化的?hash冲突怎么解决?数组进行扩容的时候怎么扩的,扩容的时候还有一个rehash的过程原创 2020-08-20 22:28:49 · 314 阅读 · 0 评论 -
07、你知道HashMap底层的数据结构是什么吗?
HashMap<String, String> map = new HashMap<String, String>();map.put(“张三”, “测试数据”);map.put(“李四”, “测试数据”);{ “张三”: “测试数据”, “李四”: “测试数据”}底层最核心的数据结构并不是你想的这样的数组对张三计算出来一个hash值,根据这个hash值对数组进行取模,就会定位到数组里的一个元素中去...原创 2020-08-20 15:56:41 · 343 阅读 · 0 评论