拆解軟體工程師面試過程:Onsite interview和實作時要注意什麼?

拆解軟體工程師面試過程:Onsite interview和實作時要注意什麼?
Photo Credit: iStock

我們想讓你知道的是

號稱軟體工程師界的面試天堂路「technical interview」,不是很會解題就可以通過?任職高科技產業的作者,將分析technical interview長什麼樣子?平常要怎麼mock interview才有效?

文:Mia Chen

在疫情還沒降臨前,我很幸運地曾到幾間科技公司進行onsite interview。以下和大家分享我的面試經驗,希望能為大家解惑。也希望疫情趕快結束,讓onsite interview不再是艱難的virtual onsite。

Onsite前要先過五關斬六將

在onsite interview之前,通常還有兩關考驗:

Online Assessment(OA):在線上軟體根據題目要求寫程式,通常有三題到八題不等,且每題都會有幾十個test cases,自動測試你的程式是否達成題目的要求,只要通過所有test cases就算通過。沒有面試官,但有時間限制。個人覺得這階段的體驗最差,因為沒人討論,再加上剩餘時間會顯示在畫面上,眼看時間一點一滴流逝,心理壓力很大。

Phone Interview:面試官打電話給你,在線上共同的編輯器解題目,通常會考一或兩題,每間公司限時不同,大約都是45至60分鐘。你可以在自己的紙張上寫自己的思考過程,或是列出可能的edge cases,但也因為面試官看不到,他比較難知道你的思考邏輯或給你其他思考方向。所以你必須不停地講話,讓面試官跟上你的思考,或是在共同編輯軟體上盡可能以最簡單的方式表達你的想法。

有些公司只有OA或只有phone interview,甚至有些人很幸運直接onsite interview。

進入重頭戲:Onsite interview

面試官進門,他會請你用一分鐘自我介紹。不過並不是每位面試官都會請你自我介紹,有些也只是為了幫助你放鬆才請你自我介紹。

面試官接著會開始講題目,但不一定會把所有需求或限制都講完(這同時是考驗你是否思慮周到的一環)。建議你可以先用你自己的話講出你理解的題目,並舉一個最簡單且有input與output的例子,跟面試官確認你的理解無誤後,再開始想其他edge cases。

在尚未implement前,多花一些時間在思考edge cases絕對是值得的投資(例如:input是空array、input是null、數字會不會小於零等)。edge cases想得越多越好,當然也要跟面試官確認output,避免實作時才發現未考慮的條件而亂了手腳,甚至太緊張而想不到如何修改自己的程式。

如果所有情況都考慮到了,實作也不會佔太多時間。edge cases可以寫小小的在旁邊,包含input和output,最後實作完可以用來驗證你的程式。

在思考的時候,也要記得告訴面試官你需要時間思考,不要莫名就陷入自己的思考,把面試官晾在那,畢竟面試官也在思考:「如果這個人未來是我同事,會不會很難合作或溝通?」

確認完edge cases後,你要先描述你的解法(切勿直接實作程式):演算法或是資料結構的關鍵字可以講在最前面,例如「find a cycle in the graph」、「store the data as linked list」、「solve the problem by using Stack」、「use Kruskal's algorithm」,讓面試官清楚知道你會做什麼,也向面試官傳遞「你對題目的了解是否正確」的訊息。如果面試官沒有阻止你,通常就是在對的路上。

描述解法細節時,可按順序條列你程式裡會做的事(寫關鍵字就好):用來紀錄你的想法,以確保你不會實作時太緊張而忘了下一步,也用來取代pseudo code向面試官傳遞想法的功能。因為pseudo code較花時間與版面,如果有面試官糾結你格式是否正確更是浪費時間。所以建議只要用英文依順序條列你會做的事即可。

iStock-1255928059
Photo Credit: iStock

實作的重點:邊寫邊講,每實作下一行前請確保面試官跟上你的進度,當你偏離面試官心目中的正解時,他才能適時地給你引導,或是提醒你這行有更多edge cases要處理。你可以想像你們在pair programming,隨時注意面試官給的回饋。

實作完後可別急著說你做完了,一定要用test cases遍歷你的程式(遍歷=test coverage 100%):用test cases走過你每一行程式,看每走完一行你的test case與各變數會變成什麼。想一個中等規模的正常例子,前面寫下來的edge cases也要拿來用。

這個步驟類似單元測試,仍算實作的一部份,所以遍歷的時候若發現程式錯了,修正是可以被接受的。因為例子是你想的,錯誤也是你自己發現的,修正當然也是合理的。

實作完的其他注意事項

接著面試官會問你time/space complexity,這裡就沒有什麼訣竅,倒是刷題的時候需要多練習(這是刷題時很常被忽略的步驟)。分析複雜度是考驗你對程式的理解程度,你是否知道這個程式的瓶頸在哪:哪裡需要花最多時間執行、哪裡需要花最多空間儲存。知道瓶頸在哪也才知道如何改善程式。

你知道瓶頸在哪,面試官也就順理成章地問你:「你要如何改善?」這時你要思考其他解法以改善你的程式,通常就是用別的資料結構存取更多資料以空間換取時間。如果面試還有時間,面試官可能會請你修改你的程式來實作改善方案,也會問你新解法的time/space complexity。

在某些面試官眼中是nice to have,可能是你太強寫太快,面試官只好多給你一些挑戰,解不出來也無傷大雅;但某些面試官可能認為題目很簡單,改善方案本就是他測驗的一環,解不出來或是時間不足無法解到會有些許扣分。

面試官最後的問題常是「你有什麼問題要問我嗎?」前面討論了這麼多技術問題,後面搞不好還有下一關,所以這邊提供大家一些執行或文化相關的問題:「面試官在公司負責什麼?」「公司怎麼run project的?不同組之間如何運作?」「requirements通常都怎麼來?工程師可以參與requirements的設計嗎?」「How’s life at company?」

實力、運氣外還得講緣分

影響面試結果的因素,除了你面試前的準備,面試官也是關鍵因素。面試官願不願意引導你解題、面試官是否熟練於引導面試者解題、面試官個人對簡單和難的定義,甚至是面試官是否想和你工作的個人主觀意願,都會影響你的面試結果。

如果你問題都答出來了,最後還是被刷掉,也不一定是你能力的問題,可能就是運氣不好。提升自己的心理素質、找到適當宣洩負面情緒的管道,絕對是支撐你走完每段漫長的面試之旅的必備技能。希望大家都運氣滿滿。

延伸閱讀

本文經NEX 媒體實驗室授權刊登,原文發表於此

責任編輯:游家權
核稿編輯:翁世航


猜你喜歡


俄烏戰火後的危機!台灣天然氣10%缺口 中油準備好應戰了嗎?

俄烏戰火後的危機!台灣天然氣10%缺口 中油準備好應戰了嗎?
Photo Credit: Shutterstock / TPG Images

我們想讓你知道的是

天然氣被國際視為最佳橋接能源,台灣也計畫將燃氣發電佔比調升至50%、燃煤降至30%、綠能提高至20%,以完成2025年非核家園之能源轉型目標;然而台灣天然氣幾乎全仰賴進口,若要提高燃氣發電配比,勢必要增加氣源購置,並確保原料能穩定輸入。

氣候快速變遷、全球暖化劇烈,聯合國氣候變化綱要公約《巴黎氣候協議》主張各國政府應減少碳排、調整能源配比,以逐步朝向100%再生能源發電的綠色未來。天然氣被國際視為最佳橋接能源,台灣也計畫將燃氣發電佔比調升至50%、燃煤降至30%、綠能提高至20%,以完成2025年非核家園之能源轉型目標;然而台灣天然氣幾乎全仰賴進口,若要提高燃氣發電配比,勢必要增加氣源購置,並確保原料能穩定輸入。

經濟部統計台灣天然氣進口比例,分別是澳洲約32%、卡達約25%、俄羅斯約10%。適逢今(2022)年3月中油與俄簽約供氣合約期滿,也因俄國總統普丁宣布「不友善國家」須以盧布購買天然氣,中油表示將不會與俄羅斯續約,現貨氣將採機動性購買,由不特定國家作為供應替代方案;然而,不指定氣源又想隨時找到符合的供貨量、熱值與船期安排來購買,供氣真能唾手可得、穩定無虞?外界都在熱切關注。

綜觀國際天然氣進出口趨勢,澳洲東部新興煤層天然氣(Coal Seam Gas,簡稱CSG)出口量持續成長,70%輸出至日本、韓國、中國等亞洲多國市場,使澳洲仍坐擁世界最大液化天然氣供應國寶座。傳統天然氣是由不透水岩石覆蓋的多孔砂岩地層中取得,氣體透過浮力經氣井移動至地面,無需抽取,但隨蘊藏量下降,需要由非傳統天然氣來補足。過去CSG熱值低,且技術未臻純熟、用水量高、恐有污染風險而無法量產;如今技術革新,能夠利用壓力變化來取得吸附於煤質基中的天然氣,同時用水量少,不致消耗澳洲珍貴的水資源,且鑽井成本比傳統多孔砂岩層天然氣低廉許多。

為供應出口所需,澳洲東岸的傳統天然氣儲量面臨枯竭窘境,未來5-7年須倚靠昆士蘭州內超過85%的大型CSG庫存,來支持生產量能,轉換為液化天然氣(Liquefied Natural Gas,簡稱LNG)滿足外銷需與其國內市場需求。澳洲政府也正擴大天然氣運輸管道佈建與效能,將北部與東部市場連接,並開發更多氣田,強化天然氣現貨供應力。我國雖然與澳洲簽約購置天然氣,但大多與西澳地區供應商交易,未與東澳產業締結合作關係,少了對新興氣源的探索,十分可惜。

對於俄羅斯「斷氣」解方,亦有增加卡達進口之呼聲,但中東區域局勢不定,恐對氣源供應造成嚴重影響。美國於1984年將伊朗列為恐怖主義國家,而沙烏地阿拉伯等中東鄰近國家也因伊斯蘭教派立場分歧,與伊朗對立,其友好國卡達也遭受波及,與多國失去外交關係,被施以經濟與交通封鎖,天然氣出口風險極高。已有烏俄戰爭作為前車之鑑,中東長久以來政局動盪,只怕危機一觸即發,造成台灣氣源將出現更大的缺口。

當亞洲國家紛紛採買東澳LNG,台灣進口澳洲LNG卻僅限於西部、尋找隨機氣源現貨氣供發電使用,不僅錯過購置先機,更難保充足貨源。東澳天然氣在國際間炙手可熱,但中油是否已準備與東澳廠商發展堅實合作關係、入手穩定氣源未雨綢繆、深化與澳洲經貿交流?除了深思熟慮,也須儘速展開東澳天然氣採買計畫,才可確保燃氣供電原料充沛、穩健能源轉型進程。


猜你喜歡