大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 互聯網Java技術框架面試題

互聯網Java技術框架面試題

更新時間:2020-02-07 11:47:01 來源:動力節點 瀏覽2370次


  List和Set的區別


  List,Set都是繼承自Collection接口List特點:元素有放入順序,元素可重復,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set的Object必須定義equals()方法,另外list支持for循環,也就是通過下標來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標來取得想要的值。)Set和List對比Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。


  List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變


  HashSet是如何保證不重復的


  向HashSet中add()元素時,判斷元素是否存在的依據,不僅要比較hash值,同時還要結合equles方法比較。


  HashSet中的add()方法會使用HashMap的add()方法。以下是HashSet部分源碼:


互聯網Java技術框架面試題


  HashMap是線程安全的嗎,為什么不是線程安全的(最好畫圖說明多線程環境下不安全)?


  不是線程安全的;如果有兩個線程A和B,都進行插入數據,剛好這兩條不同的數據經過哈希計算后得到的哈希碼是一樣的,且該位置還沒有其他的數據。所以這兩個線程都會進入我在上面標記為1的代碼中。假設一種情況,線程A通過if判斷,該位置沒有哈希沖突,進入了if語句,還沒有進行數據插入,這時候CPU就把資源讓給了線程B,線程A停在了if語句里面,線程B判斷該位置沒有哈希沖突(線程A的數據還沒插入),也進入了if語句,線程B執行完后,輪到線程A執行,現在線程A直接在該位置插入而不用再判斷。這時候,你會發現線程A把線程B插入的數據給覆蓋了。發生了線程不安全情況。本來在HashMap中,發生哈希沖突是可以用鏈表法或者紅黑樹來解決的,但是在多線程中,可能就直接給覆蓋了。


  上面所說的是一個圖來解釋可能更加直觀。如下面所示,兩個線程在同一個位置添加數據,后面添加的數據就覆蓋住了前面添加的。


互聯網Java技術框架面試題


  如果上述插入是插入到鏈表上,如兩個線程都在遍歷到最后一個節點,都要在最后添加一個數據,那么后面添加數劇的線程就會把前面添加的數據給覆蓋住。


互聯網Java技術框架面試題


  則在擴容的時候也可能會導致數據不一致,因為擴容是從一個數組拷貝到另外一個數組。


  HashMap的擴容過程


  當向容器添加元素的時候,會判斷當前容器的元素個數,如果大于等于閾值(知道這個閾字怎么念嗎?不念fa值,念yu值四聲)---即當前數組的長度乘以加載因子的值的時候,就要自動擴容啦。


  擴容(resize)就是重新計算容量,向HashMap對象里不停的添加元素,而HashMap對象內部的數組無法裝載更多的元素時,對象就需要擴大數組的長度,以便能裝入更多的元素。當然Java里的數組是無法自動擴容的,方法是使用一個新的數組代替已有的容量小的數組,就像我們用一個小桶裝水,如果想裝更多的水,就得換大水桶。


互聯網Java技術框架面試題


  如果cap是2的n次方,則容量為cap,否則為大于cap的第一個2的n次方的數。


  HashMap1.7與1.8的區別,說明1.8做了哪些優化,如何優化的?


  HashMap結構圖

互聯網Java技術框架面試題


  在JDK1.7及之前的版本中,HashMap又叫散列鏈表:基于一個數組以及多個鏈表的實現,hash值沖突的時候,就將對應節點以鏈表的形式存儲。


  JDK1.8中,當同一個hash值(Table上元素)的鏈表節點數不小于8時,將不再以單鏈表的形式存儲了,會被調整成一顆紅黑樹。這就是JDK7與JDK8中HashMap實現的最大區別。


  其下基于JDK1.7.0_80與JDK1.8.0_66做的分析


      以上就是動力節點Java培訓機構小編介紹的“互聯網Java技術框架面試題”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


相關推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 中国大陆一级毛片 免费 | 久久精品视频9 | 逆天至尊免费看229集 | 精品动漫中文字幕一区二区三区 | 国产草草| 欧美国产激情二区三区 | 亚洲欧美综合久久 | 亚洲精品欧美精品中文字幕 | 成人精品免费视频 | 国产精品国产自线拍手机观看 | 国产第一页久久亚洲欧美国产 | 国产网红精品 | 毛片视频免费观看 | 国产乱码精品一区二区三区卡 | 日本中文字幕在线播放 | 国产二级毛片 | 国产成人毛片亚洲精品不卡 | 欧美成人免费mv在线播放 | 亚洲成人在线免费视频 | 在线看的成人性视频 | 四虎免费影院4hu永久免费 | 国内精品久久久久久影院网站小说 | 九九在线精品视频 | 在线观看国产精品日本不卡网 | 中文字幕在线免费看 | 国产亚洲精品一区二区久久 | 国产精品久久久久9999高清 | 亚洲综合亚洲综合网成人 | 日韩不卡在线观看 | 国产在线观看不卡 | 日本三级做a全过程在线观看 | 亚洲国产99999在线精品一区 | 亚洲精品中文字幕在线 | 国产日韩精品欧美在线ccc | 国产精品99一区二区三区 | 国产3级在线观看 | 欧美一级爱操视频 | 成 人 a v免费视频 | 久久国产免费观看 | 久久福利青草免费精品 | 九九九九九九精品免费 |