結對程式設計面試:你會遇到什麼以及如何準備

作者 Aaron Cao · 更新於

結對程式設計面試:你會遇到什麼以及如何準備
在結對程式設計面試中,你會與一位工程師一起撰寫真實的程式碼,通常在共用編輯器或你自己的 IDE 中透過螢幕分享進行,任務通常是修正真實程式碼庫裡的一個小功能或錯誤。面試官評估的是協作能力、溝通方式,以及測試等習慣,而不只是你是否完成任務。

在結對程式設計面試中,你會與一位工程師一起撰寫真實的程式碼,通常在共用編輯器或你自己的 IDE 中透過螢幕分享進行,任務通常是修正真實程式碼庫裡的一個小功能或錯誤。面試官評估的是協作能力、溝通方式,以及測試等習慣,而不只是你是否完成任務。

結對程式設計面試與程式測驗有什麼不同?

如果你主要是用演算法題準備面試,結對程式設計環節可能會讓你感到陌生。本節說明兩者的差異,以及這會如何改變你的準備方式。簡單來說,你被評估的身分是未來的團隊成員,而不是解題者。

面試通常以三種方式之一進行:以瀏覽器為基礎的共用編輯器、使用你自己的 IDE 並分享螢幕,或是延伸自你已完成的帶回家作業專案。任務通常貼近日常工作,例如新增一條驗證規則、修正一個失敗的測試,或重構一個函式。有些公司會互換角色,讓你在會談中一部分時間擔任負責打字的「駕駛」,另一部分時間擔任負責指引的「領航員」。

面試官會評估哪些重點?

  • 釐清問題。你是否在寫程式前確認需求,以及「完成」的標準。
  • 邊想邊說。你的搭檔是否不用追問就能跟上你的想法。
  • 漸進式推進。是一小步一小步可執行的進度,而不是最後一次丟出一大段變更。
  • 測試。你是否有寫或執行測試來證明變更是有效的。
  • 閱讀程式碼。你能多快在不是自己寫的程式碼中找到方向。
  • 接受意見。你如何回應搭檔提出的提示或不同想法。

白板測驗、帶回家作業與即時演算法題等其他程式面試形式,可以在面試類型總覽中比較。

一場好的結對程式設計面試是什麼樣子?

一位應徵物流新創公司中階職缺的後端工程師,被要求為現有的結帳模組新增一條折扣規則。動手寫程式前,他們先詢問折扣是否可以疊加,以及已經在處理中的訂單該怎麼辦。他們先閱讀現有的測試,為新規則寫了一個會失敗的測試,用最簡單的變更讓測試通過,接著詢問搭檔這條規則該放在定價類別裡,還是獨立的政策物件中。當面試官提出不同做法時,他們嘗試了那個做法,並解釋其中的取捨。他們沒有完成加分要求,但回饋依然聚焦在他們有多容易合作這件事上。

先釐清需求、先寫測試、進行小幅變更並討論設計,這樣的流程正是大多數結對程式設計面試想要觀察的重點。

該如何準備?SubcueAI 在其中扮演什麼角色?

找一位朋友,在不熟悉的程式碼庫中一起完成一項小任務,並練習邊做邊講解。如果你會用自己的 IDE,請提前設定好環境:在通話開始前,專案應該能夠建置,測試也應該能夠執行。模擬面試工具能協助你練習對話的部分,例如說明一項設計決策或過去的專案經驗。

關於即時工具,這裡要務實一點。結對程式設計高度仰賴螢幕分享,你分享的一切內容搭檔都看得到;面試官也在即時看著你寫程式。SubcueAI 會在視訊面試的討論環節中,轉錄面試官的內容並草擬回答重點,支援桌面應用程式或瀏覽器擴充功能,通話中不會有機器人加入。程式撰寫本身仍然要靠你自己完成,受監考的環境與公司管理的裝置不在支援範圍內。設定細節請參見教學頁面。

常見問題

結對程式設計面試時可以查資料嗎?

通常可以,像是查文件或語法,但要先開口詢問。許多面試官希望你像平常工作一樣查資料,更在意你如何運用查到的內容。

結對程式設計面試卡關怎麼辦?

說明你卡在哪裡、已經嘗試過什麼,然後提出一個具體的問題。結對本來就是協作性質,提出好問題也是評估的一部分。

我一定要完成任務嗎?

不一定。有些任務本來就故意設計得比時間允許的更多。乾淨、有測試的進度與清楚的溝通,通常比完成每一項需求更重要。

我會使用哪種程式語言?

這取決於公司。如果任務使用真實的程式碼庫,語言通常是固定的;否則你可能可以自行選擇。請查看邀請內容,不清楚就詢問招募人員。

相關問題

← 更多關於 面試類型