專訪|谷歌蘇勇:算法能力好壞,在國內外大廠面試中決定Offer質量!

騰訊、百度阿里等國內的一線名企,在招聘工程師的過程當中,對算法和數據結構都會重點考察。但算法易學難精,讓不少程序員都望而卻步,面試時總敗在算法這一關,拿不到好 Offer。前端

本次IT君採訪到了 Google 資深軟件工程師蘇勇,一塊兒花10分鐘看下他是如何學好算法,衝擊谷歌 Offer 的。程序員

嘉賓介紹面試

蘇勇 算法

Google 資深軟件工程師性能優化

現負責 Google Maps 產品研發工做,並參與多個開源軟件的開發和維護。微信

做爲力扣(LeetCode)骨灰級用戶,蘇老師曾貢獻超過 200 套算法題目的解題方案,得到不少技術同行的贊同和分享,另外在知網發表過多篇算法相關論文。數據結構

做爲 Google 面試官,蘇老師在負責技術候選人的考察、設計面試考題與評分標準等重要環節,擁有大量技術人才選拔經驗。數據結構和算法

如下爲專訪內容整理性能

學習

IT 君:您是如何拿到 Google 的 Offer 的?能簡單介紹下當時面試的場景嗎?都考了哪些算法題?

蘇老師:從面試完畢到拿到正式的書面 Offer 恰好是一週的時間,拿 Offer 的時間很快。可是爲了準備 Google 的面試,我卻作了充足的準備。

在我肯定本身要去面試 Google 的時候,我正在 Box 帶領團隊開發一款全新的產品,因此我給本身預留了半年的時間作最後的衝刺。一方面,我得保證 Box 的產品進度,一方面,我也得保證本身有足夠時間複習力扣(LeetCode)上的算法題。我將題目進行了分類,按照公司、題目熱門程度、難度進行了排序,定下所要複習的題目數量,計算出每週必需要完成的題目,而後嚴格執行。皇天不負有心人,最後我如願拿到了 Google 的 offer。

Google 面試注重交流以及可否迅速地將解題思路轉換爲代碼的能力。每輪面試45分鐘,我被問到算法題和系統設計題,雖然不少問題都不是力扣(LeetCode)上的原題,可是不少具備類似性。在每輪面試中,面試官問的第一題,基本都是熱身,要求你在比較短的時間裏寫出代碼,然後續提問通常都會花比較多時間去討論。記得有一輪面試,我最後兩分鐘才找到思路,到最後一刻才按照面試官的要求把代碼寫了出來。

回想起來,能拿到 Google 的 offer 是幸運的也是幸福的,因此很但願能和你們分享經驗。

IT 君:算法在您的成長里程碑中有什麼助力?

蘇老師:算法讓我脫胎換骨,不只幫助我找到了求之不得的工做,更在平常的工做生活中起到了很是多的做用。好比跟谷歌的工程師們討論問題,咱們會就算法的時間和空間複雜度進行探討,分析各類解決方案的利弊。另外,我一直保持書寫簡潔代碼的習慣。在 Google ,代碼的可讀性是審覈代碼的重要環節,若是代碼寫得很難懂,是很難經過審覈的。

掌握數據結構與算法,讓我對面試再也不感到恐懼,也能讓我在分析問題的時候擁有更多的思路和方法。

IT 君:您認爲,對數據結構和算法不重視,對平常工做有影響嗎?

蘇老師:確定是有的。

首先,程序員這個羣體也是有金字塔結構的。若是連基本的算法和數據結構都不會,基本上就比較底層,底層就意味着低薪酬。付出一樣時長的腦力勞動,賺得就會比別人少。
其次,做爲團隊裏的一員,不少時候不光要作好本身的本職工做,也要和其餘團隊進行技術問題上的溝通,若是沒有紮實的算法和數據結構基礎,很難及時發現問題並提出獨到的看法。
另外,技術棧自己天天都在變化,同時也會隨着不一樣行業不一樣公司改變。可否快速適應新技術和新環境就顯得尤其重要。這就要求你必須具備以不變應萬變的的計算機思惟、算法思惟和邏輯思惟能力。

IT 君:算法好的程序員能夠有哪些發展方向?

蘇勇老師:我以爲算法好,只能表明你對程序的理解比較好、能更深刻的看到問題,並進行優化。這種特質是優秀的,可是要上升到職業發展的話,還應該在各個層面去磨練。

好比我常常看到身邊優秀的程序員但願嘗試作經理,那麼他們得先從 Tech Lead 作起,學會如何領導一個項目、學會如何跟項目經理、設計師甚至是跨部門團隊的成員進行有效溝通。

算法好的程序員有一個得天獨厚的優勢:一旦對問題進行技術上的分析時,他們總能洞悉到項目經理和設計師沒法看到的那一面,會提出建設性的意見。

IT 君:爲何面試官都喜歡問算法和數據結構呢?

蘇勇老師:數據結構與算法能力的考覈在以 BAT 爲表明的國內大廠,乃至 Google 等硅谷高科技公司的面試裏佔了至關大的比重。總結起來,考察的緣由有四:

算法能力可以準確辨別一個程序員的技術功底是否紮實;
算法能力是發掘程序員的學習能力與成長潛力的關鍵手段;
算法能力可以協助判斷程序員在面對新問題時,分析並解決問題的能力;
算法能力是設計一個高性能系統、性能優化的必備基礎。

我本身也很是看重候選人的解題思路,以及能將思路迅速地變成代碼的能力,好比我喜歡問一些二叉樹相關的題目,這些問題的解法體現了面試者對數據結構的熟練度,以及分析算法複雜度的能力。

IT 君:您認爲面試前刷算法題重要嗎?如何刷題比較好?

蘇勇老師:若是是去面軟件工程師的職位,刷題我認爲是必須的。在我看來刷題就像是高考前的衝刺,有2個好處:首先,能夠起到鞏固算法基礎的做用;其次,能夠幫助本身對某些算法進行總結和整理,達到融會貫通的效果。刷題的方法因人而異,因時而異。我本身分爲這幾個階段:

1.準備面試初期階段

我是按照力扣(LeetCode)的算法知識點進行分類訓練,好比,我會先看二叉樹相關的題目,由於它在前端面試中是很是熱門的話題;以後,我會看圖論,由於它是二叉樹的擴展;再接下來,我會看遞歸和回溯,由於它們是算法面試裏常常被問到的知識點。經過一段時間的專一練習,我能夠整理出一套解決相關問題的模版,幫助我理解記憶。

2.準備面試的中期階段

開始針對各個公司的熱門題目進行復習。因爲有了第一階段的積累,我開始針對心儀公司,有目標性地刷題目。這個階段有點相似於高考的模擬考,看看本身的水平可否達標。若是當我看完了題目,並且在10分鐘以內沒有任何頭緒,我會看答案,而後吸收高手們的思路,最後思考可否優化。

3.最後的衝刺階段

把精力放在平時作得很差的題目上。這個階段主要是給本身樹立信心,我會快速瀏覽以前作過的題目,整理思路,把一些經典的題目寫在黑板上或者紙上。若是是太難且不是很熱門的題目,我是不會花費太多精力的。

這裏強烈推薦你們在紙上和黑板上練習寫代碼,這對書寫清晰可讀的代碼是很是有幫助的,試想一下,若是面試官看不懂你寫的代碼,他們怎麼跟你溝通呢?

IT 君:有沒有什麼提升算法面試經過率的好方法?

蘇勇老師:算法面試,有時候靠「運氣」,但我想說的是,「運氣」是實力的一部分。書山有路勤爲徑,努力提升實力真的沒有捷徑。算法面試的經過率每每和你面試過程當中發揮的狀態有很大關係。

如何讓本身正常發揮呢?我會先拿幾個小公司或者獨角獸公司來練手。一方面,試試本身的能力;另外一方面,儘可能拿幾個offer保底,未來好跟大公司討價還價。

最重要的是把本身的狀態調整到最佳,包括和麪試官交談時的狀態、是否能清晰地分析問題、如何把本身的思路完美地告訴給面試官,最後是書寫代碼的水平,也就是可否能流暢地寫出可讀性高的代碼。

IT 君:做爲 Google 的面試官,您是如何考察求職者的?什麼樣的求職者容易被選中?

蘇勇老師:45分鐘的面試時間真的頗有限,我通常從如下方面考察求職者:

一、專業領域知識

這點能夠從面試開頭的談話中得知。通常面試官都具備面試職位相關領域的知識,貼近這個專業知識聊天能夠說是徹底加分的點。

二、算法知識

經過半個多小時的解題過程,可讓我看到求職者是否能正確地理解問題、剖析解題思路,並迅速寫出代碼。

其實,沒法在規定時間內完美地寫出代碼並非世界末日,只要求職者對問題分析正確,把握了正確的思路,代碼能清晰地看到輸入和輸出的邏輯、結構,最重要的是能迅速地將思路轉變成部分代碼,就能讓我很滿意了。

三、總體表現

另一個面試官比較看中的方面就是:面試官是否願意和求職者未來一塊兒工做。

若是求職者的算法知識無可挑剔,可是在解決問題的過程當中缺少和麪試官的交流,甚至對面試官的疑問不屑一顧,那又怎能讓面試官放心跟他一塊兒工做呢?因此面試者的溝通能力也是一個考察點。

IT 君:您是力扣(LeetCode)的骨灰級用戶,貢獻過許多算法面試問題的解題方案,爲何要在算法方面下這麼大功夫?爲何選擇幫助廣大程序員提升算法能力?

蘇勇老師:之因此要在算法方面下大功夫,主要是由於算法在國內外大廠的面試裏都佔了至關大的比重,空有一身所謂的「經驗」,功底卻不好,那麼很難從頂尖的大公司裏拿到好offer。

Linux 之父 Linus Torvalds 說過一句話:"Talk is cheap. Show me the code." 中文翻譯就是,能說算不上什麼,有本事就把你的代碼給我看看。

正如我前面提到的,算法面試除了考察你的基本功是否紮實以外,更重要的是要看看你能不能迅速地將思路轉化成沒有 bug 的代碼,若是沒有必定的功夫,是很難在短期內達到高要求的。

力扣(LeetCode)幫助了我不少,我從這個平臺上豐富了本身的算法知識,從廣大網友的各類精妙的解法中體會到了快感,這讓我再也不害怕算法面試,這個平臺讓我在求職道路上實現了本身的夢想,做爲回報,我也但願盡本身的綿薄之力,將個人多年實戰經驗和刷題心得分享給你們。

IT 君:感謝蘇勇老師的分享!

由拉勾聯協力扣(LeetCode)獨家合做,邀請到 Google 蘇勇老師共同打造的《300分鐘搞定算法面試》課程上線啦!(戳綠字連接瞭解詳情)

更可聯繫微信號kaiwubzr3 領取10本算法相關電子書 、加入算法精進羣~

相關文章
相關標籤/搜索