給處於迷茫瓶頸期的“碼農”分享的大廠面試經驗
一、前言
寫這篇有以下幾個原因:
- 對過去一年找工作的一個詳細總結
- 自己找工作也看了許多攻略,沒有一個特別有用,特別好的,所以就自己寫一個攻略,如果能幫助到別人,當然最好了。
- 好吧,總有讀者來問,額。就寫一份得了。
-
個人的一些想法,如有意見和錯誤,歡迎指出和討論。
二、內容提綱
- 個人經歷介紹以及一些找工作誤區
- 如何寫好簡歷,做到最完美的簡歷
- 如何準備知識,做好規劃
- 如何筆試
- 如何面試
- 公司介紹
本文注重方法,不會具體說具體的題目,因為每個面試官問的不會一樣,沒有太多的意義,而且方法掌握對了,知識都是通的,具體實踐自己怎麼操作都可以。
三、個人經歷
- 阿里螞蟻金服 :3月初第一個面的公司,3面過了。暑期實習3月
- 網易遊戲互娛 :3月面,1面,通過發了offer,沒去實習
- 百度 :9月校招,筆試+3面面試,最後拿到special offer
- 騰訊 :9月校招,筆試+2面面試+hr面,special offer
- 華為 :9月校招,3面+2面,special offer
- 今日頭條 :筆試+3面,拿到offer
- 微軟 :4月面,3面,通過,演算法偏弱,最後沒給offer
- 猿題庫 :9月,3面過,演算法偏弱,最後沒給offer
四、誤區
以為看越多面試題越好
許多同學看許多別人的面試題,看面試是什麼題目,然而真正面試發現並沒有什麼用,本人第一次面試前看過1,2篇面試題經驗,之後就再也沒看過。因為面試可以說是一種談判和博弈,每個面試官,問到的題目肯定不一樣,許多都是順著話題而展開,而且技術發展這麼快,去年的面經的題目可能就過時了,演算法題目除外。如果花過多時間和經歷去看面試題,那麼就跑偏了。
盲目的投各種公司
許多同學投各種公司,然後忙的焦頭爛額,發現最後收穫的很少,又很沮喪,很累。其實選公司也是有許多策略的,不易貪多,注重質量,而且第一次面試的公司一定要慎重選擇,如果第一次面試成功,那麼有保底的,又能增加信心,在以後的面時間過程中肯定也會越來越好。如果第一次面試失敗,那麼會很打擊,很沮喪,會懷疑自己,缺乏自信,那麼之後別的公司的面試也會越來越緊張,沒有自信。所以第一次面試的公司要選好,爭取一下成功。
各種跑招聘會
額,本人找工作沒有去一次招聘會,個人覺得沒有特別大的作用,如果想了解,想蒐集資訊,網路完全可以蒐集的很全面,而且跑很多招聘會,看那麼多的同學,人容易焦慮,缺乏精力,又疲憊,又累,所以直接網上投就好了。

五、準備和規劃
規劃:學習知識-> 簡歷->內推->筆試->面試 。
1. 怎麼學?
- 看書,看書,看書,記錄,記錄,記錄
- 總結和思考
- 鞏固和舉一反三
看書是最好的學習方式,書具有系統性,會涉及到各個細節,多看書能很好的打好基礎,增加廣度,其次是記錄,記錄重要的知識點,關鍵的知識點,容易忽視的知識點,重點理解和思考,增加深度。然後不斷鞏固,加深記憶。
2. 我在找工作之前看了這些書?
- Java 方向:
《Java程式設計思想》,《Java核心I/II》,《 Java虛擬機器》,《Java特種兵》,《Java 資料結構與演算法》,《Head First Java》,《Java特種兵》,《Effective In Java》,《Java併發程式設計藝術》,《Java面試指南》
- Android 方向:
《第一行程式碼》,《Android群英傳》,《Android權威指南》,《Android開發藝術》,《Android深入理解核心思想》,《Android系統原始碼分析》
這些書全部都買了,當然是二手的,一本一二十。
3. 這麼多書,怎麼看呢?
精讀一本,例如Java,看《Java程式設計思想》,認真看完,做好筆記記錄,自己不理解的,容易忘記的,覺得重要的記下來,當然是記關鍵詞,使自己之後能看到關鍵詞想到相關知識點,之後不斷鞏固。
然後你看別的書,就發現,都是熟悉的,因為許多都是重疊的,那麼就查缺補漏,做記錄,之後看的就非常快。
4. 獲取資訊
每天抽取一定的時間,獲取招聘資訊,然後根據時間記錄,其他時間打基礎。
六、做簡歷
1. 要認識清楚自己
- 簡歷不是說把自己所有的有的無的都放上去
- 簡歷針對不同公司,不同職位,要做相關更改,最好不要一份簡歷通用
- 把簡歷當作一個入口,和麵試官溝通的入口,每個點相當於開始,針對每個點,都做好接下來的對話。
2. 亮點和優勢?
好的簡歷無外乎以下幾點:
- 學校獎學金(XXX獎學金)代表你的學習基礎
- 技能,簡單列一下幾點比如 Java:熟悉 Java (多執行緒,IO, 虛擬機器)瞭解常用 jar 包原始碼,瞭解 Java 設計思想等
- 專案:xxx專案,自己做了哪些工作
- 競賽:xxx競賽xxx幾等獎
- 論文和專利:xxx論文
3. 簡歷格式
- 用表格來規範簡歷的格式
- 字型要清晰,統一,看起來舒服,如微軟雅黑
- 不要超過一面
- 清晰簡潔,每個模組加粗,下一橫線
- 中英文簡歷都要做,英文注意單詞用法
- 提交得提交pdf格式,內推是發現許多同學交到是word版本,word版本因為相容性問題,佈局會變的。
- 儘量填充一面,內容多的,縮小字型,縮小行距,內容少的,增大字型,增大行距,一頁滿,不留空白
4. 個人資訊
- 標題不要寫簡歷2個字,都知道寫簡歷沒必要多此一舉,直接寫自己名字
- 手機,郵箱,性別,出生年月,技術部落格,github。技術部落格和github很重要,是加分點,許多面試官會看,這個是最直接能瞭解一個人的技術基礎,如果沒有,那麼ok去準備,去總結,去寫,去填充這些。
5. 校園經歷
如果只是本科,直接寫到個人資訊裡面,如果碩士,可以寫兩行,也可以加上自己獲得的獎,xxx獎學金啥的,動態的調整內容
6.技能
切記不要寫精通
-
列清點: 如果直接寫熟悉java語言,那麼很寬泛,面試官可以在這麼大的範圍裡面隨便問,問到很偏的東西,就完蛋,比如java8新特性,java多執行緒,java泛型。 如果改為熟悉Java語言(基礎,容器,多執行緒,IO,面向物件)這樣就很好,相當於把一個很大的集合,縮小為可控的集合,那麼只要認真準備擅長的,重點的幾點,再兼顧其他的知識點就ok。其他也是一樣 熟悉機器學習(列自己擅長的演算法)熟悉資料結構(...)
-
這樣寫法一個可以豐富自己的簡歷,使每一行都佔滿,另一個縮小集合,限制在自己擅長,拿手的重要知識點上面,這樣自己準備起來有方向,當然其他的知識點也要準備。
-
Java 可以如下寫: 熟悉 Java 語言(...) 熟悉 Java 虛擬機器(...)瞭解 JDK 原始碼(arrayList,HashMap...) 熟悉Java併發(...) arrayList,HashMap的原始碼非常重要,必掌握知識點,而去寫到簡歷上,很大可能會被問,一旦問道,自己順手紙上寫出來,多麼完美。
-
資料結構(...)作業系統(...) 網路(...) 資料庫(...) 如果沒有精力準備,那麼不寫,問到能回答則回答,不回答,就說不會。
-
語言:CET-4:xx CET-6:xx 能熟練閱讀官方文件。
7. 專案
-
有專案最好,專案上標清和xxx公司,和xxx國外老師,和xxx創業團隊合作專案,這樣看上去就顯的專案重要,有底氣,比上面都沒有,讓人以為自己搗鼓的小專案好很多。
-
沒有專案,那麼自己要準備一個專案,途徑:教學視訊,帶你手打專案,語速2倍,瞭解專案整個邏輯,屬於拿來主義,站在巨人的肩膀上,加上自己的思考,改進,進行包裝,這樣也可以,但是自己要圓過去,重要的不是專案本身,是專案中,自己做了什麼,涉及到什麼知識點
-
專案寫清自己做的工作,關鍵知識點:xxxx
8. 自我評價
- 不要寫什麼踏實,努力,這些很虛的東西。
- 有愛好,特長可以寫 如xxx幾級, 志願者,社團工作,可以寫,xxx主席
- 有優勢的寫:如3年讀了100本專業書,寫了多少篇部落格
- 職業規劃:職業發展
9. 注意
-
簡歷是一個引子,上面的每一點,每一句話都是有用的,如果問到那麼必須自己能對話下去
-
為什麼技能,列點,這些就屬於自己丟擲去引導面試官問的,這樣就會化被動為主動
-
比如列了熟悉arrayList,HashMap原始碼,這樣就丟擲去這樣一個問題給面試官問,而且屬於資料結構知識,又有語言實習,極大可能面試官看到簡歷這點就會讓你寫,你在寫這點在簡歷上的時候,就肯定準備的很周全,那麼面試的時候,順利的寫下來,這樣就很好。技能,專案都是如此,丟擲去相關點,準備周全,等著來問。 自我評價也是,丟擲去讀了多少書,那麼問到你最印象深刻的書是什麼,準備好,順利答出,這樣就會掌握面試的節奏,化被動為主動
-
簡歷的每一點都要認真準備,寫的準備好,虛的,不會的那麼就不寫。因為自己真的遇到面試官,就拿著簡歷,對著上面一點一點的問,然後擴充套件。
七、筆試
一般最開始都可以走內推流程,不過現在大部分內推也是要筆試的了,筆試有以下型別:
-
線上程式設計:網易微軟的hihoCoder,沒有acm基礎的很難通過,這個時候就是發揮人脈的時候到了,當然自己要努力經常刷leetcode,等線上程式設計題目
-
選擇,程式設計,簡答之類的:涉及的知識面真的很廣,大家都懂得。不明說了
八、面試
第一家面試的公司最重要,慎重選擇自己把握大的,可以不上來直接BAT,可以面一些小公司,使自己適應,增加自己的信心,如果一上來BAT,那麼可能直接撞死,信心將受到強烈打擊。本人一上來就是B,幸好還是通過了。
把握時間節點,在自己把簡歷準備好,知識點準備好,怎麼拋,怎麼把我節奏準備好後,再投簡歷,切記沒準備好,盲目的投。
約好時間,許多面試可能在你做別的事情,比如搬磚,比如吃飯,比如睡午覺的時候打電話過來面試,這個時候正確的姿勢是:不好意思,然後約半小時後。然後在這半小時中:1.找一個安靜的空間,2.看筆記關鍵詞過一下知識點,清空大腦,平靜心情。 剛開始可以這樣,如果有把握,那麼隨時開始。本人剛開始幾次都是突然打電話,然後都是約了靠後的半小時到一小時,平靜好心情,清空好大腦。後面面試多了,就隨時可以開始面了。
面試有這幾個階段:自我介紹階段,基礎知識,擴充套件知識,專案,提問
1. 自我介紹階段
簡歷上有的就不需要說了,說以下幾點:
- 簡單介紹專案,重點突出一個,看面試官是不是感興趣,動態調整
- 已經有的職業技能規劃
- 未來的發展規劃
- 自己的看法,為什麼投這個公司,自己對這個公司的業務,和公司這個職位的工作情況,工作環境,使用的技術。
- 中間可以加入一些問句:比如說完自己的未來發展規劃,問公司的對信任的職業規劃什麼樣,或者問面試官個人,這樣使對話能繼續下去,有的說,有點聊,雙方都舒服。
2. 基礎知識
因為簡歷上已經丟擲引子了,自己也準備好了,那麼簡單的基礎知識很容易就能答上來,會的就說會,不會就說不會
3. 擴充套件知識
如設計題目,考思維,ok首先歸類到哪方面的問題,然後搜查知識點,看有沒有類似的知識點,涉及到。因為這樣的題目,大多都是從基礎知識擴展出來的,所以從對應的基礎知識搜查。
4. 應用知識
最新的技術,開源專案,xx語言新特性。這些需要自己平時積累的
5. 專案
知識點介紹專案,說清楚專案的應用場景
以上知識和專案這些完全沒有技巧可言,全部都是靠自己的功力,當然丟擲去的引子使知識點範圍可控了
6. 提問
- 問具體公司文化
- 問使用什麼開源技術
- 問個人發展規劃
- 問公司培養新人計劃
- 問面試官面試反饋: 最後問,如果前面談的好的話,這個時候就知道自己是不是面過了。
7. 優缺點
經常遇到,這是一個很難回答的題目,重點是,缺點不能是真正的缺點,如果說缺點是不喜歡加班,ok,完蛋。本人經歷後總結出以下幾點:
- 實踐能力不足,解決問題能力有待提高,隨著自己的實踐和努力,怎麼怎麼樣
- 職場專業性不足,學校學生的思維更多, 然後自己會盡快轉變從學校到職場多過度
- 心理抗壓能力不足。
- 任務時間規劃和細分。
8. 幾家大廠的面試流程
-
阿里:電面,內推沒有筆試,網站上有進度,面試完成後,面試狀態會變動如果掛的話,沒掛的話過幾天就下一面,最後有一個hr面,只要價值觀沒問題,基本沒事。然後優缺點問題回答好,參考上面。基礎知識,根據個人拋什麼樣的引子,java的話常規的題目如:抽象,多型,虛擬機器雙親模型,gc,記憶體結構,多執行緒,執行緒池,自動裝箱,io, 等。結合資料結構問的重點是容器,拋了引子,會寫原始碼,ok了。然後併發庫,equal方法原始碼等。之後排序,各種應用場景排序,大規模排序,分桶。偏專案,每一面都會問專案,二面,三面擴充套件知識比較多,涉及多執行緒比較多,虛擬機器比較多,或者原始碼。阿里的氛圍是狼性文化,適合張揚的性格,公司爭吵比較多,當然是對事不對人。彈性上班,下班部門不同,時間不一樣。基本9點後把。
-
百度:現場面,3面,在賓館,問的題目難度比阿里難,有演算法題,手寫程式碼,問題偏低層居多,本人android, 問了很多底層的原理,AIDL, Binder,AMS, 啟動流程, view繪製, 訊息佇列,Binder open(), map(), JNI,當然這些自己在簡歷上也拋了引子。 前兩面一天面,之後過的話會有3面會涉及一些hr面的問題, 很少, 專案比前二面問的多, 有設計題目。 3面後無hr面
-
騰訊:賓館,2面,hr面, 100000人裡選1000 貌似是這樣。 擴充套件連續深入問題居多, 比百度好一些,不是特別篇底層,有手寫演算法題目。騰訊文化柔和。
-
微軟:3面,手寫演算法題目, 看程式設計之美,程式設計師程式碼面試指南, 準備充分就OK了
-
猿題庫:3面,手寫演算法:2面遠端,線上程式設計,1面執行緒,連結串列,陣列居多,不涉及樹圖。
-
今日頭條:3面,2,3題演算法題,基礎知識, 隨著面試進度,越來越偏底層。
九、總結
-
充分的準備 資料結構, 線上程式設計刷題,看書基礎知識, 實踐專案, 兼顧計算機基礎知識,自己的知識積累最重要,其他面經,題庫,也只是景上添花。
-
心態調整好,第一公司選擇最重要,成功則一路信心倍增
-
每次面完做總結,思考,學習,提高
-
關注新技術,關注開源專案
-
多花功夫,只有比別人更努力才行
-
祝找工作的新的一年順利找到自己滿意的工作。
讀者福利
歡迎工作一到五年的Java工程師朋友們加入Java架構開發:863545238
點選連結加入群聊【Java架構攻城攻略】: https://jq.qq.com/?_wv=1027&k=5P0NYCP
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料) 合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

