程序員周末阿里面試,5分鐘就被一道題秒殺:HashMap與Hashtable

你們可能會想,我這么菜的嗎?5分鐘都堅持不了?

本文說起來會有點尷尬,畢竟這是我曾經經歷過的故事

那時候的我還真菜,每天寫著 if/ for 及一些簡單的業務邏輯代碼,雖工作有些日子了,但技術水平還停留在剛畢業的起步階段。

記得,那是一個周末,我去某知名互聯網公司面試,好像不到五分鐘,我就被面試官親切地趕出來了,當時我那個尷尬,內心深受打擊。

為什么會被趕出來?這道題我記得很清楚,我不確定是不是因為這道題,但卻是這道題結束了整個面試,大概的經過是這樣:

面試官:HashMap 和 Hashtable 的區別是什么?

月亮:……(這個我答上來了,我整理了下,大家可以參考這篇文章:HashMap 和 Hashtable 的 6 個區別。)

面試官:那既然 Hashtable是線程安全的,又性能不好,那你還知道別的替代品嗎?

月亮:……(沒答上來)面試官:好吧,那我們今天先聊到這里吧(起身送我走)……

月亮:好的,謝謝。(尷尬離場)

尷尬后的感悟

現在想起來都覺得尷尬。

現在競爭這么大,要求那么高,只會 Hashtable 的程序員真不能立足了,至少你得說得出 SynchronizedMap,雖然它的性能和 Hashtable 一樣差,使用了全局對象鎖來保證線程安全性,但至少你不只是會 Hashtable。

其實上面的問題,最佳答案是:ConcurrentHashMap,說完這個,有很大概率面試官又會連番問它的實現原理,以及它在 JDK 各個版本中的不同。

ConcurrentHashMap 是 JDK 1.5 添加的新集合,用來保證線程安全性,提升 Map 集合的并發效率。ConcurrentHashMap 使用了 Segment 的概念,默認有 16 個 Segment,Segment 里面依然還是數組 + 鏈表的數據結構,相當于給 HashMap 分桶處理了。因每次只會鎖住其中一個 Segment,所以性能非常好。

然而,有意思的是,隨著 JDK 1.8 中對 HashMap 的改進,同時又對 ConcurrentHashMap 進行了改進,拋棄了 Segment + 數組 + 單向鏈表 的設計,改為了和 HashMap 同樣的 數組 + 單向鏈表 + 紅黑樹 的數據結構。

同時,ConcurrentHashMap 使用了 CAS 算法 + Synchronized 來保證集合的線程安全性,ConcurrentHashMap 相當于一個性能安全的 HashMap。

ConcurrentHashMap 源碼相當復雜,后面我會出一篇專門分析 HashMap 和 ConcurrentHashMap 源碼和原理的文章,請大家關注我的簡書,不要錯過。

不過話又說回來,當初我面試 5 分鐘就被送出來了,其實很正常,誰叫我當時只會Hashtable 呢!就像我現在面試人一樣,如果中高級面試者只會 Hashtable 講不出其他更多的,我也一樣也會把他送出去,初級的還可以理解。

現在很多中高級程序員,雖然年限已經達到三年或者五年以上,但實際對多線程知識了解甚少,還停留在如何實現和使用多線程的水平。這種其實和初級程序員沒什么區別,競爭力明顯不足,所以怎么能要得到比初級程序員更高的價格呢?天天寫業務代碼,又如何成為大牛呢?

總結

所以,我給 Java 程序員的一些建議,特別是中高級程序員,一定要把 Java 核心技術學好,如多線程、集合的應用、數據結構、原理等,這是中高級面試必問的。

不要年紀上去了,對于底層知識卻不知道一二,不然隨著年紀的不斷增長,被淘汰的風險就越大,這樣對于一個靠編碼吃飯的程序來說,真的很可怕!

如果你被我說中了,或許考慮換一個環境?

最近我會陸續分享一些個人的職場經驗,踩坑經歷,以及成長感悟,希望能給一些職場新猿帶來幫助。

我總結出了互聯網公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構視頻資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術資料),希望能幫助到您面試前的復習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習,也可以關注我一下以后會有更多干貨分享。

領取面試資料方式:QQ群架構華山論劍:836442475【點擊進入領取】(大牛聚集地)一起交流學習探討!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容