一、印象中的頭條
二、面試背景
三、準備面試
四、頭條一面電話面(Java+項目)
五、頭條二面視頻面(大數據+項目)
六、頭條三面視頻面(算法+場景題)
七、如何通過頭條筆試?
八、如何準備頭條面試?
九、一個關于如何進大廠的小建議
一、印象中的頭條
1.老板張一鳴跟我是福建老鄉,龍巖市在我朋友說來就是山溝溝,能走出美團王興和頭條張一鳴讓我卯足了去龍巖吃特產老鼠干的欲望。
2.給的錢多,筆試也賊難。參加過頭條筆試的同學都知道,頭條筆試可以筆試三次,就是不論你有沒有參加都有三次機會。筆試就5道算法題,兩個小時,去年第一次看到算法題就自閉了,第一次掛了。第二次又很認真地做,做到一半放棄了。沒過幾天又邀請我做第三次,有一種強行被侮辱的感覺。
3.內推被拒。正如我標題所說,簡歷被拒。去年3月份在知乎上看到一個頭條大佬說可以內推春季實習,于是私信并發了簡歷給他。看了我簡歷之后說頭條競爭激烈,我背景不夠,點到為止。。(打擾了)
二、面試背景
自從去年被頭條筆試的算法凌辱和被頭條的前輩指教了之后對頭條沒啥好感了,也感覺進不去,所以后面大半年都沒關注頭條的招聘,直到以下兩件事情的發生。
1.有一天,之前一塊實習的哥們說進了頭條,我也蠢蠢欲動打算開始搞了。那時有一個不成熟的想法:「連他都可以進,我應該也可以吧」
2.正好在健身房認識了一個在抖音做數倉的小leader,我覺得這是天意啊。于是免費給他上了節私教課,上完讓他幫忙內推。
三、準備面試
其實從三月份投遞簡歷開始準備面試到四月份收offer,也不過1個月的時間,但這都是建立在我過去一年的積累啊,無數次的通宵自習室,圖書館的專屬椅子都被我坐的陷進去。避免誤導大家,這次也不做標題黨,寫了準備一年,踏踏實實干事。
都是比較不錯的書單
以下是我去年給自己訂的學習計劃:
一月:
大數據入門
整個一月份都在刷入門視頻和《Hadoop權威指南》,又臨近期末,每天5點半起床,看兩個小時的視頻然后上課或者復習期末考。
二月:
劍指offer刷一遍、數據結構、JavaSE、JVM、多線程
①劍指offer有些搞不懂的直接跳過,等下個月第二遍再刷;
②數據結構重點是各種樹、二叉樹、紅黑樹的一些特性以及鏈表的特性;
③JavaSE主要是類對象接口的區別,能不能繼承,Static的特點,各種Hashmap,ArrayList等集合框架的原理源碼;
④JVM是根據網上整合的高頻面試題進行學習的,刷了一遍面試題之后才去看周志華的《深入理解Java虛擬機》,JVM難的不是JVM布局,垃圾回收算法等這些理論,而是結合代碼和項目場景。比如說一段代碼,有很多個類、方法,其中又有靜態類和全局變量,這時候項目跑起來的時候哪些先加載,哪些變量存放在哪個區,不止要懂理論,還要結合代碼懂理論。還有就是項目中的OOM,棧溢出,JVM的參數調優等等。
⑤多線程也是刷網上面試題和博客的,幾本多線程的書都是一坨一坨的,理解不來。先動手把幾個多線程實現方法實現了一遍,然后分析優缺點,再由此切進去線程不安全和各種鎖。多線程學習不同JVM,自己多動手,多調試一下,控制臺都會告訴你答案。
三月:
劍指offer二刷,數據庫、操作系統、網絡、準備面試
①劍指offer第二遍重點刷第一遍時思路懂代碼不懂的。
②數據庫刷了牛客網SQL實戰100多題的,其他都是索引原理,悲觀樂觀鎖等理論。
③操作系統刷高頻面試題。死鎖的產生條件、解決方法等等,資源調度算法,并發和并行等。
④網絡也是刷面試題。三次握手四次揮手以及為什么要這樣做、TCP和UDP、網頁請求過程、DNS解析過程、網絡模型、響應碼的意思等。
⑤我每刷一道算法或者理解了一道面試題都會進行整理,所以到面試之前看看整理的文檔和博客就行,異常輕松。這個月也繼續投遞簡歷進行面試,從三月份開始都是邊投邊準備,不存在全部準備好再去投。
三月份收了京東、瓜子二手車等二線大廠的offer。
四月:
大數據項目、手寫劍指offer、繼續面試
①三月份被阿里菜鳥部門的三面面試官懟了一發,說簡歷沒有大數據項目面大數據崗,理論會再多有什么用,于是打算在四月份補一下項目。
②在補項目的同時,不忘算法,練習白板寫代碼。
四月份收了騰訊、去哪兒一些offer,騰訊和去哪兒終面都得現場面,所以一天飛北京,一天飛深圳。拿到騰訊offer的時候跟HR商量能不能去上海或者北京的base,HR說不行,于是就沒去了。選工作和生活城市有一個硬性標準:離家遠!那些在北方讀書的同學畢業之后一直要往家里跑,而我則是一直往外跳,或許是因為在廈門待了四年吧,家鄉也是「圍城」啊。
5-12月:
實習,看框架源碼,面試,整理面經
最后選擇了去Kyligence實習了,剛好趁這個機會學習了Kylin源碼,看了Hadoop和Spark的部分源碼。后面的面試也是為了倒逼自己學習,在面試中找不足,也順便整理了一些面試資料。
總結:
一定要列好自己的學習計劃,也要學會根據自己的學習情況調整計劃。項目是面試的敲門磚,也是面試的大頭,我是從大二出去實習的,所以在項目這邊可以花較少的時間,不用從零開始學。底層理論一定要會,不然大廠無望。算法一定要硬剛,總共就那幾種題型,我剛開始也很抵觸的,覺得太難了,后面迎難而上也就那么回事。第一遍不行就第二遍,不然就第三遍,直到現在劍指offer里面也有一些我不懂的題目,但我也不會去深究,大局為重,不摳細節。
別的同學放寒假的時候,自己一個人在學校旁邊租了個小房子學到過年前夕;為了鞏固實習的項目更好地面試,跑了幾次之前實習的公司請同事吃飯問項目細節;為了阿里面試用肝硬剛,連夜復習;簡歷投的太多,信息都被賣了,而且一聽到手機響就以為是面試電話;去騰訊終面,在深大的通宵自習室連夜復習。
以上是我過去一年的準備,說說我從投遞簡歷到收offer這一個月的準備。
1.復習算法。把以前刷過的算法題分類整理了一下,因為之前有整理過,所以復習起來沒用多少時間,還特意去理解了長長的KMP算法,LRU算法。
2.復習理論基礎。除了復習整理的面經和資料之外,還特意去了解了一下Golang,因為頭條用的go語言。
3.特意準備了幾個項目技術難點,能在面試的時候炫一下。
四、頭條一面(Java+項目)
1.
五、頭條二面(大數據+項目)
1.Kylin的項目架構
2.Paxos和ZAB協議
3.
頭條面試和其他大廠可能大同小異,但就是這個小異才是關鍵地方,能異于其他人的地方。可以從如下幾個方面去做準備:
1.特意準備幾個面試題源碼。像我在回答一些中規中矩面試題的時候,都會從源碼角度出發。比如常見的HashMap等集合類,多線程的各種鎖以及大數據框架的部分源碼。
2.特意準備項目難點。面一些大廠的時候避免不了被問到項目難點,不可能用普通Bug含糊過去啊。這邊可以從項目用到的技術棧出發,去尋找技術棧在項目中會存在的難點,然后套進自己的項目,找個自己能懂,最好能全懂的。
3.針對性去了解公司的技術棧使用情況。比如頭條使用Go,眾人皆知,那為什么我不突擊學習一下呢?比如從業內人士得知頭條最早使用的是Kylin框架,后面慢慢轉為ClickHouse,那我必須了解一下兩者的不同啊,而且可以結合頭條的業務場景。
九、一個關于如何進大廠的小建議
我一直崇尚「曲線救國」的做法,也一直在向別人傳播這種做法。現在能力背景不足沒關系,只要規劃好自己的學習路線,一步步階梯式往上爬,總可以實現目標。因為我自己二本出身,但我意識的早,大二就開始實習,用項目和實習經歷彌補我背景不足,然后一步步走到「offer自由」。很多時候并不是只有巨人才可以成功,你只需要做到行動上的普通人,就可以超過很多思想上的巨人,行動上的矮子。