又到了一年一度的春招季。最近小夥伴們經常詢問的問題就是:「我好想去谷歌/亞麻/微軟/蘋果公司工作,但是一直過不了技術面試!真的好難啊!」
其實想要通過FLAG級別的公司面試,最需要的就是軟硬實力兼具!尤其是像谷歌/亞麻這樣的公司,對技術方面的要求極高。
在谷歌面試的6個環節中,技術面試一直是權重最大的,以其難度、出題靈活性,以及多變的現場互動聞名。今天我們就以谷歌技術面試為例,分別從硬實力和軟實力兩個維度去刨析拿下技術面試的關鍵點。
所謂硬實力,就是候選人所應具備的技術能力。尤其是對於軟體工程師這樣的崗位,技術就是根本,可以從寫碼、系統設計、網絡、Debug、數據結構、算法等角度來準備。
首先作為一名SDE,要有一門自己絕對擅長的語言,並能在既定的時間內,用代碼來解決現實社會中的問題,並具備高效性(效率最大化)、易讀性(代碼不複雜)、和可維護性(能夠長期使用)。
當具備這樣的能力之後進行面試,面試官還會就候選人的理解和邏輯能力進行進一步的考察。
System/OOD Design(系統/面向對象設計)
面向對象設計和系統設計可以說是技術面試中很多同學最擔心的部分了。尤其是像亞麻這樣的公司,即使是new grad,對於系統/OOD題目也幾乎是必考。
通常情況下,面試官會考察候選人能否將一個模糊的需求細化、抽象成計算機能夠模擬和解決的問題,是否了解要設計一個大型系統,應該考慮哪些方面。
「Design a system for a parking lot where drivers can also have memberships (but also support guest drivers). The parking lot has counter screens on each row.」
如何為停車場設計一個系統,讓司機可以作為會員停車,同時也支持非會員停車,並可以讓停車場的每一排都有一個自助櫃檯?
像這樣的問題就對面試者計算機知識儲備,和在複雜情況下的全局設計能力有很高要求。
面向對象、資料庫、分布式系統、web technology、多線程知識缺一不可,也是需要同學們日積月累才能形成的知識結構。
如果你的求職方向是網絡工程師,那這一部分的技術需要你對 Web Application 的常見網絡架構有一定理解,經典的題目有:
「從瀏覽器輸入一個 URL 到頁面渲染完成,需要經過哪些步驟?」、「DNS 的基本原理是什麼?」等等。
不過具體如何準備還是要看崗位要求,把job description上的所有需求都掌握,才能更好拿捏面試官想要考察的知識。
Troubleshooting考查的是現實工作場景中如何 debug 的能力,也是作為軟體工程師必備的能力。
一套標準的Troubleshooting工作需要遵照以下順序:
a). Examine: 識別、跟蹤、確認故障
b). Diagnose: 推算潛在風險、驗證推斷、反覆驗算
c). Test or treat: 評估風險等級後安排Debug優先級、在Emergency情形下需要將「止損」作為首要目標
對於測試部分的要求大多為單元測試,要求面試者能夠自己寫test來驗證代碼的正確性。
Data structure & Algorithms(數據結構&算法)
這一部分的考察也是在面試中非常常見的部分。面試者要能夠深度理解各種數據結構和算法,對應選擇高效的解決方案,並能夠向面試官闡明原因。
算法部分的考察會包括但不限於以下知識點:
動態規劃Dynamic Programming、遞歸recursion、圖搜索算法Graph Search 、分治Divide Conquer 、二分查找Binary Search等。
二叉樹Binary Tree、棧Stack、隊列Queue、哈希表Hash Table、鍊表Linked List等。
能夠從實操層面上真正理解好以上知識點,才是面試通過的關鍵。
軟實力是候選人技術水平以外的綜合能力,代表了工程師溝通、表達,和團隊協作的能力。在大廠面試中,軟實力起到的作用不亞於技術能力。同學們可以從溝通技巧、提問話術、開放式思維、提出假設和解決問題的能力來入手提高。
或許很多人已經覺得老生常談,溝通能力有什麼難的?在面試裡又如何體現呢?
其實,很多細節都可以暴露出候選者的溝通能力,比如在解題前,面試者是否有跟面試官溝通明確題目要求,有沒有分析各種可能的情形?
而在得到面試問題後的3-5分鐘,面試者又是否主動闡述自己想法,與面試官確認好題目的scope和corner cases了呢?這些都是面試官考察面試則溝通能力的細節。
我們這裡為大家列舉了一些常見的提問,比如:
這個題的數據規模有多大?會超出正常內存容量上限嗎?
這個題的輸入保證是valid data嗎?
網絡斷開的情況要考慮嗎?
這個 corner case有一定歧義,怎樣輸出比較合理?
在谷歌的技術面試裡,很多面試題是「故意」設計成開放式問題的。面對這種問題時,應該多向面試官提問,獲得一些關鍵的hints,來解鎖一些隱藏解題路線。
面試官考察的是你能否從一個基本的解開始,不斷進行優化,直到達到最優解。
面試過程中,解題思路比結果重要。
比如,Think out loud就是面試官最看重的品質之一,指的是在解題過程中,要將你的解題思路清晰地呈現給面試官。
為了達到這一點,在面試過程中我們可以使用CART原則,即Clarify,Assumption,Result,Test。
Clarify
即聽清問題的重點,
詢問有歧義或不明確的部分
⬇️
Assumption
提出自己的假設
⬇️
Result
提出自己的解決方案。
⬇️
Test
驗證自己的方法和代碼的正確性
這樣一步一步清楚闡明自己的解題思路,可以讓候選人的思路過程清晰地呈現給面試官,更容易讓面試官了解到面試者不僅有很強的技術,也是個擁有著極強邏輯思維和軟實力的人。
以上就是本次為大家帶來的科普級谷歌面試分析!
本文素材來自: Google foo.bar Interview
想知道:
硬核CS技能,哪裡可以學到?
如何提高軟硬實力,提升技術面試通過率?
想贏得春招最後席位,上岸FLAG?
👇👇👇
來Offer【軟體工程師旗艦核心課程】
2月2日,免費試聽!
本期課程特設【春招新題特訓營】!為你帶來谷歌、微軟、騰訊、阿里等中美一線科技公司最新春招面試題講解!
本特訓營課程內容將多維度涵蓋不同專業、不同水平學生的求職需求!
除了本期新增內容,
課程還涵蓋6大優勢,助你斬獲心儀offer!
中美科技公司高管、面試官直播授課,完全按照一線科技大公司面試標準培訓!
課程富含:50% CS理論基礎 + 50%線上動手編程,突破面試不會動手,做不出新題變種的常見「毛病」!
舉一反三體系,一個知識點用三道題為你詳細解析:一道基礎題+一道變種題+一道面試熱門題;
對CS零基礎的學生,提供 1個月編程基礎加強訓練課!
針對工程師面試中的薄弱環節——行為面試(Behavior Interview)專門打造【BQ課程】,詳細講解如何進行BQ準備等。
簡歷修改、模擬面試、獨家內推....等一站式求職服務!