概述#

要在面試中脫穎而出,準備工作必須早在面試本身之前就開始——有時甚至是幾年前。以下的時間軸說明你在不同階段應該思考的事情。

如果你現在才開始,不要氣餒。盡量補足,然後專注在準備上。祝你好運!


Getting the Right Experience(累積正確的經驗)#

沒有好的履歷就沒有面試機會,沒有好的經驗就沒有好的履歷。因此,拿到面試機會的第一步,是累積優質的經驗。越早開始思考這件事越好。

在學學生#

  • 選修大型專案的課程(Take the Big Project Classes):主動選擇有大型 coding project 的課程,在正式工作經驗之前,這是取得實際開發經驗的最好方式。專案越接近真實世界越好
  • 爭取實習(Get an Internship):盡一切可能在學期間拿到實習機會,這能為畢業前的下一份實習或工作鋪路。許多頂尖科技公司有專門針對大一、大二生的實習計畫,新創公司往往更有彈性
  • 自己動手做(Start Something):在課外時間自己做一個 side project、參加黑客松,或貢獻開源專案。不必完美,重要的是你在寫程式。這不僅能培養技術能力與實務經驗,也展現了你的主動性,令公司印象深刻

在職專業人士#

已在業界工作的人,可能已具備足夠的經驗轉換到理想公司。若你想從知名度較低的公司轉移到「大廠」,或從測試/IT 轉換到開發職位,以下建議有用:

  • 將工作重心往程式碼移(Shift Work Responsibilities More Towards Coding):不必告訴主管你在考慮離職,但可以主動表達對更大挑戰的渴望,爭取更「紮實」的程式專案。確保這些專案用到相關的技術,能成為履歷上有力的子彈點
  • 善用下班時間(Use Your Nights and Weekends):利用空閒時間開發一個 mobile app、web app 或桌面軟體。這不只能讓你累積新技術的使用經驗,一個「純粹出於興趣而做的 side project」往往是最令面試官印象深刻的履歷項目

所有這些行動最終都指向兩件事:你聰明(smart),而且你會寫程式(can code)。能向面試官證明這兩點,你就能拿到面試機會。

除此之外,也應提前思考長期職涯方向。若你未來希望轉往管理職,即便現在在找開發工作,也應該從現在開始培養領導力的相關經驗。


Writing a Great Resume(寫一份好的履歷)#

履歷篩選人員和面試官看的是同一件事:你是否聰明,你是否會寫程式。你應該讓履歷突出這兩點。興趣愛好(打網球、旅遊、玩魔術牌)很難展現這些,在技術履歷中幾乎沒有份量。

適當的履歷長度#

  • 美國習慣:10 年以下經驗,強烈建議控制在一頁
  • 更有經驗的候選人,可接受 1.5–2 頁
  • 履歷越短,往往越有力

為什麼?

  • Recruiter 瀏覽一份履歷只花約 10 秒——你若把最精華的內容濃縮,他們一定能看到;加了太多無關內容只會分散注意力
  • 有些人直接拒絕閱讀長履歷

如果你覺得你的經歷塞不進一頁,那是因為你還不懂得取捨與優先排序,而不是因為你真的需要兩頁。長履歷反映的不是豐富的經驗,而是不知道如何精簡。

工作經歷#

履歷不需要列出你做過的每一份工作,只需列出對應聘職位有意義的相關職位

如何寫出有力的子彈點(Writing Strong Bullets)

每個職位的描述,建議使用以下格式:

「透過實作 Y,達成了 X,帶來了 Z 的結果。」 (“Accomplished X by implementing Y which led to Z.”)

例如:

  • “Reduced object rendering time by 75% by implementing distributed caching, leading to a 10% reduction in log-in time.”
  • “Increased average match accuracy from 1.2 to 1.5 by implementing a new comparison algorithm based on windiff.”

不是所有成就都能套入這個格式,但核心原則是一樣的:說明你做了什麼、怎麼做的,以及結果如何。盡量讓結果可量化。

專案(Projects)#

專案區塊是展示經驗最有效的方式,對學生和應屆畢業生尤其重要。

  • 列出 2–4 個最具代表性的專案,說明專案內容、使用的語言或技術
  • 可以補充是個人還是團隊專案、是課程作業還是獨立開發(獨立開發通常更有加分效果)
  • 不要列太多——許多人犯的錯誤是把 13 個小專案全都列進去,只會讓履歷顯得雜亂
  • 建什麼不是最重要的,重要的是你在持續動手建造東西

程式語言與技術能力#

關於軟體工具(Software)

保守列出,只列出與職位相關的工具。Microsoft Office 幾乎可以直接刪除。Visual Studio 等開發工具也稱不上特別有力的加分項——學習使用 Visual Studio 並不難,頂尖科技公司不太在意這些。空間有限,每一行都要值得。

關於程式語言(Languages)

危險的做法是列出你「曾經用過」的所有語言——面試官通常把你履歷上的一切都視為可以考的範圍。

建議做法:列出主要使用的語言,並標注熟悉程度,例如:

Languages: Java (expert), C++ (proficient), JavaScript (prior experience)

不建議用「幾年經驗」來表示熟悉度,因為難以解讀——如果你十年前學了 Java 但只偶爾使用,這「十年經驗」的意義其實很模糊。直接用文字描述更清楚。

非母語英語者與國際候選人#

  • 請至少一位英語母語者校對你的履歷,哪怕只有一個錯字,某些公司可能直接略過
  • 在美國求職時,不要在履歷中加入年齡、婚姻狀況或國籍,這些個人資訊可能造成雇主的法律風險,令他們不舒服

注意語言的潛在刻板印象(Beware of Potential Stigma)#

某些語言或技術在業界確實存在刻板印象(stigma),這不一定公平,但你應該知道:

  • Enterprise Languages(企業級語言):例如 Visual Basic。若你在頂尖科技公司面試時強調 VB 專業,可能讓人誤以為你的技術深度有限。整個 .NET 平台也面臨類似情況——若你的主要背景是 .NET 卻不是應徵 .NET 職位,你需要做更多工作來展現技術廣度

  • Being Too Language Focused(過度強調特定語言):有些頂尖科技公司的 recruiter 看到履歷上列滿各個 Java 版本的細節,會做出負面假設——業界普遍認為最優秀的工程師不會以「精通某語言」來定義自己

  • Certifications(認證):軟體工程師的認證,在不同公司可能是加分、中性或扣分。偏好泛技術廣度的公司,往往也對認證持保留態度——你可能要考慮是否從履歷中移除

  • Knowing Only One or Two Languages(只懂一兩種語言):這可能讓面試官認為你的開發經驗不夠豐富,或擔心你過於依附某一特定技術。盡量多接觸不同語言,尤其是差異較大的語言(例如 Python、C++、Java,而非 Python、Ruby、JavaScript 這種風格相近的組合)


Preparation Map(備考地圖)#

以下是本書建議的備考時間規劃,核心理念是:面試準備不只是練習題目,寫 code、做專案同樣重要

1 年以上(距離面試)#

  • 在學校/工作以外建構自己的 side project
  • 學習多種程式語言
  • 學生:找實習、選修有大型專案的課程
  • 建立個人網站或作品集,展示你的經驗
  • 拓展人脈(Network)

3–12 個月#

  • 持續進行專案,嘗試再增加一個新專案
  • 在職者:將工作重心轉向更「紮實」的程式任務
  • 建立理想公司清單(target list)
  • 起草履歷草稿並尋求回饋
  • 閱讀本書的導讀章節(即 Part I–IV)
  • 學習並掌握 Big O 分析
  • 從零實作核心資料結構與演算法
  • 與朋友組成 mock interview 小組,互相練習

1–3 個月#

  • 持續練習面試題目
  • 做幾個小型 mini-project 鞏固對關鍵概念的理解
  • 進行多次 mock interview

4 週前#

  • 建立錯題清單,追蹤你在解題過程中犯的錯誤
  • 持續練習面試題目
  • 建立並更新 interview prep grid(第 32 頁)
  • 更新履歷
  • 開始正式投遞申請

1 週前#

  • 重新閱讀本書的 Tech & Behavioral 章節
  • 再做一次 mock interview
  • 繼續以紙筆練習題目(模擬白板環境)
  • 找好電話面試需要的耳機或視訊鏡頭
  • 重新閱讀演算法思路章節(Algorithm Approaches,第 67 頁)
  • 重新閱讀 Big O 章節(第 38 頁)

面試前一天#

  • 再做一次 final mock interview
  • 複習 interview prep grid 中的每一個故事
  • 繼續練習題目
  • 複習 Powers of 2 表格(第 61 頁),若是電話面試則印出來備用

面試當天#

  • 早起,吃頓好早餐,準時抵達
  • 自信,但不要傲慢(Be Confident, Not Cocky!)
  • 記得大聲思考,讓面試官看到你的解題過程
  • 複習自己的錯題清單

面試後#

  • 寄感謝信(Thank You note)給 recruiter
  • 記得:卡關和掙扎是正常的!
  • 若沒有 offer,詢問何時可以再申請,不要放棄
  • 若拿到 offer:恭喜!你的努力有了回報!