位元組跳動面試官問我看過哪些原始碼,然後就沒有然後了

2021-09-24 18:26:08 字數 1931 閱讀 6679

最近,我的一位朋友在找工作,已經拿到了美團、快手等公司的offer,準備選擇其中一家入職了。

後來他又接到了位元組跳動的**,通知他去參加三面。從二面到三面之間隔了挺久的,他以為都沒戲了,結果就收到了通知。

由於已經拿到了很多大廠的offer,他對這次面試還是挺有信心的。但是回來之後,表現的特別沮喪。

一問之下,原來是面試官問的一些問題他回答的不好,他說面試官揪著原始碼一直問,但是自己並沒有深入看太多的原始碼,所以回答的不是太好。

他給我總結了一下面試官關於原始碼部分的問題,主要題目如下:

1、你看過那些原始碼嗎? 

2、那你能講講hashmap的實現原理嗎? 

3、hashmap什麼時候會進行rehash?

4、hashmap什麼時候會進行擴容? 

5、那hashmap的初始容量設定成多少比較合適呢? 

6、結合原始碼說說hashmap在高併發場景中為什麼會出現死迴圈? 

7、jdk1.8中對hashmap做了哪些效能優化? 

8、hashmap和hashtable有何不同? 

9、hashmap 和 concurrenthashmap 的區別? 

10、concurrenthashmap和linkedhashmap有什麼區別? 

11、為什麼concurrenthashmap中的鍊錶轉紅黑樹的閥值是8? 

12、什麼是concurrentskiplistmap?他和concurrenthashmap有什麼區別? 

13、還看過其他的原始碼嗎?spring的原始碼有了解嗎? 

14、springboot的原始碼呢?知道starter是怎麼實現的嗎?

以上,就是我這位朋友被面試官血虐的過程。全程圍繞原始碼展開。除了他以外,其實還有很多人在面試中也被深入的問過很多原始碼問題。

如下面這兩位:

那麼,為什麼面試官這麼喜歡問原始碼?作為面試者你又為什麼需要看原始碼呢?

難道是為了面試嗎?我覺得不是!我覺得看原始碼有以下幾個好處:

比如我們看jdk的原始碼,其中會有很多關於效能優化、防併發的例子,還有很多地方用了設計模式,這些都是很好的可以用來學習的**。

對於初學者來說,很多**格式、命名等都是需要學習的,最好的辦法就是通過開源**來學習。

只要是人寫的**,就可能存在bug,別人的開源**也一樣,通過閱讀源**可以更好的定位和解決問題。

為什麼面試官喜歡問原始碼,因為這能提現乙個面試者是否愛鑽研,是否願意深入原理。而企業需要的恰恰是這樣的人!

如何學習原始碼呢?有幾點建議:

1、先從全域性出發

不要一上來就直接進入到細節,先通過文件、**結構、架構分層等方面入手,大概了解一些各個模組的**都是什麼功能。這樣在後續深入學習的時候可以剛加便於理解和查詢響應**

2、從問題出發

深入學習之前,最好帶著乙個問題,比如學習hashmap的原始碼時候,你帶著問題『什麼時候會進行rehash』,這樣你就可以圍繞自己的問題逐漸的深入展開。從點到面,逐步擴充套件。

3、面向debug學習

在原始碼學習過程中,也可以通過除錯的方式學習,這樣可以更好的檢視**呼叫過程,執**況,執行時變數等。更加方面理解。

4、做記錄

最後,要勤於記錄,把自己遇到的問題和思考記錄下來,方面後面再次複習和檢視。

面試者如何回應面試官問的 你有哪些要問我的?

在面試快結束的時候你是否會經常被面試官問到 你還有什麼問題想要問我的嗎?你會不會很迷茫無措,不知道自己該問點什麼?如果你回到 我沒有問題了。這往往被一些面試官理解為 你對應聘公司 工作崗位沒有太大的興趣。可能會讓面試官產生誤解,從而影響面試評判。而自己呢,後面還會後悔自己當初沒有問到自己想要知道的內...

面試時要問面試官哪些問題

明天又要去參加一次面試。每次面試的時候,面試官都會在最後給面試者一些時間,來問問題。這是個非常好的機會,能按照自己的思路,來了解職位 技術 企業文化 福利待遇 企業狀況和前景等情況,以彌補前面面試過程中沒有了解到的情況。但較早以前面試準備不太充分,雖然也能地問上一些問題,但掛一漏萬,每次回來後,總覺...

位元組跳動面試官揪著原始碼一直問,然後

最近,我的一位朋友在找工作,已經拿到了美團 快手等公司的offer,準備選擇其中一家入職了。後來他又接到了位元組跳動的 通知他去參加三面。從二面到三面之間隔了挺久的,他以為都沒戲了,結果就收到了通知。由於已經拿到了很多大廠的offer,他對這次面試還是挺有信心的。但是回來之後,表現的特別沮喪。一問之...