行為面試模擬題庫
範圍 — 二十五道經典行為面試題,供模擬練習使用。每題都附上入門級(L3/應屆畢業生)的完整範例回答、面試官可能的追問,以及這個回答為什麼得分。評分標準、回答模式與故事庫的建立方法放在兩份公司指南裡;這份文件是練習題組。 另見:googleyness.md — Google 這一輪評什麼,以及「釐清 → 選項 → 決定 → 追蹤」的回答模式;amazon_leadership_principles.md — 每道題對應的十六條原則。
1. 如何進行一場模擬面試
- 挑三到五題,從下方索引中選,並混合不同主題。真實的一輪面試會在 45 分鐘內問四到六題。
- 請夥伴把題目唸出來,或自己唸完後開始計時。先不要看範例回答。
- 用兩到三分鐘回答,講你自己的故事。超過三分鐘,代表情境講太長了。
- 接受追問。 夥伴從該題的追問清單中挑兩題,並一直問「為什麼?」,直到故事講不出更多細節。
- 評分,用下面的表格;然後再讀範例回答,記下一件它做到、而你沒做到的事。
| 評等 | 回答展現了什麼 |
|---|---|
| 強 | 第一人稱、具體行動、你權衡過的取捨、結果有數字、教訓之後有再用上 |
| 可接受 | 故事清楚,但行動單薄,或結果只是「進行得很順利」 |
| 弱 | 大多是「我們」、用假設性的回答回應過往行為題,或沒有反思 |
重點 — 範例回答示範的是結構,不是要你背下來的故事。面試官會追問只有親身經歷才會知道的細節,所以借來的故事在第二個「為什麼?」就會垮掉。
2. 題目索引
| # | 題目 | Google 特質 | Amazon 原則 |
|---|---|---|---|
| 1 | 請介紹你自己 | 動機 | — |
| 2 | 為什麼想來這間公司? | 動機 | Customer Obsession |
| 3 | 一個讓你自豪的專案 | 動機 | Deliver Results |
| 4 | 和主管意見不合 | 挑戰現狀 | Have Backbone; Disagree and Commit |
| 5 | 難相處的人 | 協作 | Earn Trust |
| 6 | 隊友沒有交付 | 協作 | Ownership |
| 7 | 一次失敗 | 回饋與成長 | Learn and Be Curious |
| 8 | 影響到別人的錯誤 | 做對的事 | Earn Trust |
| 9 | 嚴厲的回饋 | 重視回饋 | Earn Trust |
| 10 | 錯過的期限 | 做對的事 | Deliver Results |
| 11 | 需求不明確 | 在模糊中前進 | Bias for Action |
| 12 | 資料不足下的決定 | 崇尚行動 | Are Right, A Lot |
| 13 | 互相衝突的優先順序 | 在模糊中前進 | Deliver Results |
| 14 | 快速學會新東西 | 回饋與成長 | Learn and Be Curious |
| 15 | 超出職責範圍 | 自發型領導 | Ownership |
| 16 | 追到根因的難題 | 崇尚行動 | Dive Deep |
| 17 | 緊迫的期限 | 崇尚行動 | Deliver Results |
| 18 | 拉高標準 | 做對的事 | Insist on the Highest Standards |
| 19 | 簡化某件事 | 挑戰現狀 | Invent and Simplify |
| 20 | 為使用者多做一步 | 使用者優先 | Customer Obsession |
| 21 | 準時上線 vs 把事做對 | 做對的事 | Insist on the Highest Standards |
| 22 | 沒有職權的領導 | 自發型領導 | Earn Trust |
| 23 | 幫助別人成長 | 自發型領導 | Hire and Develop the Best |
| 24 | 假設題:被要求上線還沒準備好的東西 | 做對的事 | Have Backbone; Disagree and Commit |
| 25 | 假設題:兩位資深工程師意見相左 | 在模糊中前進 | Earn Trust |
3. 開場題
大多數面試以這幾題開場。它們不太針對某項特質評分,而是建立面試官的第一印象,並給他們可以追問的話題。
Q1. 請介紹你自己
考察 — Google:動機 · Amazon:不直接對應;它為後面的題目埋下話題
範例回答
我是資訊工程系大四學生。我做過的東西大多在後端:去年暑假我在一個支付團隊實習,把一份對帳報表從每晚批次改成每小時執行,讓財務等數字的時間從一天縮短到一小時。在那之前,我當了兩學期資料結構課的助教,在那裡學會用三種不同方式解釋同一個概念,直到對方聽懂為止。課外我參與一個開源的 Python linter,有六個 pull request 被合併,大多是新的規則和它們的測試。接下來我想找一個團隊,能做很多人依賴的系統,並且固定得到比我更強的工程師的 code review。
要演練的追問
- 對帳報表那次修改,最難的部分是什麼?
- 為什麼選後端而不是前端?
- 當助教讓你寫程式的方式有什麼改變?
為什麼得分 — 九十秒內講完,現在 → 過去 → 未來,每一句都是面試官可以接著追問的鉤子。講的是成果,不是職稱。
Q2. 為什麼想來這間公司?
考察 — Google:動機 · Amazon:Customer Obsession
範例回答
兩個理由,都和工作本身有關。第一是規模:實習時我最喜歡的問題,是那些因為要跑幾百萬次、所以小小的低效率也很重要的問題,而在這裡那是常態而不是例外。第二是我從外面看到的工程文化——設計文件、每個變更都有 code review,以及不究責地寫事故報告的習慣。我讀過去年一次儲存系統中斷的公開事後檢討,那是我第一次看到一個團隊把失敗解釋得那麼坦白。我想在職涯早期就在這樣的環境裡學習,而我習慣為自己的修改寫測試和文件,應該很適合這裡。
要演練的追問
- 你最想加入哪個團隊或產品?為什麼?
- 什麼情況會讓你一年後離開?
- 關於我們怎麼開發軟體,有什麼是你知道而大多數候選人不知道的?
為什麼得分 — 理由具體、和工作相關,並連結到候選人已經做過的事。完全沒提福利、名聲或品牌。
Q3. 請說說一個讓你自豪的專案
考察 — Google:動機 · Amazon:Deliver Results、Ownership
範例回答
Situation(情境) — 在作業系統課上,三人一組要做一個小型檔案系統。大多數組別通過測試就停了。
Task(任務) — 我負責區塊配置器和當機復原路徑,這是大多數組別略過的部分,因為測試幾乎沒涵蓋到。
Action(行動) — 我寫了一個測試工具,在寫入過程中的隨機時間點砍掉程序,再檢查磁碟映像是否一致。第一次執行時,200 次試驗中有 14 次映像損毀。我追查到原因是先寫 inode 再寫資料區塊,於是調換寫入順序,並為 metadata 加了一個簡單的日誌(journal)。每次修改後我都重跑測試工具,並在 README 裡維護一張失敗次數表,讓隊友看得到趨勢。
Result(結果) — 最終版本通過了全部 1,000 次試驗。教授把我們的測試工具當作下一屆課程的參考。我自豪是因為沒人要求我做:成績不取決於它,而且那是我第一次針對失敗而不是針對功能做測試。
要演練的追問
- 為什麼先寫 inode 會讓映像損毀?
- 現在重做的話,你會做什麼不同的事?
- 你和兩位隊友怎麼分工?
為什麼得分 — 展現了超越成績的當責、可量測的前後對比,以及面試官可以深挖的技術深度。候選人也說出為什麼自豪,那才是這題真正在問的。
4. 協作與衝突
Q4. 請說說你曾經和主管意見不合的經驗
考察 — Google:挑戰現狀 · Amazon:Have Backbone; Disagree and Commit
範例回答
Situation(情境) — 實習時,主管要我的專案(一個內部管理頁面)加一個 CSV 匯出按鈕,把資料表的每一列都拉出來。
Task(任務) — 這個功能由我開發,而我認為資料表變大後,拉出所有資料列會逾時。
Action(行動) — 我沒有空泛地爭論,而是去量測。我把一份正式環境資料的副本載入 staging,測量查詢時間:目前 200 萬列要 40 秒,而請求上限是 30 秒。我在一對一會議中帶著數字和兩個選項:分頁匯出,或用背景工作把檔案寄出。主管點出一件我沒想到的事——使用者只需要最近 30 天的資料。所以我們決定做依日期篩選的匯出,比我的兩個選項都簡單。
Result(結果) — 一週內上線,回應時間在兩秒以內。我學到在意見分歧時,要同時帶著資料和一個開放的問題;主管有我不知道的脈絡,最好的答案來自兩者的結合。
要演練的追問
- 如果主管說「照原樣上線」,你會怎麼做?
- 你怎麼提出來,又不讓它聽起來像是在拒絕?
- 有什麼是你判斷錯的嗎?
為什麼得分 — 異議有量測數據支持,提出時帶著選項而不是直接否決,而且候選人把更好的點子歸功於主管。這是有骨氣但不自負。
Q5. 請說說你曾經和難相處的人共事的經驗
考察 — Google:協作 · Amazon:Earn Trust
範例回答
Situation(情境) — 在一門為期一學期的軟體工程專題中,有位隊友會拒絕我們大多數人開的 pull request,常常只留一句「我不會這樣寫」。
Task(任務) — 我是開最多 pull request 的人,而我們的速度已經掉到一週只合併兩個變更。
Action(行動) — 我沒有在 review 討論串裡回覆,而是約他喝咖啡。原來他在之前的課上曾因為建置壞掉被責怪,很怕再發生一次。我提議把他在意的標準寫下來——每個新函式都要有測試、handler 不能直接呼叫資料庫——做成 repo 裡的一份簡短檢查清單,並加一個在每個 pull request 上跑測試的 CI 工作。我也請他在下一個功能和我結對程式設計,讓他看到我的工作方式。
Result(結果) — review 意見從「我不會這樣寫」變成對照清單的具體評論,下一週我們合併了九個變更。他成了我們最有幫助的審查者。我學到「難相處」的行為通常有原因,當面問清楚比在留言裡對抗快得多。
要演練的追問
- 如果喝咖啡沒用,你會怎麼做?
- 你有找老師或其他人介入嗎?
- 你自己的 pull request 需要改變什麼?
為什麼得分 — 候選人先找對方的理由,把個人摩擦轉成共同的流程,並交代了之後的關係。對方不是故事裡的反派。
Q6. 請說說你曾經遇到隊友沒有盡到本分的經驗
考察 — Google:協作 · Amazon:Ownership、Earn Trust
範例回答
Situation(情境) — 在一個為期四週、類似黑客松的課程專案中,我們四人裡有一位到第二週結束都還沒推過任何程式碼。
Task(任務) — 我負責協調看板,而他負責的通知服務卡住了我們的展示。
Action(行動) — 我私下傳訊息給他,而不是在站立會議上提出來。他說他每週要打工二十小時,低估了這個任務。我們重新分工:他保留電子郵件範本,可以用零碎時間完成;我接手需要長時間專注的佇列邏輯。我更新了看板讓團隊看到新的分工,但沒有向大家解釋他的個人狀況。我也把我們的進度確認改到晚上,配合他有空的時間。
Result(結果) — 服務在展示前三天完成,並由他上台展示。我學到在假設是不夠努力之前,先問是什麼擋住了對方,然後修正計畫而不是修理人。
要演練的追問
- 到什麼程度你會去找老師?
- 你多承擔工作,其他隊友有什麼感覺?
- 如果他完全沒回應,你會怎麼做?
為什麼得分 — 先私下再公開、具體的重新規劃、對隊友狀況保持謹慎,並且對結果負責而不是追究責任。
5. 失敗、錯誤與回饋
Q7. 請說說你曾經失敗的經驗
考察 — Google:回饋與成長 · Amazon:Learn and Be Curious、Earn Trust
範例回答
Situation(情境) — 大二時,我帶一個三人小組參加校內 app 競賽,做一個讀書會配對 app。
Task(任務) — 範圍和時程是我定的,所以計畫是我的。
Action(行動) — 我規劃了八個功能,結果八週中的前五週,我們把每個功能都做到一半。直到第六週,我都沒請任何一位學生試用過。等到我們終於測試時,五位受試學生只在乎一件事——找到同一個課程班級的人——而那個功能是完成度最低的。
Result(結果) — 我們沒有進前十名,評審的回饋和學生的一樣:做太多,沒有一個做完。我改變的是:之後的每個專案,我都在第二週結束前把東西放到使用者面前,並把範圍砍到他們會用的部分。實習時,我在第六天就把第一版管理頁面展示給兩位使用者,其中一則意見讓整個畫面從計畫中刪掉。
要演練的追問
- 為什麼沒有更早找使用者測試?
- 隊友對結果有什麼反應?
- 回頭看,你會砍掉什麼?
為什麼得分 — 真實的失敗、真實的代價,由候選人承擔而不是怪環境,還有之後的例子證明教訓有內化。它不是包裝過的優點。
Q8. 請說說一個影響到其他人的錯誤
考察 — Google:做對的事 · Amazon:Earn Trust、Ownership
範例回答
Situation(情境) — 實習時,我寫了一個資料庫 migration,新增一個帶預設值的欄位。
Task(任務) — 這個變更是我的,而且已經通過 code review。
Action(行動) — 它在 staging 執行時鎖住資料表四分鐘,另一個團隊的整合測試在那段時間內失敗了。我看到他們的頻道一片紅,發現時間和我的 migration 吻合。十分鐘內我就在他們的頻道發文:我跑了什麼、什麼時候跑的,以及這就是原因。我先回滾,再把它改寫成三個步驟——先新增不帶預設值的欄位、分批回填資料、最後才設定預設值——並請團隊的資料庫專家審查。我也在 migration 檢查清單裡加了一行,關於大型資料表上的預設值。
Result(結果) — 改寫後的 migration 在正式環境執行時沒有鎖表。另一個團隊感謝我在他們花時間除錯前就告訴他們。我學到快速承認錯誤,對所有人來說都比爭論是誰的錯成本更低。
要演練的追問
- 為什麼 code review 沒抓到?
- 在別的團隊頻道發文,你有什麼感覺?
- 檢查清單上那一行寫了什麼?
為什麼得分 — 快速而具體的揭露、修正加上防止重演的機制,而且沒有把責任推給核准的審查者。
Q9. 請說說你收過最嚴厲的回饋
考察 — Google:重視回饋 · Amazon:Earn Trust、Learn and Be Curious
範例回答
Situation(情境) — 實習進行到一半時,我的 mentor 說我的 pull request 很難審:平均大約 600 行,而且把重構和新行為混在一起。
Task(任務) — 我希望我的 review 能很快,而他每個都要花一小時。
Action(行動) — 我的第一個反應是這些修改本來就屬於一起,但我請他給我看一個他認為應該拆開的例子。從他的角度看,問題很明顯:他分不出哪幾行改變了行為。從那之後,我把每個變更拆成只做重構的 pull request 和改變行為的 pull request,每個都控制在大約 200 行以內。我也開始在每個描述的開頭寫兩行「請看這裡」的說明。
Result(結果) — 我的 review 週轉時間從大約兩天變成當天完成,實習結束時,mentor 說可審查性是我進步最多的地方。到現在每個專案我都還是把重構和行為變更分開。
要演練的追問
- 老實說,你的第一個反應是什麼?
- 你有收過你不同意的回饋嗎?
- 你現在怎麼請別人給你回饋?
為什麼得分 — 回饋具體而且有點刺痛,候選人承認自己的第一反應,改變具體且有量測。最後以這個習慣仍在使用作結。
Q10. 請說說你曾經錯過期限的經驗
考察 — Google:做對的事 · Amazon:Deliver Results、Earn Trust
範例回答
Situation(情境) — 實習時,我有兩週時間為一個內部文件工具加入搜尋功能。
Task(任務) — 估計是我做的,而且我說過兩週很充裕。
Action(行動) — 第一週結束時,我知道需要三週:搜尋函式庫不支援這個工具的存取控制,所以我得自己過濾結果。我當天就告訴主管,而不是等到期限,並附上原因和兩個選項——兩週內上線不含受限頁面的搜尋,或三週內上線完整搜尋。我們選了第一個,讓使用者準時拿到大部分的價值。我把受限頁面的部分開成後續工作,並在第三週完成。
Result(結果) — 搜尋在原定日期上線,涵蓋 90% 的頁面,其餘一週後補上。我沒達成自己的估計,但沒有人因此感到意外。從那之後,我會在進行到一半時用實際狀況檢查估計,一旦有變動就當天說出來。
要演練的追問
- 為什麼估計會錯?
- 主管有什麼反應?
- 你現在怎麼做才能估得更準?
為什麼得分 — 及早預警、提出選項而不是藉口、部分交付仍服務了使用者,而且改變了習慣。候選人承擔了估計的責任。
6. 模糊情境與決策
Q11. 請說說你曾經遇到需求不明確的經驗
考察 — Google:在模糊中前進 · Amazon:Bias for Action、Customer Obsession
範例回答
Situation(情境) — 擔任助教時,教授請我「做個東西幫學生練習遞迴」。
Task(任務) — 需求就只有這樣,而距離遞迴單元開始還有三週。
Action(行動) — 我寫下三件我不知道的事:誰在苦戰、他們卡在哪裡、他們會用什麼形式。前兩件用我手上已有的資料回答——去年的考試成績顯示終止條件(base case)的題目最弱。第三件我在 office hours 問了五位學生,其中四位說想要有即時回饋的短練習,而不是影片。所以我先做最小的版本:十題自動批改的終止條件練習,一週後就寄給教授確認方向,再繼續做更多。
Result(結果) — 教授把這組練習加進課程,我把它擴充到 30 題。期中考終止條件題的答對率從 58% 升到 71%。我學到把一個模糊的請求轉成一張未知清單,並先解決最重要的那一項。
要演練的追問
- 為什麼一週後就確認,而不是三週後?
- 如果教授不喜歡這個方向,你會怎麼做?
- 你怎麼知道進步是這些練習造成的?
為什麼得分 — 點出未知、用資料和使用者降低不確定性、先交付小版本,並及早確認。最後一個追問考驗你對因果關係是否誠實,要先準備好。
Q12. 請說說你在資料不足時做出的決定
考察 — Google:崇尚行動 · Amazon:Are Right, A Lot、Bias for Action
範例回答
Situation(情境) — 一次週末黑客松,進行到第六小時,我們得為原型在託管資料庫和本機資料庫之間做選擇。
Task(任務) — 後端是我負責的,所以由我決定,而我們只剩 18 小時。
Action(行動) — 我不知道託管服務的免費方案在展示時撐不撐得住,也沒時間做負載測試。我問自己:哪個選擇比較容易反悔?本機儲存之後可以透過一個介面換成託管服務;反過來則要重寫查詢。所以我選擇本機儲存並包在一層薄介面後面,並把假設告訴團隊:只有展示需要多台裝置時才切換。
Result(結果) — 展示在一台筆電上執行,從來不需要切換,我們省下大約三小時的設定時間,投入到評審稱讚的那個功能上。現在只要資料不足、時間又緊,我都會問「哪個選擇最容易反悔?」
要演練的追問
- 什麼情況會讓你選擇託管服務?
- 什麼時候等更多資料才是對的選擇?
- 你怎麼溝通這個假設?
為什麼得分 — 用有理據的框架(可逆性)而不是猜測、把假設說出來,而且結果和決定有直接關聯。
Q13. 請說說你曾經面對互相衝突的優先順序的經驗
考察 — Google:在模糊中前進 · Amazon:Deliver Results
範例回答
Situation(情境) — 實習的最後一個月,主管要我完成主要專案,而另一個團隊的負責人請我幫他們修一個 bug,出在我先前改過的函式庫裡。
Task(任務) — 兩個請求都合理,而我無法在同一週把兩件事都做完整。
Action(行動) — 我不想默默地自己選,所以寫下每個請求需要什麼和它的期限。另一個團隊的 bug 會在四天後卡住他們的發布;我的專案三週後到期。我估計那個 bug 要一天。我把兩件事都帶去找主管,提議先花一天修 bug,再回到我的專案,並問他是否有不同看法。他同意了,並親自告知另一位負責人。
Result(結果) — bug 修正花了一天半上線,他們的發布準時出去;我的專案在實習結束前兩天完成。我學到要把取捨攤給擁有優先順序決定權的人看,而不是自己一個人決定。
要演練的追問
- 如果主管說不行呢?
- 沒有人可以問的時候,你怎麼排優先順序?
- 多出來的半天讓你付出了什麼代價?
為什麼得分 — 標準清楚(緊急程度、成本)、提出提案而不是丟出沒有答案的問題,並由對的人做決定。候選人也承認估計多了半天。
Q14. 請說說你曾經必須快速學會某件事的經驗
考察 — Google:回饋與成長 · Amazon:Learn and Be Curious
範例回答
Situation(情境) — 實習第二天,我被要求修一個用 Go 寫的服務裡的慢頁面。我從沒寫過 Go。
Task(任務) — 預期一週內完成修正。
Action(行動) — 我沒有試圖先學完整個語言。我花一個晚上讀官方教學,只讀到 goroutine 為止。接著我把那個頁面在服務中的程式路徑從頭讀到尾,把每個不熟悉的寫法記成一個問題。我把問題集中起來,用一次十五分鐘的時間請教 mentor,而不是整天打擾他。結果慢的原因是一個迴圈對每個項目都呼叫一次資料庫,所以我把它改寫成一次批次查詢,並加了一個效能基準測試。
Result(結果) — 頁面從 3.2 秒降到 0.4 秒,修正在第五天上線。實習後期學 Terraform 時,我也用同樣的方法——只學夠用的、讀真實的程式碼、把問題集中起來問。
要演練的追問
- 你怎麼判斷學到什麼程度算「夠用」?
- 你一開始弄錯了什麼?
- 哪個 Go 慣用寫法最讓你意外?
為什麼得分 — 有意識的學習策略、尊重 mentor 的時間、有量測的結果,以及這個方法可以轉移的證據。
7. 當責與成果
Q15. 請說說你曾經承擔職責以外工作的經驗
考察 — Google:自發型領導 · Amazon:Ownership
範例回答
Situation(情境) — 實習期間,新來的實習生頭兩天大多花在讓開發環境能建置成功;設定指南已經過時一年了。
Task(任務) — 這份指南沒有人負責。我剛走過一遍,所以知道每一個壞掉的步驟。
Action(行動) — 因為這不是我的專案,我先問主管能不能花一天處理。我根據自己的筆記重寫指南,用一個設定腳本取代六個手動步驟,並請下週加入的兩位實習生照著做,我在旁邊看但不幫忙。兩人都卡在同一個步驟,我把它修好。接著我把腳本加進 CI,讓設定一旦壞掉就會失敗,並找到一位正職工程師同意在我離開後接手。
Result(結果) — 下一梯實習生的設定時間從大約兩天降到兩小時以內。交接和腳本一樣重要:這份指南到現在還有人維護。
要演練的追問
- 為什麼要先徵求同意?
- 你怎麼找到接手的人?
- 有什麼是你沒做到的?
為什麼得分 — 看到缺口,在主管支持下行動,用真實使用者測試,用 CI 守住成果,然後交接出去。當責也包含交接。
Q16. 請說說你追查過最難的 bug
考察 — Google:崇尚行動 · Amazon:Dive Deep
範例回答
Situation(情境) — 在我參與的開源 linter 中,有位使用者回報某條規則在他們的程式碼庫裡大約每 50 個檔案就會當掉一次,但他們不能分享程式碼。
Task(任務) — 那條規則是我寫的,所以我接下了這個 issue。
Action(行動) — 我在我們所有的測試檔案上都重現不出來。我請使用者用除錯旗標執行 linter,只傳堆疊追蹤給我,結果指向這條規則處理 decorator 的部分。我寫了一個小型 fuzzer,隨機產生帶 decorator 的函式並逐一執行規則;十分鐘內就找到一個當機案例:decorator 本身是一個帶關鍵字參數的呼叫。我的程式碼假設每個 decorator 都是一個名稱。我修好它,把 fuzzer 找到的失敗案例加成回歸測試,並對修正版跑了一小時的 fuzzer。
Result(結果) — 使用者確認他們所有檔案都不再當掉。維護者把這個 fuzzer 用在另外兩條規則上,又找到一個 bug。我學到看不到輸入時,可以自己產生輸入。
要演練的追問
- 在用 fuzzer 之前你試過什麼?
- 沒有對方的程式碼,你怎麼讓使用者持續配合?
- 為什麼原本的測試沒抓到?
為什麼得分 — 從症狀到根因有條理的路徑、在真實限制下有創意的技巧、回歸測試,以及超出這一個 bug 的影響。
Q17. 請說說你曾經在緊迫期限下交付的經驗
考察 — Google:崇尚行動 · Amazon:Deliver Results、Bias for Action
範例回答
Situation(情境) — 畢業專題要向外部贊助者展示的前兩天,我們使用的第三方地圖 API 更改了免費方案,我們的地圖載入不出來。
Task(任務) — 前端是我負責的,而地圖是展示的核心。
Action(行動) — 我列出贊助者真正需要看到的東西:三個地點之間的路線,而不是一個完全互動的地圖。這讓問題少了一半。我花兩小時用我們的資料測試兩個開源地圖函式庫,選了能正確畫出路線的那個,並告訴團隊我會在隔天晚上前讓地圖能運作,額外功能——搜尋、縮放預設值——則看時間允許。我先完成核心路徑,再在展示當天早上和團隊做一次完整彩排。
Result(結果) — 展示用新地圖順利進行;搜尋功能沒趕上,我們也照實說了。贊助者決定再合作一學期。我學到在延長工時之前,先砍到觀眾需要的部分。
要演練的追問
- 你怎麼決定要砍什麼?
- 用新的函式庫你承擔了什麼風險?
- 團隊怎麼分配剩下的工作?
為什麼得分 — 依使用者需求砍範圍、限時評估、誠實的承諾,並坦白說出沒上線的部分。
Q18. 請說說你曾經不接受「夠好就好」的經驗
考察 — Google:做對的事 · Amazon:Insist on the Highest Standards
範例回答
Situation(情境) — 實習時,我完成了一個功能,通過所有測試和審查,但我注意到我們的測試只涵蓋它所用的貨幣轉換的正常路徑。
Task(任務) — 依團隊的定義,這個功能已經完成,而我還有另一個任務在等。
Action(行動) — 我花了半天寫邊界情況的測試:零金額、負數退款,以及沒有輔幣單位的貨幣,例如日圓。日圓的測試失敗了:我們對每種貨幣都乘以 100,所以一筆 ¥1,000 的退款會被記成 ¥100,000。我修正轉換邏輯,改從一張表讀取每種貨幣的輔幣位數,並告訴主管另一個任務為什麼會晚半天。
Result(結果) — 修正在功能開放給日本使用者之前上線。主管請我把邊界情況清單整理成範本,供其他處理金額的程式使用。我給自己的標準是:測試應該試圖弄壞程式,而不只是確認它能動。
要演練的追問
- 你怎麼判斷額外的測試值不值得花時間?
- 什麼時候你接受了「夠好就好」,而且是對的?
- 審查者有什麼反應?
為什麼得分 — 具體地把標準拉高到團隊的完成定義之上、找到代價明確的真實缺陷,並產出可重用的成果。要準備第二個追問:高標準也包括知道什麼時候該停。
Q19. 請說說你曾經簡化流程的經驗
考察 — Google:挑戰現狀 · Amazon:Invent and Simplify、Frugality
範例回答
Situation(情境) — 擔任助教時,批改 120 位學生的程式作業,四位助教每週要花大約 12 小時,大多是手動執行每一份作業。
Task(任務) — 沒有人要我改變它,但我就是花那些時間的四個人之一。
Action(行動) — 我向助教長提議做一個自動批改工具,先在單一作業上試行一週,這樣就算失敗代價也很小。我寫了一個腳本,在容器裡用我們的測試案例執行每份作業並產生分數表,同時保留一個手動步驟處理程式風格和評語,因為那是測試判斷不了的。我把第一次的輸出給其他助教看,問他們缺什麼;他們希望附上失敗測試的輸入,讓學生知道為什麼錯。
Result(結果) — 我們四人每週的批改時間降到大約 4 小時,學生拿到成績的時間從七天變成兩天。之後每學期這門課都使用這個自動批改工具。我學到提議改變時,要以低成本的試行提出,而不是一次大轉換。
要演練的追問
- 你刻意保留了哪些手動步驟?
- 你怎麼說服助教長?
- 試行時出了什麼問題?
為什麼得分 — 它減少工作而不是增加流程,從低成本、可逆的試行開始,在重要的地方保留人的判斷,並量化了節省的時間。
8. 使用者與誠信
Q20. 請說說你曾經為使用者多做一步的經驗
考察 — Google:使用者優先 · Amazon:Customer Obsession
範例回答
Situation(情境) — 在學校圖書館做 IT 支援的打工時,好幾位學生抱怨在手機和筆電之間切換時,研究室預約網站會把他們登出。
Task(任務) — 我的工作是登錄工單和重設密碼,不是修預約網站。
Action(行動) — 我注意到抱怨集中在考試週,那時大家會用好幾台裝置預約。我用一份共享試算表追蹤了兩週——31 張工單——發現它們全都來自在幾分鐘內用兩台裝置預約的使用者。我把這些寫成報告給圖書館的開發者,附上重現步驟和試算表;同時在預約頁面上加了一則簡短說明,請學生在同一台裝置上完成預約。
Result(結果) — 開發者找到 session 衝突,在下一個考試期之前修好;相關工單降到零。我學到只要有人把支援工單當成整體來讀,它就是使用者研究。
要演練的追問
- 你怎麼引起開發者的注意?
- 為什麼先加臨時說明,而不是等修正?
- 如果開發者拒絕,你會怎麼做?
為什麼得分 — 說得出使用者是誰,用候選人手上已有的資料量化問題,現在給使用者權宜之計、之後有正式修正,而且超出職責但沒有越權。
Q21. 請說說你曾經必須在準時上線和把事做對之間抉擇的經驗
考察 — Google:做對的事 · Amazon:Insist on the Highest Standards、Earn Trust
範例回答
Situation(情境) — 一個內部工具上線的前一天,我發現只要拿掉某個查詢參數,它的匯出端點就會回傳所有團隊的資料,而不只是使用者自己團隊的。
Task(任務) — 那個端點不是我寫的,也沒有其他人注意到,而上線消息已經公告給 200 位使用者。
Action(行動) — 我重現了兩次確認無誤,然後在一小時內同時告訴主管和端點的作者,附上能顯示資料外洩的確切請求。我沒有把它貼到公開頻道。我提出兩個選項:延後一天上線,或上線時先停用匯出按鈕。作者當天下午就修好了權限檢查,我寫了一個不帶該參數發送請求的測試。我們先停用匯出上線,隔天早上測試通過後再開啟。
Result(結果) — 工具準時上線,沒有任何資料外洩。主管請我把這個測試加進團隊每個新端點的審查清單。我學到安靜而快速地提出問題、並帶著解法,能讓大家很容易做對的事。
要演練的追問
- 為什麼不自己修?
- 為什麼不告訴整個團隊?
- 如果主管說照原樣上線呢?
為什麼得分 — 及早向對的人提出令人不舒服的事實,附上重現方式和選項。結果同時保護了使用者和上線時程,候選人也把修正歸功於作者。
9. 領導與培養他人
Q22. 請說說你曾經在不是負責人的情況下帶領團隊的經驗
考察 — Google:自發型領導 · Amazon:Earn Trust、Ownership
範例回答
Situation(情境) — 我們五人的畢業專題小組有一位名義上的組長,技術很強但很少主持會議;三週後我們還沒有共同的計畫,兩個人做出了重複的登入頁面。
Task(任務) — 我不是組長,也不想削弱他的角色。
Action(行動) — 我先找他談,提議由我主持一場規劃會議,由他報告架構。他同意了。會議中我請每個人列出自己正在做的事,放到同一個看板上,結果找到重複的部分,以及兩個沒有人負責的功能。我建議每週兩次、每次十五分鐘的站立會議,自願主持前兩次,之後輪流主持。
Result(結果) — 我們砍掉重複的工作,在期限前一週完成所有規劃的功能,第一個月之後組長就自己主持站立會議了。我學到沒有職權的領導,往往是把舞台讓給別人,同時補上他們留下的空缺。
要演練的追問
- 為什麼先去找組長?
- 有人抗拒站立會議時你怎麼做?
- 如果組長拒絕,你會怎麼做?
為什麼得分 — 領導是補上缺口,在正式負責人的支持下進行而不是繞過他,最後再交還出去。這正是 L3 標準要求的自發型領導訊號。
Q23. 請說說你曾經幫助別人成功的經驗
考察 — Google:自發型領導、協作 · Amazon:Hire and Develop the Best
範例回答
Situation(情境) — 實習時,一位新實習生在我之後三週加入,被分派到一個 bug,出在我剛學會的那部分程式碼。
Task(任務) — 我不是她的 mentor,但我熟悉那段程式碼,而她的 mentor 那週在休假。
Action(行動) — 她報到第一天下午,我主動撥出一小時。我沒有直接告訴她怎麼修,而是帶她走一遍我會怎麼找:log 在哪裡、怎麼在本機執行服務、我怎麼追蹤請求的路徑。然後我讓她自己操作、我在旁邊看,只有在她卡住超過十分鐘時才介入。我也分享了我為自己寫的程式碼筆記。
Result(結果) — 她兩天內自己修好了 bug,並在那週開出她的第一個 pull request。兩週後,她用同一份筆記回答下一位實習生的問題。我學到教人怎麼找答案,比直接給答案影響得更遠。
要演練的追問
- 你怎麼和自己的工作取得平衡?
- 當對方只想要答案、不想要方法時,你怎麼做?
- 你怎麼知道是你的幫忙造成了差別?
為什麼得分 — 沒人要求就主動幫忙、有意識的教學方式,以及幫助產生倍增效果的證據。功勞留給真正做事的人。
10. 假設情境題
Google 比 Amazon 更常問這類題目。使用 Google 指南中的模式:釐清、選項、決定、追蹤——如果有真實故事,最後再用它來佐證。
Q24. 如果主管要你上線一個你認為還沒準備好的東西,你會怎麼做?
考察 — Google:做對的事 · Amazon:Have Backbone; Disagree and Commit
範例回答
Clarify(釐清) — 我會先問在這個情況下「還沒準備好」是什麼意思,因為答案會因此不同。它是對使用者的風險——資料遺失、資安、核心流程壞掉——還是品質上的落差,例如細節不夠精緻或測試覆蓋不足?還有,推動這個日期的是什麼:對客戶的承諾,還是內部目標?
Options(選項) — 如果是對使用者的風險,我會帶著證據直說,並提出能安全趕上日期的做法:用 feature flag 先開放給一小群人、砍掉有風險的部分,或延後幾天。如果是品質落差,我會記錄下來,開好後續工作並指派負責人,然後上線。
Decide(決定) — 決定權在主管,但他們應該在掌握事實的情況下做決定。我會用兩三句話把風險寫下來,目的是讓事情清楚,而不是保護自己。
Follow through(追蹤) — 如果我們上線,我就全力投入:上線後盯著指標和錯誤,並第一個回應。實習時我曾在上線前一天提出一個資料外洩的 bug;我們停用匯出功能準時上線,隔天再開啟。
要演練的追問
- 如果主管還是說要上線,而你認為使用者會受到傷害呢?
- 你怎麼表達反對又不傷害關係?
- 什麼時候你會越過主管往上呈報?
為什麼得分 — 它把風險和個人偏好分開,提出尊重日期的選項,決定後全力投入,最後以真實故事作結。要準備第一個追問:你會在哪裡劃下往上呈報的界線,也是答案的一部分。
Q25. 如果兩位資深工程師給你互相衝突的指示,你會怎麼做?
考察 — Google:在模糊中前進、協作 · Amazon:Earn Trust
範例回答
Clarify(釐清) — 我會先確認自己正確理解了兩人的意思,因為衝突常常出在我的轉述,而不是他們的本意。我也會問誰擁有這個決定權——技術主管、我的主管,還是他們其中一位。
Options(選項) — 我可以自己挑一個方向、分別回去找兩人,或把兩種觀點並列、請他們一起決定。自己挑一個有之後白做的風險;分別去找往往只會重演衝突。
Decide(決定) — 我會寫一份簡短的說明,列出兩種做法、我理解的各自取捨,以及我傾向哪一個和原因,在同一個討論串裡寄給兩人,並副本給有決定權的人。這讓分歧變成關於做法本身,而不是我聽哪位資深工程師的。
Follow through(追蹤) — 在他們決定的期間,我會先做兩種做法共通的部分,這樣我不會被卡住。決定之後,我會把它記在設計文件裡,避免再被翻案。實習時我遇過類似的情況,是關於命名慣例,一份五行的比較在一則回覆內就解決了。
要演練的追問
- 如果他們還是無法達成共識呢?
- 如果有決定權的人選了你認為比較差的選項呢?
- 你怎麼避免看起來像在選邊站?
為什麼得分 — 它把衝突當成資訊問題處理,把它交給決策者,等待期間候選人保持產出,並把決定記錄下來。
11. 模擬面試之後
- 數一數「我們」。 任何一個「我們」比「我」多的回答,都要重寫行動那一段。
- 找出數字。 每個結果都應該有一個:節省的時間、錯誤率、使用者數、成績、天數。
- 檢查教訓。 每個故事都應該以你改變了什麼、以及之後某次用上它作結。
- 對應你的故事。 回答完全部 25 題後,你總共應該用了六到十個故事。如果一個故事回答了超過四題,面試會察覺;如果有題目沒有故事可講,那就是要補的缺口。
- 一週後重練表現弱的題目,換一位夥伴,因為熟悉的聽眾會不再問難的追問。