集合面試題小集錦

2021-10-06 07:54:29 字數 724 閱讀 7139

雜湊表:結合了陣列和鍊錶的特性,定址容易,插入也容易。但是雜湊表由多種不同的實現方式。最常見的一種:拉鍊法–(鍊錶的陣列)

arraylist是通過陣列實現的,一旦我們例項化arraylist無參構造方法預設陣列初始化長度為10.

如果add方法底層實現如果增加的元素個數超過10個,那麼arraylist底層會新生成乙個陣列長度為原陣列的1.5倍+1,然後將原陣列的內容複製到新陣列當中,並且後續增加的元素會放到新陣列中,當陣列無法容納增加的元素時,重複該過程,只要陣列一旦超出長度就開始擴容,擴容呼叫的方法arrays.copyof(objarr,objarr.length+1);

linkedlist底層資料結構時基於雙向迴圈鍊錶的,且頭節點中不存放資料,既然是雙向鍊錶,那麼必定存在一種資料結構,我們稱之為節點,節點例項儲存業務資料,前乙個節點的位置資訊和後乙個節點的位置資訊。

hashmap是基於hashing原理,我們通過put和get來儲存和獲取物件。當我們將鍵值對傳遞給put()方法時,它呼叫hashcode()方法來計算hashcode值,然後找到bucket位置來儲存物件,當獲取物件時,通過鍵物件的equals()方法找到正確的鍵值對,然後返回值物件。hashmap使用鍊錶來解決碰撞問題,當發生碰撞了,物件將會儲存在鍊錶的下乙個節點。hashmap在每個鍊錶節點中儲存鍵值對物件。

這兩個類都實現了list介面她們都是有序集合,即儲存在這兩個集合中的元素,位置都是有序的,相當於一種動態的陣列,可以按索引號取出集合中的元素並且可重複。

面試題集錦

假定 54,首先,我們有乙個隨機函式發生器,能夠產生1 54之間的隨機數,如何保證抽第一張牌是54中可能,抽第二張牌是53中可能,可以這樣做,假設撲克牌是乙個54維的陣列card,我們要做的就是從這個陣列中隨機取乙個元素,然後在剩下的元素裡再隨機取乙個元素 這裡涉及到乙個問題,就是每次取完元素後,我...

面試題集錦

1 裝箱和拆箱的分別?答 裝箱就是把值型別轉換成引用型別 拆箱就是把引用型別轉換成值型別。2 怎樣建立乙個執行緒?答 一使用thread類 二使用delegate.begininvoke 三使用threadpool.queueworkitem。3 string是值型別,還是引用型別?與stringb...

前端面試題小集

一 乙個頁面上兩個div左右鋪滿整個瀏覽器,要保證左邊的div一直為100px,右邊的div跟隨瀏覽器大小變化 比如瀏覽器為500,右邊div為400,瀏覽器為900,右邊div為800 請寫出大概的css 1.使用flex html css box else result.push arr i v...