考點介紹:
HashMap是大中小廠面試的高頻考點,主要從底層結構,和線程安全等角度來進行考察,考察點比較集中,但是有一定難度。
分為初級和高級兩種:初級一般集中在中小公司的map的key-value的可重復和可空問題;高級集中在1.7和1.8的變化,要理解變化的原因,以及并發安全性問題。
java語言考點之Map1.7和1.8 相關題目及解析內容可點擊文章末尾鏈接查看
?一、考點題目
1、HashMap的底層數據結構是什么?
解答:在JDK1.7 和JDK1.8 中有所差別:
在JDK1.7 中,由“數組+鏈表”組成,數組是 HashMap 的主體,鏈表則是主要為了解決哈希沖突而存在的。在JDK1.8 中......
2、為什么HashMap在解決 hash 沖突的時候,不直接用紅黑樹?而選擇先用鏈表,再轉紅黑樹?解答:因為紅黑樹需要進行左旋,右旋,變色這些操作來保持平衡,而單鏈表不需要。當元素小于 8 個的時候,此時做查詢操作,鏈表結構已經......
3、HashMap默認加載因子是多少?為什么是 0.75,不是 0.6 或者 0.8 ?
解答:Node[] table的初始化長度length(默認值是16),Load factor為負載因子(默認值是0.75),threshold是HashMap所能容納鍵值對的最大值。threshold = length * Load factor。也就是說......
4、說一下HashMap 的put方法流程?
解答:首先根據 key 的值計算 hash 值,找到該元素在數組中存儲的下標;如果數組是空的,則調用......
5、為什么HashMap是線程不安全的?
解答:JDK1.7 中,由于多線程對HashMap進行擴容,調用了HashMap#transfer(),具體原因:某個線程執行過程中,被掛起,其他線程已經完成......
6、說一下HashMap 1.7和1.8的區別
解答:1 結構區別:HashMap1.8的底層數據結構是數組+鏈表+紅黑樹。HashMap 1.7的底層數據結構是數組加鏈表。2 擴容的區別......
7、HashMap、HashTable的key和value是否可為null?
解答:HashMap對象的key、value值均可為null。HahTable對象的key、value值均不可為null。且兩者的的key值均不能......
二、考點文章
1、【校招VIP】java基礎 HashMap1.7與1.8
老生常談java常面 HashMap:首先都知道HashMap是線程不安全的那么聊一聊HashMap:默認初始化大小 16,負載因子 0.75 ,即當存放數據數量達到當前預計數量的 0.75時會發生擴容,擴容倍數 2 即發......
2、【校招VIP】JDK1.7和JDK1.8中HashMap為什么是線程不安全|
只要是對于集合有一定了解的一定都知道HashMap是線程不安全的,我們應該使用ConcurrentHashMap。但是為什么HashMap......
3、【校招VIP】HashMap、HashTable的key和value是否可為null
結論:HashMap對象的key、value值均可為null。HahTable對象的key、value值均不可為null。且兩者的的key值......
4、【校招VIP】關于HashMap擴容機制
HashMap的底層有數組 + 鏈表(紅黑樹)組成,數組的大小可以在構造方法時設置,默認大小為16,數組中每一個元素就是一......
5、【校招VIP】HashMap精選面試題
HashMap的底層數據結構是什么?在JDK1.7 和JDK1.8 中有所差別:在JDK1.7 中,由“數組+鏈表”組成,數組是 HashMap 的主體,鏈表則是主要為了解決哈希沖突而存在......
三、考點視頻
多線程執行下列代碼后的值
本題是一道筆試題,屬于偏復雜、對時間要求高的題型。主要是具化多線程,把臨界點和對應的多線程起始位置畫出來,需要細心和時間。建議筆試時,先把大題做完,再回來做這道題。這個題目也可以放到面試里,會引申出線程并發和安全的問題......
java語言考點之Map1.7和1.8 相關題目及解析內容可點擊下方鏈接查看:
java語言考點之Map1.7和1.8-移動端鏈接
java語言考點之Map1.7和1.8-PC端鏈接
?