java集合中的常見考點
1.講一下集合中的 fail-fast 機制 ?
解釋: 主要就是在iterater集合迭代的過程中發生集合的結構遭到破壞的情況下,系統丟擲異常的過程
參考連結:https://blog.csdn.net/zymx14/article/details/78394464
fail-fast的簡介:
fail-fast 機制,即快速失敗機制,是java集合(Collection)中的一種錯誤檢測機制。當在迭代集合的過程中該集合在結構上發生改變的時候,就有可能會發生fail-fast,即丟擲ConcurrentModificationException異常。 fail-fast機制並不保證在不同步的修改下一定會丟擲異常,它只是盡最大努力去丟擲,所以這種機制一般僅用於檢測bug。
2. java集合類
3.hashMap底層原理
解釋: 要知道entry裡面有4個屬性,key,value,hashcode,next(指向下一個entry的指標)
hashMap是2的整數次冪的原因可以參考下述連結來看:
https://blog.csdn.net/qq_40241957/article/details/84995597
問題一:hashMap為什麼會在併發訪問的時候形成閉環,從而get()操作的時候形成死環?
解釋:主要是在hashMap擴容的那個時候,這個時候多個執行緒同時執行rehash操作,那麼就有可能發生閉環,見下面參考連結
參考連結:https://blog.csdn.net/hll174/article/details/50915346
閉環以後形成死環的原因: get()操作本來就是在找到一個table[i]之後,也就是我們說的“桶”,然後逐個遍歷這個“桶”下的所有entry的過程,這個時候如果出現閉環,那麼get()操作一直耗在這個閉環裡面,肯定就是死迴圈了
hashmap1.7和1.8的區別?
解釋: 其實就是說1.8的時候,當一個“桶”中的元素個數超過8的時候,那個“桶”的結構變成“紅黑樹”
4.ConcurrentHashMap
ConcurrentHashMap與HashMap相比,最關鍵的是要理解一個概念:segment。 Segment其實就是一個Hashmap 。Segment也包含一個HashEntry陣列,陣列中的每一個HashEntry既是一個鍵值對,也是一個連結串列的頭節點。 Segment物件在ConcurrentHashMap集合中有2的N次方個(解釋: 之所以是2的n次方個的原因是為了方便“與運算”,我們記得位運算的效率要高於取模運算的效率(這也是計算機是二進位制的原因),所以是2的n次方,還可以參考hashmap為什麼擴容是2的n次方,參考連結:https://blog.csdn.net/qq_40241957/article/details/84995597
),共同儲存在一個名為segments的陣列當中。
小疑問: 為什麼一定要按順序鎖定所有段,才不會發生死鎖?如果不按順序鎖定所有段,就會發生死鎖???
答:
5.HashTable底層原理
6.HashSet
(解釋: HashSet底層是基於HashMap實現的)
相關文章
- Java常見知識點彙總(⑦)——集合框架Java框架
- Java之常見異常 整理集合Java
- Java集合類常見面試知識點總結Java面試
- JAVA集合:常見Set原始碼學習Java原始碼
- 【Java】【集合】collection介面常見方法、集合轉陣列toArray()、帶ALL的方法Java陣列
- 大前端常見面試題:HTML常考知識點前端面試題HTML
- 集合常見的面試題面試題
- APP功能測試中經常遇見,需要考慮到的測試點APP
- Java 集合常見知識點&面試題總結(上),2022 最新版!Java面試題
- 關於集合中一些常考的知識點總結
- 常見的參考訊號
- C++連結串列常見面試考點C++面試
- Java常見知識點彙總(⑩)——常見設計模式Java設計模式
- Java常見知識點彙總(⑨)——異常Java
- java中list的常見問題。Java
- PMP 考試常見工具與技術點總結
- Java常見知識點彙總(⑳)——鎖Java
- Java常見知識點彙總(②)——StaticJava
- JavaScript常見演算法集合JavaScript演算法
- 面試考點系列【集合】(一)面試
- 常見的集合容器應當避免的坑
- Redis常考的知識點Redis
- Java常見知識點彙總(⑲)——Java中的強引用、弱引用、軟引用、虛引用Java
- Java 中12個常見的語法糖Java
- 超詳細的Java面試題總結(三)之Java集合篇常見問題Java面試題
- Java常見知識點彙總(⑪)——泛型Java泛型
- 常見Java面試知識點總結Java面試
- Java常見知識點彙總(⑫)——==和equals的區別Java
- js日常參考(常見事項)JS
- java中的Map集合Java
- Java常見知識點彙總(⑬)——執行緒Java執行緒
- Java常見知識點彙總(⑮)——Jvm架構JavaJVM架構
- Java常見知識點彙總(⑧)——分派機制Java
- 常見的功能測試點!
- MySQL常見6個考題在實際工作中的運用MySql
- Java常見的面試題Java面試題
- 說說你對集合的理解?常見的操作有哪些?
- Java常見知識點彙總(①)——資料型別Java資料型別