java工程師自我介紹 currenthashmap是線程安全的嗎,數(shù)據(jù)結(jié)構(gòu),底層怎么優(yōu)化的?
currenthashmap是線程安全的嗎,數(shù)據(jù)結(jié)構(gòu),底層怎么優(yōu)化的?Currenthashmap是線程安全的。當(dāng)多個(gè)線程同時(shí)更新一個(gè)數(shù)據(jù)時(shí),不會(huì)出現(xiàn)同時(shí)得到修改的情況。在java7和java8中,結(jié)
currenthashmap是線程安全的嗎,數(shù)據(jù)結(jié)構(gòu),底層怎么優(yōu)化的?
Currenthashmap是線程安全的。當(dāng)多個(gè)線程同時(shí)更新一個(gè)數(shù)據(jù)時(shí),不會(huì)出現(xiàn)同時(shí)得到修改的情況。在java7和java8中,結(jié)構(gòu)不一樣,java8做了很多優(yōu)化。
1. 并發(fā)HashMap是通過數(shù)組鏈表的段鎖來實(shí)現(xiàn)的。
2. 鎖定操作鎖定一個(gè)部分,而不是鎖定整個(gè)結(jié)構(gòu)。其它各段均能正常工作,保證了螺紋的安全性,提高了效率。
3. 但是,這個(gè)位置很麻煩。元素位置需要散列兩次,第一次是定位段,第二次是定位元素所在的鏈表頭。
1. java8采用數(shù)組鏈表紅黑樹設(shè)計(jì),CAS實(shí)現(xiàn)線程安全。
2. 最初在Java7中使用的段鎖定現(xiàn)在被調(diào)整為鎖定每個(gè)數(shù)組元素。
3. 與java8中的HashMap一樣,它采用了紅黑樹結(jié)構(gòu),因此查詢效率更快。當(dāng)鏈表節(jié)點(diǎn)數(shù)超過8個(gè)時(shí),鏈表將被轉(zhuǎn)換成紅黑樹存儲(chǔ),但哈希沖突加劇。
4. 查詢時(shí)間復(fù)雜度:從原始遍歷鏈表o(n)到遍歷紅黑樹o(logn)。
三月底離職,到目前面試了十幾家,為什么面試官總是喜歡問很底層的原理問題?這些問題?
你好,很高興回答您的問題
!作為一個(gè)在就業(yè)市場工作多年,參與過多次求職,完成過多次招聘和職位描述的人,我想談?wù)勎覍@個(gè)問題的看法。
公司招聘,其實(shí)是立足實(shí)際,作為面試官需要通過面試過程中的信息篩選來選擇最合適的人。如果是一些基本崗位,那么基層的經(jīng)驗(yàn)和原則是考察一個(gè)人崗位熟練程度的最佳方式。至于身高問題,更多的是測試求職者的附加值,即驚喜。這可作為參考條件。
面試官面試時(shí),他們會(huì)有自己的“例行公事”。作為一名候選人,我們要做的就是公開招聘。一個(gè)簡單的問題,同樣的答案,不同的人有不同的判斷,不要擔(dān)心面試官問什么,專注于你的回答
!當(dāng)我們進(jìn)行工作面試時(shí),我們的重點(diǎn)應(yīng)該是如何通過面試。至于對方問什么,如何判斷其實(shí)并不重要。
對于一些與基礎(chǔ)經(jīng)驗(yàn)相關(guān)的職位,提出現(xiàn)場原則性問題可以表明考生對現(xiàn)場問題的理解和掌握!下面的問題只反映了一個(gè)人的實(shí)際經(jīng)驗(yàn)。如果你曾經(jīng)當(dāng)場做過什么事,你可以當(dāng)場問一個(gè)小問題來看看。這些只是最好的工具來檢查“面吧”。
為什么面試要問hashmap的原理?
當(dāng)面試官詢問HashMap的原理時(shí),他們可能只是在調(diào)查你是否有專門學(xué)習(xí)的精神,因?yàn)镠ashMap是最常用的。如果你不知道HashMap的原理,面試官可能會(huì)定義你只能使用任何東西,但你不知道原理。現(xiàn)在有那么多人可以使用它,為什么選擇你呢?所以這個(gè)問題可能是篩選的一個(gè)條件。
當(dāng)然,要知道主要的原理,才能更好的使用和解決問題,這是最重要的。
CocurrentHashMap和Hashtable的區(qū)別,cocurrenthashmap?
哈希表被廣泛使用。HashMap是在新框架中用來替換hashtable的類。換句話說,建議使用HashMap而不是hashtable。
也許您認(rèn)為哈希表很容易使用,為什么不呢?下面簡要分析一下他們之間的差異。1hashtable的方法是同步的,HashMap是不同步的,所以hashtable的方法是同步的