2021年1月10日 星期日

美國科技公司面試技巧(初中階)

好久沒有更新文章了,這幾年終於從恐怖環境生還並且跳槽了兩次進入FAANG了!

我也幫忙了朋友準備面試,也成功讓朋友從非Software Engineer成功跳槽進入了FAANG成為軟體工程師,可見我的準備方式和心得還是有些用處的XD

決定在此做個紀錄,等到我下一次跳槽時能複習這些技巧

PS: 標題寫,初中階,意思是這篇心得可以適用於想找初階 + 中階工程師職位的人,資深工程師以上比較強調的System Design等我更有經驗時會再分享!

背景

為了增加可靠度,大家總是會加入背景來佐證。我這兩年跳槽了兩次,從金融科技小公司跳到FAANG,並且也分享了心得並且幫忙朋友準備,也成功讓朋友跳到FAANG了,可見此篇文章還是有點用處的!

網路上大部分分享的面試經驗分享,大多只講到該怎麼準備,或一些High Level Concept,我自己看起來覺得對於了解面試流程是有幫助的,但卻沒有對於真的在面試時的答題技巧有更多的著墨。所以以下心得會比較著重在我覺得有用的面試技巧。

履歷

履歷是很重要的一環,代表你給人的第一印象。履歷上要能適度展現你過去所做過的項目以及經驗,以此來吸引人資或獵頭來給你面試機會。

基本原則就是,關鍵字,履歷上要有各種你想要別人能搜尋到你的關鍵字,例如Java, Python, 或k8s之類技術。

第二就是經歷上的條列式項目,不能單純寫我用了A做出了B,而是要以更高的角度來闡述,這樣才會看起來更厲害更漂亮 (像是我用了A做出了B幫助公司解決了C難題)

第三就是可以適度的誇大一點自己做過的東西,這個比較像是黑暗兵法,使用他的話算是一把雙面刃,正確使用方法是,你必須要完全熟悉你寫在履歷上的東西,而不是隨意誇大,這樣很容易被問倒並且在面試裡給出不佳印象!

刷題

美國科技公司面試有制式的流程,各大公司大同小異,都是遵循以下流程

HR Phone call, OA (Online Assessment), Phone interview, Onsite interview

OA之後的流程一定都會考程式題,所以刷題準備算是最容易的方法了!

網路上流傳的,要刷幾百題才能上FAANG呢?

我個人認為是,重質不重量,每個人情況各不相同 (我自己刷了接近200題就開始面試了XD)

刷題主要是要刷出解題的感覺和提供未知題目的思路!

各種常見類型的題目一定要做過並且了解解法,我推薦的刷題法是:


每一題都要自己想並做過一遍,起碼寫出一個暴力解,實在想不出來可以看解答或討論,了解別人的解法後,一定要自己再做過一遍!


這樣子假如遇到沒見過的題目時也不會慌張,因為再差也在有辦法給出暴力解了!

然後很多文章下面討論過,Hard 題不重要,DP (Dynamic Programming) 遇到就算了。我個人觀點是還是很重要! 很多一線公司多少還是會遇到Hard題的,DP是肯定會出的!

所以高頻Hard還是要刷過,DP也要練習過才是正確準備方式!

面試技巧

電話面試和Onsite面試通常都會考程式題,假如前面刷題部分都準備差不多了,那接下來就是要加強面試的溝通技巧了!

基本原則就是,面試體驗很重要,不管是對面試者或面試官! (這就是為什麼英文好的人比較好拿到Offer)

看人寫Code是一件很痛苦的事情,面試官卻還要看懂你在寫什麼就更痛苦了! 所以如何幫助面試官好好的理解你在幹什麼是一件很重要的事情!

一定要練習邊寫邊講自己在幹嘛! 

這個很重要,可以給面試官良好的面試體驗之外,也是訓練自己Analytic Thinking的重要訓練,可以練習了解自己所打出的每一行Code之外,還可以有邏輯有條理地跟別人解釋自己的Code。

遇到困難時,向面試官尋求幫助!

當你想不出來時,是完全可以尋求提示的! 所以如何清楚的表達自己想要怎麼做,但是遇到了什麼樣困難的能力是很重要的! 可以找朋友模擬面試來訓練這個情況!

無法在短時間內想出最佳解時,先給暴力解!

有答案總比沒答案好,可以跟面試官解釋自己目前只想到這種方法,要我先寫嗎,還是可以給些提示嗎?

最後就是要盡量展現友善的態度 (傻笑) 就可以完美的給面試官一個良好的體驗。最後就算你沒有給出最佳解,面試官也會對你的印象很好,有時可能就放你一馬啦!

系統設計 (System Design)

基本版的 grokking the coding interview 我很推薦,他給了基本Sytem Design面試的思路外也算是考古題,有很多題目都不出課程列出的範例,可以照著同樣思路去做!

一開始看不太懂沒關係,系統設計相關的準備就像是看Paper,一遍一遍的看最後就會有點感覺了!

除了以上課程外,我覺得Amazon System Design Preparation 的youtube影片也很有幫助,算是面試技巧的一部分!

先從High Level 三個方框開始,有淺入深,由自己擅長的領域開始 Dive Deep然後再看面試官想深入問哪個部分。

延伸閱讀的部分就是那些其他經驗分享也有提到的各大公司Tech Talk了,閒暇時間沒事的話可以看一下。