看板 Soft_Job 關於我們 聯絡資訊
鑑於近年來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
expury: 推推 03/01 11:23
GLaDOS1105: 推推 03/01 11:31
tnfshjcc: 推推 03/01 11:31
cksxxb123: 太感謝了 好文 03/01 11:39
kendegi: 推推 03/01 11:39
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 11:41:00
kangan987: 推推 03/01 11:40
siba727: 謝謝分享,另外想請問能否分享要求給予題目提示的技巧呢 03/01 11:43
siba727: ? 03/01 11:43
卡題的時候建議是不要直接說「我該怎麼做」之類的 毫無頭緒的情況下最差是先用暴力法做推理,99%的題目應該可以至少用暴力法解 推理之後再開始討論優化的問題,這時候就可以間接問「我該怎麼優化」
otsukabi: 感謝分享 03/01 12:00
sanchi: 感謝經驗分享 03/01 12:02
ilovejesus: 推 03/01 12:05
kevinfilter: 推!感謝經驗分享 03/01 12:27
zrna0515: 推 03/01 12:28
cuteSquirrel: 好文 03/01 12:28
az345705: 謝謝分享! 03/01 12:53
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 13:16:24
acoo: 推 03/01 12:58
DrTech: 這才是正確觀念,建議有在刷的好好看。不要光湊題數背答案 03/01 13:01
DrTech: 。 03/01 13:01
DrTech: 面試考leetcode也不是只考寫出來正確答案。 03/01 13:02
taipoo: 推好文 03/01 13:20
dddingnan: 推推 03/01 14:03
kyrie77: 推 03/01 14:13
michael0728n: 推推 03/01 14:33
superpandal: 美國的ip 要求風格的國度 解題方式不同是溝通問題... 03/01 14:53
superpandal: 那還是背書cp值比較高 03/01 14:53
superpandal: 直接背優化的解 03/01 14:55
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:00:55
r8106087: 推,謝謝分享 03/01 15:03
※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:22:19
Stdout: 觀念正確 03/01 15:24
SwiftLang: 推,Apple不考算法題(? 是看組嗎 03/01 15:30
SwiftLang: 還是說會考只是考得比較少之類的呢 03/01 15:30
Apple看組,因為各個部門獨立招人 肯定有算法題考比較多的組,我面的那次全是相關系統實作 面試前建議和HR詢問面試內容 ※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 15:33:45
SwiftLang: 感謝分享,方便問大大是哪個領域的嗎~app, backend,ml? 03/01 15:35
fullstack,frontend(web)/api/backend全包 ※ 編輯: LordCHTsai (73.222.35.91 美國), 03/01/2021 16:07:10
Ouranos: 大推!觀念很棒 :) 03/01 17:22
evan11401: 推推 感謝 03/01 18:31
worcdlo: 前陣子面G,平均每關寫兩題,但被HC因為完全沒有執行4拒 03/01 21:03
worcdlo: 絕了,習慣的培養很重要,面試不能當比賽在打 03/01 21:03
測試真的很重要而且很容易被忘記,見過不少面試者因為沒測試被打槍
urmfo: 請問系統設計有沒有什麼拿分的關鍵呢? 03/01 21:36
urmfo: 跟樓主一樣偏前端和全段方向,系統設計可以不要在後端db著 03/01 21:52
urmfo: 墨太多嗎? 03/01 21:52
系統設計我個人認為溝通大於一切 只要一開始能夠和面試官溝通,例如 - 設計要涵蓋架構裡的哪些部分,哪些可以假設有黑盒 - 什麼是MVP,面試官覺得哪些功能最重要,板書前就決定好P0 P1 之後照著討論好的計畫做清楚的板書(圖是不是標準UML之類的不重要) 剩下就看合不合面試官的喜好了 ※ 編輯: LordCHTsai (73.222.35.91 美國), 03/02/2021 02:29:32
mmonkeyboyy: 推一下 測試很重要@_@~ 我覺得應該說你實務做多了 03/02 02:34
mmonkeyboyy: 就會知道測試很重要了@_@~ 03/02 02:34
baobomb: 正解 面FG時感受也是這樣 題目不難 重在溝通 03/02 05:52
jackkao1: 推 03/02 09:31
siriusu: 推 03/02 18:18
shiauji: 感謝分享 推 03/02 19:34
Yujjlin: 謝謝分享 03/02 23:51
imjeffreylee: 推一個 03/03 01:09
fatathome: 推 03/03 10:48
ayugioh2003: 推 03/04 22:02
leicheong: 1那個真的很重要. 以前負責面試時就很愛出「不發問會 03/04 22:24
leicheong: 出問題的問題」XD 甚麼都不問只埋頭做的話會在review時 03/04 22:25
leicheong: 被質問為什麼會這樣. :P 03/04 22:26
streakray: 推推 03/06 19:27
onthesea: 觀念正確好文 03/09 16:30
nightcrow: 大推,正好需要 04/30 07:24