一個應屆生拿字節跳動offer的努力,整整用了一年的時間


其實從三月份投遞簡歷開始准備面試到四月份收offer,也不過1個月的時間,但這都是建立在我過去一年的積累啊,無數次的通宵自習室,圖書館的專屬椅子都被我坐的陷進去。避免誤導大家,這次也不做標題黨,寫了准備一年,踏踏實實干事。

一個應屆生拿字節跳動offer的努力,整整用了一年的時間

 

以下

劍指offer刷一遍、數據結構、JavaSE、JVM、多線程

①劍指offer有些搞不懂的直接跳過,等下個月第二遍再刷;

②數據結構重點是各種樹、二叉樹、紅黑樹的一些特性以及鏈表的特性;

③JavaSE主要是類對象接口的區別,能不能繼承,Static的特點,各種Hashmap,ArrayList等集合框架的原理源碼;

④JVM是根據網上整合的高頻面試題進行學習的,刷了一遍面試題之后才去看周志華的《深入理解Java虛擬機》,JVM難的不是JVM布局,垃圾回收算法等這些理論,而是結合代碼和項目場景。比如說一段代碼,有很多個類、方法,其中又有靜態類和全局變量,這時候項目跑起來的時候哪些先加載,哪些變量存放在哪個區,不止要懂理論,還要結合代碼懂理論。還有就是項目中的OOM,棧溢出,JVM的參數調優等等。

⑤多線程也是刷網上面試題和博客的,幾本多線程的書都是一坨一坨的,理解不來。先動手把幾個多線程實現方法實現了一遍,然后分析優缺點,再由此切進去線程不安全和各種鎖。多線程學習不同JVM,自己多動手,多調試一下,控制台都會告訴你答案。

劍指offer二刷,數據庫、操作系統、網絡、准備面試:

①劍指offer第二遍重點刷第一遍時思路懂代碼不懂的。

②數據庫刷了牛客網SQL實戰100多題的,其他都是索引原理,悲觀樂觀鎖等理論。

③操作系統刷高頻面試題。死鎖的產生條件、解決方法等等,資源調度算法,並發和並行等。

④網絡也是刷面試題。三次握手四次揮手以及為什么要這樣做、TCP和UDP、網頁請求過程、DNS解析過程、網絡模型、響應碼的意思等。

⑤我每刷一道算法或者理解了一道面試題都會進行整理,所以到面試之前看看整理的文檔和博客就行,異常輕松。這個月也繼續投遞簡歷進行面試,從三月份開始都是邊投邊准備,不存在全部准備好再去投。

總結:

一定要列好自己的學習計划,也要學會根據自己的學習情況調整計划。項目是面試的敲門磚,也是面試的大頭,我是從大二出去實習的,所以在項目這邊可以花較少的時間,不用從零開始學。底層理論一定要會,不然大廠無望。算法一定要硬剛,總共就那幾種題型,我剛開始也很抵觸的,覺得太難了,后面迎難而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到現在劍指offer里面也有一些我不懂的題目,但我也不會去深究,大局為重,不摳細節。

以上是我過去一年的准備,說說我從投遞簡歷到收offer這一個月的准備。

1.復習算法。把以前刷過的算法題分類整理了一下,因為之前有整理過,所以復習起來沒用多少時間,還特意去理解了長長的KMP算法,LRU算法。

2.復習理論基礎。除了復習整理的面經和資料之外,還特意去了解了一下Golang,因為頭條用的go語言。

3.特意准備了幾個項目技術難點,能在面試的時候炫一下。

頭條一面(Java+項目)

1.倒排索引

2.講講redis里面的哈希表?

3.happen-before的規則?

4.volatile修飾符,synchronize鎖

5.java單例模式的實現,懶漢、餓漢?

6.進程與線程的區別,多進程和多線程的區別?

7.HashMap原理,為什么用紅黑樹,紅黑樹的特點?

8.快排時間空間復雜度,最好最壞的情況,優化方案?

9.TCP的擁塞控制,具體過程是怎么樣的?UDP有擁塞控制嗎?如何解決?

10.講講了解的垃圾回收算法和回收器,什么時候執行STOP THE WORLD?

11.了解Go語言嗎?

頭條二面(大數據+項目)

1.Kylin的項目架構

2.Paxos和ZAB協議

3.CAP理論,分區容錯性的意義

4.大表Join小表優化,如何處理數據傾斜?

5. 講一下最大堆和最小堆

6.HDFS的讀取、寫入,容錯處理。(源碼)

7.MapReduce的過程(第一版和第二版的)

8.MR shuffle,Spark shuffle。

9.namenode HA,腦裂,Yarn的調度機制。

10. Hive的內部表和外部表區別、數倉建模模型、數倉分層、雪花模型和星型模型。

11.了解ClickHouse嗎?它與Kylin的區別?

頭條三面(算法+場景題)

1.LRU算法實現(偽代碼)

2.鏈表倒數第K個數(講思路)

3.一堆螺絲和螺母用最短時間匹配(代碼實現)

4.求每天瀏覽頁面的新用戶(Hive QL實現)

5.求抖音小視頻每日點擊量最高的10個(Hash + 最大堆)


總結:

我一直崇尚「曲線救國」的做法,也一直在向別人傳播這種做法。現在能力背景不足沒關系,只要規划好自己的學習路線,一步步階梯式往上爬,總可以實現目標。因為我自己二本出身,但我意識的早,大二就開始實習,用項目和實習經歷彌補我背景不足,然后一步步走到「offer自由」。很多時候並不是只有巨人才可以成功,你只需要做到行動上的普通人,就可以超過很多思想上的巨人,行動上的矮子。

寫在最后

我把學習資料都整理在網盤了,獲取方式:點擊鏈接《Java面試BAT通關手冊》,覆蓋了Java核心技術、JVM、Java並發、SSM、微服務、數據庫、數據結構等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM