跳至內容
cookie

學生指南 · 大學倒數第二年的秋季到冬季

軟體工程實習面試

大多數軟體工程實習面試會先進行線上程式測驗,再進行一到兩場現場程式設計面試。每場面試會圍繞一到兩道題目,並有追問,另外也會問一些關於你過往經驗的問題。面試官會看你如何理解問題、找出可行的解法、說明時間與空間複雜度並測試解法;他們也預期會適時給你提示。

各個階段

許多大型公司會先安排線上測驗,也就是在家限時完成的程式測驗。以 Amazon 為例,他們表示實習線上測驗約需 90 分鐘,評估程式設計、技術問題解決能力和 Leadership Principles,其中程式部分約 70 分鐘。接著是視訊面試,你要在工程師觀看並提問的情況下解題。

Meta 的實習面試指南最後更新於 2022 年,當中說明面試分為兩個階段:電話初步面試,以及後續面試。兩個階段的要求相同,每場面試約有 30 到 35 分鐘用來解一到兩道程式題。Google 表示,應徵者可能會被要求完成程式練習;所有應徵者都會依據明確的評分標準接受評估,而且不會有腦筋急轉彎題目。具體安排可能會變動,因此收到面試邀請時,請查看公司的官方頁面。

面試官評分的項目

面試官主要看你如何得出答案。Google 表示,面試官會和答案一樣重視你的思考過程,並會提出追問。Meta 的指南要求你討論解法的 big-O 複雜度、提出釐清問題,也指出有可執行但非最佳的程式碼,勝過只有想法。指南也說,如果你卡住了,可以先從暴力解法開始,再逐步改進;面試官給提示並不是壞事。

實際上,這代表五件事:理解問題(重述問題,詢問邊界情況和輸入大小)、提出正確解法、說明時間與空間複雜度、盡可能改進解法,以及透過手動演算範例和邊界情況來測試。這些過程都需要溝通,因為面試官只能根據你說出來的內容評分。

解題範例:兩數之和

給你一串數字和一個目標值,請回傳兩個相加等於目標值的數字所在位置。先提出問題:答案可能不只一組嗎?同一個數字可以使用兩次嗎?數列有排序嗎?數列可能有多長?接著說出暴力解法:檢查每一組配對。這個方法是正確的,但對長度為 n 的數列來說,所需時間與 n 的平方成正比。

接著改進解法。逐一處理數列中的數字時,用雜湊表記錄每個已看過的數字及其位置;每遇到一個新數字,就檢查「目標值減去這個數字」是否已在雜湊表中。這樣只需走訪一次,就能找到配對,所需時間與 n 成正比,代價是需要額外使用與 n 成正比的記憶體。最後,對一個小範例、沒有答案的數列,以及含有重複數字的數列大聲測試,並說明如果數列已排序,你會怎麼調整(從兩端使用雙指標,不需額外記憶體)。

要熟悉的主題,以及該使用哪種程式語言

實習面試的題目大多取自資料結構與演算法入門課程:陣列與字串、雜湊表與集合、堆疊與佇列、鏈結串列、樹與圖,以及廣度優先搜尋和深度優先搜尋、排序與二分搜尋、遞迴和簡單的動態規劃。了解每種操作所需的時間與空間,和了解資料結構本身同樣重要。

使用你最熟悉的程式語言。Meta 的實習指南建議使用你最自在的語言;Amazon 對測驗的建議則是複習並練習你打算使用的語言。Python 很常見,因為程式碼簡短,但熟練程度比選哪種語言更重要。

邊想邊說,以及面試中的 AI

即使你想說的是「我還不確定」,也要說出自己的想法,因為沉默會讓面試官無從評分,也無法幫助你。收到提示時就接受,並說明提示如何改變你的解題方法。獨自練習這件事會覺得有點奇怪,因此和朋友一起練習,或錄下自己解題並講解的過程,會很有幫助。

各公司的 AI 使用規定不同,所以面試前要先確認。Google 表示面試時不允許使用 AI 工具;Meta 則表示,現在許多面試會在面試環境中內建 AI 助理,並預期應徵者使用。如果不允許使用卻使用 AI,就是作弊;如果面試本身包含 AI,如何檢查並修正 AI 提供的內容,也會是評估的一部分。

行為面試問題

大多數技術面試都會問一些關於你過往經歷的問題:你引以為傲的專案、你費盡心力處理的錯誤,或是你曾與隊友意見不合的時候。Amazon 會依據 Leadership Principles 評估應徵者,這些原則以客戶至上為首要理念,也就是領導者從客戶的需求出發,反向思考。請先閱讀這些原則,並為主要原則準備事例。

有帳戶的話,cookie 的「面試準備」會使用 AI 面試官,針對你指定的工作進行模擬面試。它會一次問一個問題,像真正的面試官一樣根據你的回答追問,並在最後為每個答案撰寫報告。這會使用 credits,並會先顯示預估用量。

查詢資訊

已於 對照以下資訊。規則每年都可能改變;如果這裡的內容與上方頁面有出入,請以那些頁面為準。

常見問題

什麼是線上測驗?

許多公司會在現場面試前安排限時程式測驗,讓你在家完成。Amazon 表示,他們的實習測驗約需 90 分鐘,內容以程式題為主。

程式面試該使用哪種程式語言?

選你最熟悉的那種。Meta 建議使用你最自在的程式語言,Amazon 則建議練習你打算使用的語言,因此熟練程度比選哪種語言更重要。

實習程式題有多難?

通常以大學一年級的資料結構與演算法為基礎:陣列、雜湊表、樹、圖、排序和遞迴,並會追問如何改進或擴充你的解法。

程式面試時卡住了怎麼辦?

說明自己卡在哪裡,先試試暴力解法,再逐步改進,並接受收到的任何提示。Meta 的指南表示,面試官給提示並不是壞事。

程式面試時可以使用 AI 嗎?

視公司而定。Google 表示面試時不允許使用 AI 工具;Meta 則表示,許多面試都內建 AI 助理,並預期應徵者使用。