华南俳烁实业有限公司

java

當前位置:中華考試網(wǎng) >> java >> java面試題 >> 文章內(nèi)容

java面試題及答案:第五部分

來源:中華考試網(wǎng)  [2020年9月24日]  【

  ConncurrentHashMap和hashtable比較(兩個線程并發(fā)訪問map中同一條鏈,一個線程在尾部刪除,一個線程在前面遍歷查找,問為什么前面的線程還能正確的查找到后面被另一個線程刪除的節(jié)點)

  ConcurrentHashMap融合了hashtable和hashmap二者的優(yōu)勢。hashtable是做了同步的,即線程安全,hashmap未考慮同步。所以hashmap在單線程情況下效率較高。hashtable在的多線程情況下,同步操作能保證程序執(zhí)行的正確性。但是hashtable是阻塞的,每次同步執(zhí)行的時候都要鎖住整個結(jié)構(gòu),ConcurrentHashMap正是為了解決這個問題而誕生的,

  ConcurrentHashMap允許多個修改操作并發(fā)進行,其關(guān)鍵在于使用了鎖分離技術(shù)(一個Array保存多個Object,使用這些對象的鎖作為分離鎖,get/put時隨機使用任意一個)。它使用了多個鎖來控制對hash表的不同部分進行的修改。在JDK 1.6中,有HashEntry結(jié)構(gòu)存在,每次插入將新添加節(jié)點作為鏈的頭節(jié)點(同HashMap實現(xiàn)),而且每次刪除一個節(jié)點時,會將刪除節(jié)點之前的所有節(jié)點拷貝一份組成一個新的鏈,而將當前節(jié)點的上一個節(jié)點的next指向當前節(jié)點的下一個節(jié)點,從而在刪除以后有兩條鏈存 在,因而可以保證即使在同一條鏈中,有一個線程在刪除,而另一個線程在遍歷,它們都能工作良好,因為遍歷的線程能繼續(xù)使用原有的鏈。

  java8中,采用volatile HashEntry保存數(shù)據(jù),table元素作為鎖;從table數(shù)組+單向鏈表加上了紅黑樹。紅黑樹是一種特別的二叉查找樹,特性為:1.節(jié)點為紅或者黑 2.根節(jié)點為黑 3.葉節(jié)點為黑 4.一節(jié)點為紅,則葉節(jié)點為黑 5.一節(jié)點到其子孫節(jié)點所有路徑上的黑節(jié)點數(shù)目相同。

  ArrayList與 LinkedList 的區(qū)別?

  最明顯的區(qū)別是

  ArrrayList 底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機訪問,而 LinkedList 的底層數(shù)據(jù)結(jié)構(gòu)書鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復(fù)雜度是 O(1),而 LinkedList 是 O(n)。LinkedList是雙向鏈表

  java 中,Comparator 與Comparable 有什么不同?

  Comparable 接口用于定義對象的自然順序,是排序接口,而 comparator 通常用于定義用戶定制的順序,是比較接口。我們?nèi)绻枰刂颇硞類的次序,而該類本身不支持排序(即沒有實現(xiàn)Comparable接口),那么我們就可以建立一個“該類的比較器”來進行排序。Comparable 總是只有一個,但是可以有多個 comparator 來定義對象的順序。

  填寫下面表單即可預(yù)約申請免費試聽!害怕學(xué)不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!

預(yù)約申請免費聽課

  • 地區(qū):
  • 姓名:
  • 手機:
責(zé)編:yangliu1997
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
永城市| 安龙县| 蒲城县| 南皮县| 浮梁县| 体育| 天峻县| 策勒县| 冷水江市| 锦州市| 北海市| 陈巴尔虎旗| 吕梁市| 中宁县| 海伦市| 揭阳市| 沙坪坝区| 布尔津县| 自治县| 松潘县| 德阳市| 玉门市| 古浪县| 锡林浩特市| 谢通门县| 彭阳县| 通渭县| 景泰县| 鄯善县| 林芝县| 大邑县| 即墨市| 乌鲁木齐市| 阆中市| 苏尼特左旗| 读书| 嘉荫县| 河北省| 建瓯市| 平乐县| 青神县|