最新面試題整理

過完年回來,估計一大票的人又急着要換工作了。整理一下面試中經常問到的問題,希望對看到該貼的人有點用處。


HashMap如何實現時間複雜度爲1的

HashMap的存儲結構式數組,這個數組的每個節點上存放的都是一個鏈表。HashMap通過hash函數,indexFor函數和key的hashcode計算出該key應該存放在數組的哪個小標,在把 key,value存入該下標的鏈表中。在遍歷時先通過計算下標找到鏈表(避免hash衝突),在順序遍歷鏈表。這樣在最好的情況下的時間複雜度是O(1),最壞的情況下的時間複雜度是O(n)。HashMap在每put一個keyvalue時,增加size,當size超過threshold時,resize數組,增加數組容量爲原來的兩倍。resize時會將已有的key value全部拿出來重新計算下標位置。

ConcurrentHashMap鎖是什麼原理來提高併發性能

採用分段鎖機制來實現。其內部使用段segment來標示hash表的不同部分,每個段其實就是一個小的hash表,它們有自己的鎖。只要多個修改操作發生在不同的段上,它們就可以併發進行。需順序釋放所有段的鎖。

ClassLoader的機制


排序算法的時間複雜度


AC算法的原理及時間複雜度


TreeMap HashMap LinkedHashMap區別

TreeMap採用紅黑排序二叉樹的數據結構,所有元素保持固定的順序。HashMap通過hashcode選取存儲位置,其元素的順序是不固定的。lindedHashMap特點是put進去的對象位置未發生變法,遍歷linkedHashMap時先得到的記錄肯定是先插入的。


對象重寫equal,爲何必需重寫hashcode,tostring

不一定要重寫,有自己的需要才重寫。
爲什麼重寫先弄明白它們的用途,equals是爲了比較是否相等。
比如你有兩個User,現在某個軟件的要求是隻要它們id屬性相同就是相等的,那就可以重寫eqauls,只對id進行對比。toString是爲了讓你更容易看懂一個對象,當對象在控制檯打印出來時你想看到一堆無意義的代碼嗎?那就是調用默認的toString的結果。你可以重寫自己想要的輸出,看到對象的每個屬性。
hashCode是hash集合中用來對比是否相等的根據,是一個根據對象內容算出來的數值,對比起來比equals快得多。更具體的解釋你自己
百度搜吧,很多東西要深入認識也不是幾句話就能說明白的。


Spring事務的實現及原理


Springmvc 和 struts的區別


servlet和jsp的區別


寫單元測試的注意事項


多線程sleep和wait有什麼區別 多線程實現方式 線程的內存管理


js閉包 css的影響域級別


如何實現深度拷貝


繼承有什麼場合使用,什麼場合不適用


hibernate的優缺點


算法題:一個數組裏面有n個數字,然後給你一個數值x,怎麼樣最快找到所有相加之和等於x的數組裏的數的組合,這個n可能很大


新浪微博如何實現高併發的粉絲關注數




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章