
面试题
pyd1040201698
世界是怎样的,程序就是怎样的
展开
-
12、说说synchronized关键字的底层原理是什么?(基础篇)
我这个synchronized是用来加锁的,我可以对一个对象去加锁,我也可以对一个类去加锁,锁之间会有互斥,有一个人加了锁,另外一个人就必需得在外面等着, 得让加了锁的把synchronized里面的代码都执行完,执行出去了之后,才会把锁释放,锁释放了之后,排在后面的线程才能够过来去获取锁,然后再执行synchronized里面的代码 synchronized 底层原理是什么? 首先 synchronized 加锁,他会执行一个 monitorenter 指令,释放锁的时候,会执行一个 moni.原创 2020-08-23 09:26:01 · 427 阅读 · 0 评论 -
10、说说HashMap是如何进行扩容的可以吗?
有两个hash值,他们俩可能高16位是一样的,低16位是不一样的,这个时候直接让他去与(n-1)去进行与运算,与出来高16位反正都是0,如果与出来低16位是一样的,那么他们hash冲突就会有问题,所以把这两个hash值高低16位,去异或一下,让他们两低16位不一样,这个时候他们与出来,位置就不一样了 ...原创 2020-08-22 01:29:19 · 1222 阅读 · 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 · 948 阅读 · 0 评论 -
08、JDK 1.8中对hash算法和寻址算法是如何优化的?
HashMap问题: hash算法和寻址算法是如何优化的? hash冲突怎么解决? 数组进行扩容的时候怎么扩的,扩容的时候还有一个rehash的过程原创 2020-08-20 22:28:49 · 361 阅读 · 0 评论 -
07、你知道HashMap底层的数据结构是什么吗?
HashMap<String, String> map = new HashMap<String, String>(); map.put(“张三”, “测试数据”); map.put(“李四”, “测试数据”); { “张三”: “测试数据”, “李四”: “测试数据” } 底层最核心的数据结构并不是你想的这样的 数组 对张三计算出来一个hash值,根据这个hash值对数组进行取模,就会定位到数组里的一个元素中去 ...原创 2020-08-20 15:56:41 · 377 阅读 · 0 评论