隨手記錄看過的面試題

2021-09-11 21:55:28 字數 693 閱讀 7896

1.hashmap在什麼情況下會擴容,或者有哪些操作會導致擴容?

… 當hashmap中的元素越來越多的時候,hash衝突的機率也就越來越高,因為陣列的長度是固定的。所以為了提高查詢的效率,就要對hashmap的陣列進行擴容,陣列擴容這個操作也會出現在arraylist中,這是乙個常用的操作,而在hashmap陣列擴容之後,最消耗效能的點就出現了:原陣列中的資料必須重新計算其在新陣列中的位置,並放進去,這就是resize。

…那麼hashmap什麼時候進行擴容呢?當hashmap中的元素個數超過陣列大小loadfactor時,就會進行陣列擴容,loadfactor的預設值為0.75,這是乙個折中的取值。也就是說,預設情況下,陣列大小為16,那麼當hashmap中元素個數超過160.75=12的時候,就把陣列的大小擴充套件為 2*16=32,即擴大一倍,然後重新計算每個元素在陣列中的位置,擴容是需要進行陣列複製的,複製陣列是非常消耗效能的操作,所以如果我們已經預知hashmap中元素的個數,那麼預設元素的個數能夠有效的提高hashmap的效能。

2.hashmap檢測到hash衝突後,將元素插入在鍊錶的末尾還是開頭?

首先要明白什麼是hash衝突,不同的key有相同的hash值,這時就會出現hash衝突,發生衝突後,衝突的資料會存在這個entry對應的鍊錶上(即:hash衝突後,那麼hashmap的單個bucket裡儲存的不是乙個 entry,而是乙個 entry 鏈),衝突後會將元素插入在鍊錶的開頭

面試題記錄

面試題記錄 2012年6月13日杭州某網路技術公司 1,空指標自加 int p int pa null p pa p 求p的值 這道題考的貌似指標的加法,因為對於空指標比較敏感直接感覺有問題,所以填寫出錯.到底如何呢?直接反彙編之 int p int pa null 010d14f1 mov dwo...

面試題記錄

筆試面試題總結 1,var a 0 function a catch e 0 this.b bbb var aa new a settimeout function 0 settimeout的作用域是window,所以結果為1,2,bbb,b但是將 中的第二個settimeout去掉之後,結果為1,...

面試題記錄

1 linux實時檢視日誌 tail f catalina.out 2 linux檢視埠是否被占用 etstat tunlp grep 埠號,用於檢視指定埠號的程序情況 lsof i 80 3 linux查詢abc開頭的檔案的第一行輸出到指定檔案 system bin sh ls users zha...