矽谷的面試信仰:生命不息,刷題不止-龜兔賽跑裡最可怕的就是不休息的兔子

早上蓬頭垢面,披頭散髮的起床後,匆匆的刷牙洗臉。對著鏡子裡終於略略人模人樣的自己開始自我精神洗腦催眠。”你是最棒的! 你可以的! 有考古題可以刷,總比沒有考古題可以刷好! 不過八九百題。鐵杵也能磨成繡花針的!” 你以為我是在準備聯考嗎? 還是托福? GRE? 答案是以上皆錯! 這是我日常的矽谷工程師的自我精神喊話。你問我是不是馬上有面試要來了? 也錯! 這只是一般矽谷軟體工程師的日常信仰。”生命不息,刷題不止。” 這是為了未來幾個月後,甚至一兩年後的還未發生的面試做準備。龜兔賽跑裡最可怕的就是不休息的兔子,而矽谷滿坑滿谷都是不休息的兔子-優秀勤奮且刻苦耐勞的菁英人才。

Business executive discussing with her client
七八年前的矽谷並不是這樣子的。那時候網路上還沒有這麼多的考古題。那時大部分是實務派,不會考太多程式演算法,比較多的是問你曾經做過甚麼項目,用甚麼技術來做這些項目,並且看你的溝通能力和個性。

當時只有谷歌特異獨行會考(益智題目)brain teasers,問些稀奇古怪的問題,來測驗面試者的估算,創意,分析能力。經典題目像是一架波音747飛機可以裝多少個足球之類的。面試者必須要估計飛機大小,足球大小,大約可以容納多少體積比例。這樣的題目並沒有標準答案,主要是看面試者如何推理和測試智商。你問我跟工程師有甚麼關係? 沒有甚麼關係。谷歌只要智商高的天才。因為通常大部分工程師的工作,產品經理會把產品要求寫好。而且我們也不會在工作中需要估計飛機可以裝多少足球。連谷歌前CEO Eric Schmit 都承認自己無法解答這些題目。這也是大家一直詬病的地方。後來谷歌就不在面試裡問這樣的益智問題。

於是矽谷的面試來到了下一個歷史階段。一派是以科技龍頭為首的FANG(facebook, apple, netflix, google) 的coding challenges,專門考演算法(algorithms)。 另一派是實務派問曾經的工作經驗。通常比較有名的大公司是演算法流派。而很多小公司是實務派。
隨著演算法的考古題在網路上越來越多,演算法流派的面試也越來越難。一開始公司要求你做的題目正確即可,後來要求要用最優法解答。現在則是演化到不但要做的正確,使用最優法解答,速度還要夠快。現在業界最流行的演算法考古題網站是leetcode。裡面從一開始的三百多題到現在的九百多題,題庫爆炸性成長。題目按照難易程度分類。並且如果你付錢的話,就可以看哪些題目是哪些大公司經常考的,你就能縮小你準備的範圍,更精確的練習那些你想要的公司的考古題。
中午吃飯的時候,工程師聊天的話題經常是”你刷了幾題? 你刷題刷了多久?” “我刷了半年了。我一天可以刷四十題。” ,”我刷了好幾遍了。要刷到馬上寫出來才行。” 刷題刷個幾個月到一兩年在矽谷是司空見慣的。最近兩個同事離職去了uber,都分別刷了一兩年的題目。另一個同事刷了半年的題,去了亞馬遜。
那為什麼這些大公司要用演算法題目來篩選面試者呢? 通常會使用演算法題目的大公司都是有一個central hiring process。也就是說不像一般公司由各個部門的經理單獨招人,而是由公司統一招人在分發到各個組裡,一次招聘幾百人。好處就是消除通過裙帶關係而招進不適任的人,並且確保一旦通過演算法題的人都有一定的水準,比較不會參差不齊,也可以刪掉那些講得口沫橫飛但是做不出來的人。
那不刷題,能不能進這些知名大公司呢?答案是非常困難!業界有個open source 大神, Max Howell,他是寫open source project, homebrew,的業界知名人物。他就是沒刷題,解不出來一個演算法題目,而被谷歌狠狠的拒絕。連業界知名大神不刷題都進不去,更何況一般的工程師? 雖然這在業界引起非常大的爭議,但是目前這是廣泛使用也相對比較有效的大型招募方式。還有另外一種看法是你連刷題都懶得刷,其實你也沒有那麼想進那家公司。如果你真的非常想進那家公司,為什麼不花時間刷題?

interview3
除了演算法流派和實務派之外,這兩年矽谷又風行一個新的面試方法,就是給面試者一道自由發揮的軟體設計題目。面試者可以有數天的時間寫程式,然後在面試的時候講解給面試官聽。這等於是把實務派升級版。你不但要會說,會做,還要做給他們看! 同時還要回答申辯面試官的犀利提問!題目大概像是請設計一個訂單系統之類的。你需要解釋你為什麼這樣設計,你考慮了甚麼可能的錯誤狀況(error cases),系統的速度優化程度等等。這個可以說是照妖鏡了。你的程度到哪,心思多麼縝密,實務設計經驗豐富程度一覽無遺。所以就算你找別人寫,面試官多問幾句深入的問題,你就穿幫了。並且通常公司會再搭配演算法題目,確保面試者的確有一定的水準,等於是雙重保險,層層把關。
矽谷變化萬千,連面試也是不停推陳出新。因為人才就是軟體公司最大的資產,公司無不絞盡腦汁想如何招到最優秀的人才。而為了豐厚的薪水福利,工程師也是拼了命的強化自己,跟上時代的潮流。工程師們總是一邊靠北面試越來越變態,一邊大罵當初真是瞎了眼,上了賊船。然後回家後又認命的默默的埋頭刷題,痛並且快樂著。痛在於競爭壓力極大,刷題好累,而快樂的是薪水和福利極佳,並且很有成就感。行筆至此,不能再多說了!我要去刷題了!

woman-in-glasses-with-chalkboard-of-equations-in-background

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Powered by WordPress.com.

Up ↑

Discover more from 矽谷資深女工程師 Lucy

Subscribe now to keep reading and get access to the full archive.

Continue reading