結對程式設計面試:你會遇到什麼以及如何準備
作者 Aaron Cao · 更新於

在結對程式設計面試中,你會與一位工程師一起撰寫真實的程式碼,通常在共用編輯器或你自己的 IDE 中透過螢幕分享進行,任務通常是修正真實程式碼庫裡的一個小功能或錯誤。面試官評估的是協作能力、溝通方式,以及測試等習慣,而不只是你是否完成任務。
結對程式設計面試與程式測驗有什麼不同?
如果你主要是用演算法題準備面試,結對程式設計環節可能會讓你感到陌生。本節說明兩者的差異,以及這會如何改變你的準備方式。簡單來說,你被評估的身分是未來的團隊成員,而不是解題者。
面試通常以三種方式之一進行:以瀏覽器為基礎的共用編輯器、使用你自己的 IDE 並分享螢幕,或是延伸自你已完成的帶回家作業專案。任務通常貼近日常工作,例如新增一條驗證規則、修正一個失敗的測試,或重構一個函式。有些公司會互換角色,讓你在會談中一部分時間擔任負責打字的「駕駛」,另一部分時間擔任負責指引的「領航員」。
面試官會評估哪些重點?
- 釐清問題。你是否在寫程式前確認需求,以及「完成」的標準。
- 邊想邊說。你的搭檔是否不用追問就能跟上你的想法。
- 漸進式推進。是一小步一小步可執行的進度,而不是最後一次丟出一大段變更。
- 測試。你是否有寫或執行測試來證明變更是有效的。
- 閱讀程式碼。你能多快在不是自己寫的程式碼中找到方向。
- 接受意見。你如何回應搭檔提出的提示或不同想法。
白板測驗、帶回家作業與即時演算法題等其他程式面試形式,可以在面試類型總覽中比較。
一場好的結對程式設計面試是什麼樣子?
一位應徵物流新創公司中階職缺的後端工程師,被要求為現有的結帳模組新增一條折扣規則。動手寫程式前,他們先詢問折扣是否可以疊加,以及已經在處理中的訂單該怎麼辦。他們先閱讀現有的測試,為新規則寫了一個會失敗的測試,用最簡單的變更讓測試通過,接著詢問搭檔這條規則該放在定價類別裡,還是獨立的政策物件中。當面試官提出不同做法時,他們嘗試了那個做法,並解釋其中的取捨。他們沒有完成加分要求,但回饋依然聚焦在他們有多容易合作這件事上。
先釐清需求、先寫測試、進行小幅變更並討論設計,這樣的流程正是大多數結對程式設計面試想要觀察的重點。
該如何準備?SubcueAI 在其中扮演什麼角色?
常見問題
結對程式設計面試時可以查資料嗎?
通常可以,像是查文件或語法,但要先開口詢問。許多面試官希望你像平常工作一樣查資料,更在意你如何運用查到的內容。
結對程式設計面試卡關怎麼辦?
說明你卡在哪裡、已經嘗試過什麼,然後提出一個具體的問題。結對本來就是協作性質,提出好問題也是評估的一部分。
我一定要完成任務嗎?
不一定。有些任務本來就故意設計得比時間允許的更多。乾淨、有測試的進度與清楚的溝通,通常比完成每一項需求更重要。
我會使用哪種程式語言?
這取決於公司。如果任務使用真實的程式碼庫,語言通常是固定的;否則你可能可以自行選擇。請查看邀請內容,不清楚就詢問招募人員。