字節跳動面試官揪着源碼一直問,然後......

最近,我的一位朋友在找工作,已經拿到了美團、快手等公司的Offer,準備選擇其中一家入職了。
後來他又接到了字節跳動的電話,通知他去參加三面。從二面到三面之間隔了挺久的,他以爲都沒戲了,結果就收到了通知。
由於已經拿到了很多大廠的Offer,他對這次面試還是挺有信心的。但是回來之後,表現的特別沮喪。
字節跳動面試官揪着源碼一直問,然後......
一問之下,原來是面試官問的一些問題他回答的不好,他說面試官揪着源碼一直問,但是自己並沒有深入看太多的源碼,所以回答的不是太好。
他給我總結了一下面試官關於源碼部分的問題,主要題目如下:
1、你看過那些源碼嗎?
2、那你能講講 HashMap的實現原理嗎?
3、HashMap什麼時候會進行 rehash?
4、結合源碼說說 HashMap在高併發場景中爲什麼會出現死循環?
5、JDK1.8中對 HashMap做了哪些性能優化?
6、HashMap和 HashTable有何不同?
7、HashMap 和 ConcurrentHashMap 的區別?
8、 ConcurrentHashMap和LinkedHashMap有什麼區別?
9、爲什麼ConcurrentHashMap中的鏈表轉紅黑樹的閥值是8?
10、還看過其他的源碼嗎?Spring的源碼有了解嗎?
11、SpringBoot的源碼呢?知道starter是怎麼實現的嗎?
以上,就是我這位朋友被面試官血虐的過程。全程圍繞源碼展開。
那麼,爲什麼面試官這麼喜歡問源碼?作爲面試者你又爲什麼需要看源碼呢?
字節跳動面試官揪着源碼一直問,然後......

難道是爲了面試嗎?我覺得不是!我覺得看源碼有以下幾個好處:
1)可以從源碼中學習
比如我們看JDK的源碼,其中會有很多關於性能優化、防併發的例子,還有很多地方用了設計模式,這些都是很好的可以用來學習的代碼。
對於初學者來說,很多代碼格式、命名等都是需要學習的,最好的辦法就是通過開源代碼來學習。
2)深入源碼才能懂得原理
有的時候,我們使用的第三方的框架,中間件等,我們要想了解他們的原理,最有效的辦法就是直接看源碼。源碼是不會騙人的。
3)更好的解決問題
只要是人寫的代碼,就可能存在bug,別人的開源代碼也一樣,通過閱讀源代碼可以更好的定位和解決問題。
4)爲了找工作
爲什麼面試官喜歡問源碼,因爲這能提現一個面試者是否愛鑽研,是否願意深入原理。而企業需要的恰恰是這樣的人!
那麼如何學習源碼呢?有幾點建議:
1)先從全局出發
不要一上來就直接進入到細節,先通過文檔、代碼結構、架構分層等方面入手,大概瞭解一些各個模塊的代碼都是什麼功能。這樣在後續深入學習的時候可以剛加便於理解和查找響應代碼。
2)從問題出發
深入學習之前,最好帶着一個問題,比如學習HashMap的源碼時候,你帶着問題『什麼時候會進行rehash』,這樣你就可以圍繞自己的問題逐漸的深入展開。從點到面,逐步擴展。
3)面向debug學習
在源碼學習過程中,也可以通過調試的方式學習,這樣可以更好的查看代碼調用過程,執行情況,運行時變量等。更加方面理解。
4)做記錄
最後,要勤於記錄,把自己遇到的問題和思考記錄下來,方面後面再次複習和查看。
好了,希望大家都養成閱讀源碼的好習慣,也希望大家遇到所有源碼類面試題都可以輕鬆搞定。

最後,在這裏分享一些框架源碼學習路線,有了路線,也許可以在前期降低一點門檻。

字節跳動面試官揪着源碼一直問,然後......

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