本文是 無精瘋 同窗投稿的面試經歷 關注微信公衆號:進擊的java程序員K,便可獲取最新BAT面試資料一份
在此感謝 無精瘋 同窗的分享
目錄:
印象中的頭條
面試背景
準備面試
頭條一面(Java+項目)
頭條二面(大數據+項目)
頭條三面(算法+場景題)
如何經過頭條筆試?
如何準備頭條面試?
一個關於如何進大廠的小建議
1、印象中的頭條
先說說我印象中的今日頭條:
1.老闆張一鳴跟我是福建老鄉,龍巖市在我朋友說來就是山溝溝,能走出美團王興和頭條張一鳴讓我卯足了去龍巖吃特產老鼠乾的慾望。java
給的錢多,筆試也賊難 。
參加過頭條筆試的同窗都知道,頭條筆試能夠筆試三次,就是不論你有沒有參加都有三次機會。
筆試就5道算法題,兩個小時,去年第一次看到算法題就自閉了,第一次掛了。第二次又很認真地作,作到一半放棄了。沒過幾天又邀請我作第三次,有一種強行被侮辱的感受。node
內推被拒 。
正如我標題所說,簡歷被拒。去年3月份在知乎上看到一個頭條大佬說能夠內推春季實習,因而私信併發了簡歷給他。看了我簡歷以後說頭條競爭激烈,我背景不夠,點到爲止。。(打擾了)程序員
2、面試背景
自從去年被頭條筆試的算法凌辱和被頭條的前輩指教了以後對頭條沒啥好感了,也感受進不去,因此後面大半年都沒關注頭條的招聘,直到如下兩件事情的發生。面試
1.有一天,以前一塊實習的哥們說進了頭條,我也蠢蠢欲動打算開始搞了。那時有一個不成熟的想法: 「連他均可以進,我應該也能夠吧」redis
2.正好在健身房認識了一個在抖音作數倉的小leader,我以爲這是天意啊。因而免費給他上了節私教課(ps:本人業餘愛好健身,很有心得),上完讓他幫忙內推。算法
3、準備面試
其實從三月份投遞簡歷開始準備面試到四月份收offer,也不過1個月的時間,但這都是創建在我過去一年的積累啊。無數次的通宵自習室,圖書館的專屬椅子都被我坐的陷進去。數據庫
同時本身爲了準備面試也整理了像BAT這種大廠的一些面試題,java核心知識點整理,在準備面試須要資料的朋友,能夠加JAVA架構技術交流羣:714827309點擊連接加入羣聊【JAVA高級架構技術交流】https://jq.qq.com/?_wv=1027&k...
下面是我在準備面試時候看的書單,對我拿到offer幫助很大數組
都是比較不錯的書單安全
如下是我去年給本身訂的學習計劃:
一月:
大數據入門。整個一月份都在刷入門視頻和《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這一個月的準備。
複習算法 。把之前刷過的算法題分類整理了一下,由於以前有整理過,因此複習起來沒用多少時間,還特地去理解了長長的KMP算法,LRU算法。
複習理論基礎 。除了複習整理的面經和資料以外,還特地去了解了一下Golang,由於頭條用的go語言。
特地準備了幾個項目技術難點 ,能在面試的時候炫一下。
4、頭條一面
(Java+項目)
頭條一面的面試題,主要focus在java和項目,下面我列舉了一些我還記得的,給你們看看:
講講倒排索引的原理? 講講redis裏面的哈希表?happen-before的規則?
volatile修飾符,synchronize鎖,聊一下你對它們的理解?
java單例模式的實現,懶漢、餓漢? 進程與線程的區別,多進程和多線程的區別?
HashMap原理,爲何用紅黑樹,紅黑樹的特色? 快排時間空間複雜度,最好最壞的狀況,優化方案?
TCP的擁塞控制,具體過程是怎麼樣的?UDP有擁塞控制嗎?如何解決?
講講了解的垃圾回收算法和回收器,何時執行STOP THE WORLD?
瞭解Go語言嗎?
5、頭條二面
(大數據+項目)
二面重點則轉移到了大數據,針對大數據相關的技術的各類問題,炮火依舊猛烈:
Kylin的項目架構?Paxos和ZAB協議, CAP理論,分區容錯性的意義?
HDFS的讀取、寫入,容錯處理(從源碼級別解釋),N amenode HA,腦裂,Yarn的調度機制。
大表Join小表優化,如何處理數據傾斜? 講一下最大堆和最小堆
MapReduce的過程(初版和第二版的)、MapReduce shuffle,Spark shuffle。
Hive的內部表和外部表區別、數倉建模模型、數倉分層、雪花模型和星型模型。 瞭解ClickHouse嗎?它與Kylin的區別?
6、頭條三面
(算法+場景題)
三面就來算法了,總得來講還好,沒有遇到變態級別難度的題目:
LRU算法實現(僞代碼) 鏈表倒數第K個數(講思路)
一堆螺絲和螺母用最短期匹配(代碼實現)
求天天瀏覽頁面的新用戶(Hive QL實現)
求抖音小視頻每日點擊量最高的10個(Hash + 最大堆)
7、如何經過頭條筆試?
此次的筆試裏總共有5道,我AC了2.5題,第一題90%,第二題90%,第三題70%,不算好,但勉強經過了。
去年的這個時候我但是連題目都看不懂的,看得懂的只知道用嘴怎麼說,不會用代碼實現。
經過這段時間的算法訓練,總結了以下幾點算法筆試經驗:
平時刷題必定要總結概括,最好分類 。
好比關於樹的題型,鏈表的,數組等等,觀察它們的解題思路,總結出解題套路。
積累工具類算法 。
什麼叫工具類算法?就是你解一道算法題須要用到另外一種算法,這個被調用的算法就是解決這道算法題的工具。
好比常見的「深度優先遍歷」、「廣度優先遍歷」、「01揹包」、「KMP算法」以及常見的選擇和排序算法都是常用的工具類算法。
學會抽象題目 。
筆試算法題不一樣於面試算法,不會直白跟你說要使用哪一種算法去解答,更多的要本身學會抽象。
你須要拋開題目自己,要明白內部講的是什麼,別被題目的糖衣炮彈迷惑了。只有把題目抽象成最原始的算法你才能更好地使用工具類算法進行解答。
8、如何準備頭條面試?
頭條面試和其餘大廠可能大同小異,但就是這個小異才是關鍵地方,能異於其餘人的地方。能夠從以下幾個方面去作準備:
特地準備幾個面試題源碼
像我在回答一些中規中矩面試題的時候,都會從源碼角度出發。好比常見的HashMap等集合類,多線程的各類鎖以及大數據框架的部分源碼。
特地準備項目難點
面一些大廠的時候避免不了被問到項目難點,不可能用普通Bug含糊過去啊。
這邊能夠從項目用到的技術棧出發,去尋找技術棧在項目中會存在的難點,而後套進本身的項目,找個本身能懂,最好能全懂的。
針對性去了解公司的技術棧使用狀況 。
好比頭條使用Go,衆人皆知,那爲何我不突擊學習一下呢?
好比我從業內人士得知頭條最先使用的是Kylin框架,後面慢慢轉爲ClickHouse。
那既然這樣, 我必須瞭解一下二者的不一樣啊,並且還能夠結合頭條的業務場景來進行了解。
9、一個關於如何進大廠的小建議
我一直崇尚「 曲線救國 」的作法,也一直在向別人傳播這種作法。
如今能力背景不足不要緊,只要規劃好本身的學習路線,一步步階梯式往上爬,總能夠實現目標。
由於我本身二本出身,但我意識的早,大二就開始實習,用項目和實習經歷彌補我背景不足,而後一步步走到「 offer自由 」。
不少時候,並非只有巨人才能夠成功,你只須要作到行動上的普通人,就能夠超過不少思想上的巨人,行動上的矮子。