公衆號後臺常常有朋友留言,讓我分享一下進大廠的面試總結,今天就寫一篇文章結合本身的經歷談談。另外,上週發了一篇 」 StackOverflow 週報「 你們反饋的效果不錯,後續會繼續更新。此次週報都是 Java 語言,沒有看到的朋友能夠點擊去看看。回過來講進大廠面試,這件事我打算按照時間的維度拆解一下,分紅事前、事中和過後分別說說。html
1. 算法的準備。算法是最基礎的內容,也是進大廠的必備技能。一聽到算法可能有些朋友比較頭疼,我本身也是挺頭疼的。一方面咱們平時工做直接寫算法的時候並非不少,另外一方面學習算法要付出大量的時間,而且短時間內沒有明顯效果且枯燥。這方面準備我從大學就開始了,最開始看書,劉汝佳的《算法競賽入門經典》,而後天天都在 UVA Onlie Judge 上面刷一道題給本身定的最低標準是不管多忙,天天必須刷一道,保證量不能少。至於爲何量不能少,其實就是「破窗理論」,若是某一天你沒堅持,有其一就有其二,長此以往就堅持不下去了,這項計劃最後就廢棄了,還好本身最後堅持下來了。畢業後參加工做仍然刷題,刷 leetcode,由於工做後時間相對沒那麼可控了,不能保證一天刷一道。因此,對於如今想準備算法的朋友,若是有時間天天刷刷題仍是有必要的,若是沒時間或者就是爲了應付面試能夠買一些算法面試的課程,有針對性的突擊效果會更好。從個人面試經從來看社招大部分崗位算法不會像校招那麼難,掌握基本的算法,會算時間、空間複雜度,多反覆練習,這一關沒有想象的那麼難。程序員
2. 工做內容。算法考察的是程序員的基礎能力,而工做內容就是考察實踐能力以及解決問題的能力。這塊總結有兩點,第一,須要對本身用的技術、框架的核心原理和運行機制要很是熟,若是有精力能看一些核心源碼絕對是加分項。第二,要總結平時遇到的每一個問題,好比:內存溢出、系統不穩定、吞吐量低以及高時延等問題,除了要記錄如何解決的,還要尋根溯源瞭解問題的底層原理,而且要上網多看別人是否遇到一樣的問題以及是如何解決的。對於這兩點我平時都有注意積累,但惟一的遺憾是沒有及時的整理、輸出。有些問題當時解決了,也瞭解背後的原理了,可是不及時記錄致使時間長了之後基本上都忘了。因此這裏強烈建議各位朋友必定養成善於總結、記錄的習慣,一方面總結的過程自己就是提高的過程,另外一方面防止之後忘記。面試
3. 新技術。對於一些平時工做中沒有用到的新技術也要有必定的瞭解。若是面試官提幾個新名詞,你都是「不瞭解」、「不清楚」之類的回答,那給人的感受就是你並非一個對技術比較熱愛的人。對於工做 1-3 年的朋友,新技術雖然不須要熟悉底層原理,但起碼知道技術的做用以及適用場景。而對於 3-5 年的朋友,最好可以瞭解新技術背後的架構設計是怎麼樣的,以及相對於現有技術的改進是什麼。這一點其實我本身的作的是不夠的,還須要繼續努力。算法
每一個公司面試流程不太同樣,通常來講,一面先自我介紹,而後再考察基礎的算法、編碼能力和技術或者框架的原理。二面考察實際的解決的問題能力,以及系統設計的能力。三面不太考察具體的技術,而是考察總體的素質,好比你對項目的總體掌握程度,對本身的角色和定位是否定識清晰,以及如何跟其餘業務團隊聯動。HR面基本上就是最後一面了,固然這一面也很關鍵。下面分解說說每一個過程當中如何面對。架構
一面過程當中通常會給一個算法題目要求手寫代碼。首先先梳理思路,若是沒有思路不必上來就寫代碼。若是這個算法題想了一段時間仍然沒有思路,這時候可讓面試官給你一些提示。這個階段除了算法的正確性還要注意代碼的書寫規範,以及異常處理,這些都是體現程序員基本素質的地方。能夠考慮先寫僞代碼,把算法思路理順了、變量定義清楚、把異常狀況考慮全了,最後把最終代碼規整地寫下來,這樣會給面試官一個比較好的感受。畢竟面試官之後可能要跟你一塊兒寫代碼,若是看到代碼寫的亂七八糟,變量名沒有任何可讀性,也不考慮異常狀況,那他可能不太敢讓你經過面試。對於技術或者框架的原理的考察沒有什麼技巧,就在於本身實際的掌握狀況和積累,平時能夠多總結,輸出,面試的時候直接拿來複習效果更好。框架
二面時面試官會讓你介紹平時工做中遇到的哪些問題以及怎麼解決或者優化的。做爲求職者應該先簡單介紹一些業務背景,以及遇到的問題,而後再說說本身的優化方案,最終落腳點是對業務的提高是怎麼樣的以及技術上有什麼樣的成長和積累。由於優化每每是要結合業務的,而面試官不太瞭解你的業務場景,因此回答問題以前先言簡意賅地介紹一下業務場景,既能夠給面試官一個比較好的體感,又顯得本身的回答邏輯清晰,更有條理性。這個環節若是網上有些優化場景與你的業務相似也能夠說說,這其實也是本身學習能力的一個體現。在你的介紹過程當中面試官確定會打斷你問你一些問題,對於不一樣經驗的求職者,面試官考察的重點也不太同樣。我本身的理解是這樣的,對於1-3年經驗的人重點考察原理是什麼,怎麼優化的;對於 3-5 年經驗的重點考察原理爲何是這樣,而不是那樣。若是面試提問了一個本身不會的問題,不要說 」我不知道「,應該說」這個問題以前沒關注過,我先思考一下「。給本身一點時間思考一下,你能夠假設本身在作設計時若是遇到這樣的問題你可能會怎麼作,即使不會也能夠談談本身的想法和理解。若是真的沒有任何思路,就誠實的說「我不知道」就行了,但這個「我不知道」跟以前的不同,這個是通過本身思考以後的結果。記得我去某團面試遇到過一個問題 「運行 Spark 任務,會指定 CPU core 個數,你怎麼知道系統必定會給這個任務這麼多的 CPU core」,我想了下確實不知道,而後面試官一笑,說 「我也不知道」,固然這並無影響我拿 offer。二面可能會有系統設計問題,由於談本身的業務每每是本身熟悉的,這時候面試官會給你一個他們的業務場景,問你如何設計,可能存在的問題以及優化。這個時候就要先深刻思考一下,而後跟面試溝通需求和問題,不斷地完善設計。這個過程重點突出本身的思考以及和麪試官的溝通。學習
三面要注重你對本身項目總體的把握,清晰的知道本身的角色和定位,以及與其餘業務團隊的職責邊界。切忌不要對現團隊有負面的評價。以前面某東面試官就提過這樣一個問題,「你對如今團隊最不滿意的地方是什麼」,相似的問題要考慮清楚再回答。即使現團隊確實很差也要客觀評價,不要摻雜過多的我的情感。優化
HR面要好好重視,他們每每有一票否決權。HR 可能不太瞭解技術,因此對於技術和業務的介紹必定要熟練、自信,不要讓人家以爲你不專業。其次,要凸顯你的工做經驗以及在團隊中的溝通、協做能力。最後談薪資是你們比較關心的,可是對於這塊我沒好建議,個人經驗是能夠多面幾家,對於想去的公司指望薪資能夠保守一些,對於不想去的能夠報的高一些,面幾家你對本身的薪資水位就有個大概的估計了。這個階段面試的心態總結倆字:自信。編碼
其實一次面試的經驗總結很是寶貴,經過一次面試你就知道本身哪些方面表現的很差,哪些方面表現的讓面試官滿意。對於表現很差的地方要查漏補缺,避免二次跌倒。對於表現好的地方更好進行總結,由於這會是你下一場面試打動面試官的亮點。能夠把本身要表達的東西畫個思惟導圖,而後不斷在腦海重複它,不斷地強化。多面試幾輪你會發現你的表達愈來愈流利,愈來愈自信。架構設計
上面都是我本身經歷總結的,我本身也是這樣作的,這份總結更適合工做 5 年內的朋友。固然這可能不是什麼萬能鑰匙,畢竟我本身也有面試失敗的時候,但參考一下對你絕對是有幫助的。目前經濟環境很差,建議各位換工做也要謹慎一些,很差輕易裸辭。但願正在面試的朋友都能順利。
歡迎關注公衆號「渡碼」,分享更多高質量內容