[心得][美國] 幾年的面試者+面試官經驗
鑑於近年來LeetCode刷題被神化,被認為是面試必備
所以我想以5年多以來無論是當面試者還是當面試官的經驗
來分享一下如何準備面試
首先先分享一下我的經歷
我不是什麼強者,沒有參加過ACM競賽,Code jam頂多做兩題
美國碩士畢業後,LeetCode刷了250題左右,Google onsite後被HC拒了
去了另一家公司後,待了幾個月上個簡單的課之後就開始當面試官
才開始理解到面試官要的是什麼,之後FLAG裡除了FB沒面過外其他Offer都拿過了
以下從面試官的角度分析該怎麼準備
面試官不是專業的
面試官其實只是工程師稍微上點課知道什麼該問什麼不該問,還有態度該如何
除此之外和你一樣就只是個工程師,因為平常都在工作對刷題肯定比你陌生
所以大部分面試官其實都只關注幾點(應該說是被要求要注意哪些部分)
1. 有沒有問對的問題
其實主要是想要看面試者的互動能力,通常面試官會簡單的把題目敘述一下
這時候就是希望面試者可以主動重述題目,然後對題目的外在環境提出問題
例如: input的範圍限制?、data是online/offline?、output的格式?
這時候就是想測試面試者有沒有能力把一個問題轉化成一個可執行的計畫
2. 程式碼的可讀性/乾淨程度
理由很簡單,面試官都是假設以後要和你一起工作的,所以平常練習請把程式碼寫乾淨
變數命名合理一看就知道作用,一個function一個用途,不要擠太多不相關的邏輯
可讀性差通常在評分上是致命的,而且是大多面試官無法忍受的
3. 溝通、溝通、溝通
面試官都被要求把面試當作和一個不熟的人一起做個小專案
這時候溝通很重要,不要讓面試官一頭霧水不知道你現在的進度是哪裡
就算你知道題目怎麼做,你解題的流程可能也和面試官不同,或者是對實作的見解不同
溝通在評分上是"絕對致命",你悶頭自己把答案寫出來不代表很聰明
而是未來和你工作很辛苦
4. 測試!
這是刷題的後遺症,面試沒有一鍵測試這種功能
請自己在重述題目時順便想好哪些可以測試的input/output,並且包含edge cases
很多時候不是自己解題的想法錯了,而是實作中的bug
面試官也不會主動幫你走程式的流程來幫你驗證對不對,請自己證明自己寫的是對的
少了測試有時候你會聽到面試官說:「我想應該是對的吧」
這時候回頭肯定會在你的評分裡寫上少了測試
少測試的扣分可大可小,看題目的難易度
5. 有沒有解出來,有沒有optimal solution
其實這部分只要有個一般解,測試過了,基本分就拿到了
optimal solution基本上除非你是被考了很簡單的問題
不然只要你能和面試官討論怎麼優化,有哪些trade-off,就拿到基本加分了
實作不是一定必要,或是一定得寫完整,因為你的一般解已經展現實作功力了
以上是大公司FLAG/FAANG的基本面試要點
一些新創的奇怪面試又是另外一回事,也很難分享如何準備
另外System Design是一個比較難標準化的東西,所以我就不獻醜了
回到要不要刷題這個問題,我認為的是
- 刷題可以幫助你熟悉/複習演算法和資料結構,所以刷一下是需要的
- 題數不用多,如果你可以看到一個題目立刻知道怎麼解,那題就不用繼續寫了
- 刷題請給自己限時,1小時/45分鐘的面試通常只會給你45/30分鐘的做題時間
扣除掉各種溝通問問題的時間,我都是給自己每題20~30分鐘
- 如果你確定onsite要用板書,做題時請分配一些給自己用紙筆作答
- 自己先想好怎麼測試,不要過度依賴LeetCode的工具
- 語言不重要,除非你確定你要面試的公司只考特定語言
- 考前請人給你mock interview訓練臨場反應和溝通,這和刷題同等重要
以下刷題數僅供參考
因為我每次重新刷題都會開一個新session,所以有記錄我每次刷的題數
第一次跳槽90題,拿到Apple、VISA和新創(其實Apple不考算法題)
第二次跳槽110題,拿到LinkedIn和獨角獸新創
第三次跳槽140題,只面Google且拿到Offer
最後祝大家Offer拿好拿滿,希望這篇文章能幫助不知從何準備面試的人
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.222.35.91 (美國)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1614568871.A.4CC.html
推
03/01 11:23,
3年前
, 1F
03/01 11:23, 1F
推
03/01 11:31,
3年前
, 2F
03/01 11:31, 2F
推
03/01 11:31,
3年前
, 3F
03/01 11:31, 3F
推
03/01 11:39,
3年前
, 4F
03/01 11:39, 4F
推
03/01 11:39,
3年前
, 5F
03/01 11:39, 5F
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 11:41:00
推
03/01 11:40,
3年前
, 6F
03/01 11:40, 6F
推
03/01 11:43,
3年前
, 7F
03/01 11:43, 7F
→
03/01 11:43,
3年前
, 8F
03/01 11:43, 8F
卡題的時候建議是不要直接說「我該怎麼做」之類的
毫無頭緒的情況下最差是先用暴力法做推理,99%的題目應該可以至少用暴力法解
推理之後再開始討論優化的問題,這時候就可以間接問「我該怎麼優化」
推
03/01 12:00,
3年前
, 9F
03/01 12:00, 9F
推
03/01 12:02,
3年前
, 10F
03/01 12:02, 10F
推
03/01 12:05,
3年前
, 11F
03/01 12:05, 11F
推
03/01 12:27,
3年前
, 12F
03/01 12:27, 12F
推
03/01 12:28,
3年前
, 13F
03/01 12:28, 13F
推
03/01 12:28,
3年前
, 14F
03/01 12:28, 14F
推
03/01 12:53,
3年前
, 15F
03/01 12:53, 15F
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 13:16:24
推
03/01 12:58,
3年前
, 16F
03/01 12:58, 16F
→
03/01 13:01,
3年前
, 17F
03/01 13:01, 17F
→
03/01 13:01,
3年前
, 18F
03/01 13:01, 18F
→
03/01 13:02,
3年前
, 19F
03/01 13:02, 19F
推
03/01 13:20,
3年前
, 20F
03/01 13:20, 20F
推
03/01 14:03,
3年前
, 21F
03/01 14:03, 21F
推
03/01 14:13,
3年前
, 22F
03/01 14:13, 22F
推
03/01 14:33,
3年前
, 23F
03/01 14:33, 23F
→
03/01 14:53,
3年前
, 24F
03/01 14:53, 24F
→
03/01 14:53,
3年前
, 25F
03/01 14:53, 25F
→
03/01 14:55,
3年前
, 26F
03/01 14:55, 26F
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:00:55
推
03/01 15:03,
3年前
, 27F
03/01 15:03, 27F
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:22:19
推
03/01 15:24,
3年前
, 28F
03/01 15:24, 28F
推
03/01 15:30,
3年前
, 29F
03/01 15:30, 29F
→
03/01 15:30,
3年前
, 30F
03/01 15:30, 30F
Apple看組,因為各個部門獨立招人
肯定有算法題考比較多的組,我面的那次全是相關系統實作
面試前建議和HR詢問面試內容
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:33:45
→
03/01 15:35,
3年前
, 31F
03/01 15:35, 31F
fullstack,frontend(web)/api/backend全包
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 16:07:10
推
03/01 17:22,
3年前
, 32F
03/01 17:22, 32F
推
03/01 18:31,
3年前
, 33F
03/01 18:31, 33F
推
03/01 21:03,
3年前
, 34F
03/01 21:03, 34F
→
03/01 21:03,
3年前
, 35F
03/01 21:03, 35F
測試真的很重要而且很容易被忘記,見過不少面試者因為沒測試被打槍
推
03/01 21:36,
3年前
, 36F
03/01 21:36, 36F
推
03/01 21:52,
3年前
, 37F
03/01 21:52, 37F
→
03/01 21:52,
3年前
, 38F
03/01 21:52, 38F
系統設計我個人認為溝通大於一切
只要一開始能夠和面試官溝通,例如
- 設計要涵蓋架構裡的哪些部分,哪些可以假設有黑盒
- 什麼是MVP,面試官覺得哪些功能最重要,板書前就決定好P0 P1
之後照著討論好的計畫做清楚的板書(圖是不是標準UML之類的不重要)
剩下就看合不合面試官的喜好了
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/02/2021 02:29:32
推
03/02 02:34,
3年前
, 39F
03/02 02:34, 39F
→
03/02 02:34,
3年前
, 40F
03/02 02:34, 40F
推
03/02 05:52,
3年前
, 41F
03/02 05:52, 41F
推
03/02 09:31,
3年前
, 42F
03/02 09:31, 42F
推
03/02 18:18,
3年前
, 43F
03/02 18:18, 43F
推
03/02 19:34,
3年前
, 44F
03/02 19:34, 44F
推
03/02 23:51,
3年前
, 45F
03/02 23:51, 45F
推
03/03 01:09,
3年前
, 46F
03/03 01:09, 46F
推
03/03 10:48,
3年前
, 47F
03/03 10:48, 47F
推
03/04 22:02,
3年前
, 48F
03/04 22:02, 48F
推
03/04 22:24,
3年前
, 49F
03/04 22:24, 49F
→
03/04 22:25,
3年前
, 50F
03/04 22:25, 50F
→
03/04 22:26,
3年前
, 51F
03/04 22:26, 51F
推
03/06 19:27,
3年前
, 52F
03/06 19:27, 52F