由於最近我有些面試邀約,希望能將準備的過程記錄下來。
雖然作為後端工程師已經四年,在這四年內也換了三份工作,經歷過的面試也有個20次 (應該算很少了),因為有一次是透過人脈內推,大概只有換第三份工作時連續面了11家公司。
一直以來我都沒有很認真準備面試,可能基於我本身不太會考前猜題或者相信自己即興回答的能力,所以大部分都是在面試的當下才知道題目,或者失敗後將題目收集起來準備下一次的面試。
也幾乎不會針對自己過去所做的專案內容去試想可能會被問的技術跟細節。
但歷經最近的某次面試,我終於像是醍醐灌頂般的理解為什麼過去我的履歷總是可以贏得面試機會,但卻在面試時失利。
也決定在這個時間點好好的調整對準備面試的方式。
以下會列出一些我這幾年被面試問到很多次非關技術的題目。
General 面試問題
基本上這種General的面試問題,主要測試的方向有幾種
- 能夠在短時間內認識你 (面試官認識面試者)
- 問一些問題測試你怎麼處理事情、思考的模式
- 讓你有機會去了解對方
1. 請介紹你自己 (Introduce Yourself)
我以前有個誤點,就是我會偏向交朋友的方式或者比較維持和諧氣氛(講難聽一點是討好跟渴望青睞)的方式來介紹自己,另一方面是我對自己的能力比較沒自信,所以話不會說得太滿。
但後來我發現「自我介紹」這一題是最快速讓對方認識你的問題,請試想今天一進這個會議室,你們雙方都是第一次面試,在對方根本對你都不熟的情況下,這一題的要點就是盡量呈現自己,尤其是自己專業的部分跟過往經歷,最好加上一些過去幫助團隊或公司讓你脫穎而出的要點。
如果是遠端會議,我有遇過有面試者準備PPT分享螢幕介紹自己,可以使用PPT,但只要清晰條列出自己要講的重點就好,比起一邊說一邊比手畫腳,個人覺得有圖文條列的內容更能讓對方加強記憶。
自我介紹的內容大綱可以是這樣
- 你的名字、住哪邊(尤其外商公司或遠端公司需要告知你居住的地方)
- 過去的工作經驗: 在前端還是後端有幾年的工作經驗、主要使用的程式語言、參與了哪些領域的專案
- 個人亮點補充: 比方說在某某專案導入了什麼技術優化了效能、有帶新人的經驗、想出什麼解決方案貢獻團隊或公司
- 額外的技術或經驗: 比方說擁有實踐Agile的經驗、有使用Git版控的經驗、跨部門溝通的經驗
大概是這樣,假設我今天想轉職前端工程師。
大家好,我是Mina,(我住哪)。
我作為後端軟體工程師四年,主要使用的語言為Python。我貢獻了10多個專案,其產業包括美國醫療保險、物聯網收集感測器資料、商業智慧相關服務以及更多其他的個人專案。
(在物聯網的某個專案,我運用什麼技術優化了計算資料的速度,提高了什麼效能)
兩年前我開始為轉行前端工程師而做準備,我透過自學前端技術以及設計我的個人網站跟另一個命理服務以及其餘三個前端主題的專案來熟悉前端技術,主要使用的是React.js 框架。
(我在我的命理服務運用了什麼技術,提高載入圖片的效能,以及使用了什麼動畫的技術)
另外,在上一份工作有首次帶領社會新鮮人融入團隊的經驗,也有提出自動化的解決方案解決了什麼問題。
除此之外,我有豐富的Agile的實踐經驗、使用Git的版控經驗、擁有跨部門的合作經驗、擁有和客戶以及廠商交流的經驗、也有良好的跨國團隊合作的溝通能力。
我希望在這份工作能夠為團隊為公司貢獻更多專案,同時加強我的前端技術能力,我準備好要挑戰前端工程師的位置了。
2. 你的優點
強烈建議自己要透過觀察自己處理事情的過程慢慢歸納出一些自己的優點。
這一題就是講出你認為自己的優點,加上這個優點能夠幫助公司跟團隊什麼即可。
我的話,我以前也覺得自己優點是什麼善良、純真(我的天),但後來前同事常常會誇讚我一些點,幫助我找出自己的優點。
- 高執行力
- 喜歡嚐鮮跟擁抱新鮮事
- 喜歡挑戰更高的目標或更難的事
- 有創意能力,有提出某某解決方案
舉個例子
我擁有高執行力,一但接收到任務,我就會開始去想像最終目標的呈現,然後開始根據時間與技術熟悉度來規劃及安排任務與時程表,同時保有容錯的空間能夠彈性調整執行計畫。
我在上一家公司曾經和同時組隊參與公司內部的競賽,為時兩個月能夠實踐一項解決方案。我透過高執行力和彈性的規劃能力,確保我們對於目標的推進以及遇到問題或者做不出來的狀況時,如何快速想到替代方案並與團員討論,最終確保達成目標。
你的缺點
請列舉一個你的缺點 + 你打算怎麼克服它。
還沒克服沒關係,但只要列出如何克服並強調已經在努力克服就好,轉弱點為正向加強。
比方說,我的弱點是很容易隨著對方的情緒起伏而受到影響。克服方式是建立心裡建設,不斷提醒自己這段溝通與談話的目的是要解決什麼問題,並非受到對方的情緒起伏影響而偏題。
你最高光的時候?
就是列舉自己在過去的工作經驗中,有沒有特別讓你覺得自己感受到特別榮耀的時段。
- 成功帶領團隊
- 成功和客戶交涉
- 提出一項解決方案
- 幫助團隊與公司 …
如果還比較在Junior階段時,我可能可以說協助資深工程師實作功能的單元測試,確保程式碼的品質以及確保功能的正確性,不會在經手臨界值或特殊條件,程式運行失敗。
我的話,我可以列舉在上一家公司做的事。
我們收到一個從美國團隊的產品經理的需求,目的是為了簡化每次軟體釋出(Release)所需的許多人工且重複的作業流程。我背負著不可能的任務的質疑,在仔細研究繁瑣的作業流程以及和其他團員討論後,成功想出解決方案,並和同事協調將方法實踐,讓所有的團隊成員都能因這個解決方案受惠。
你遇到目前最困難的事,你怎麼解決?
這題也是講出自己過去遇到了什麼覺得很困難的事,當你當下怎麼解決。這個題目也是考驗當事人對於遇到難題時會如何處理問題。
如果只是在工作初期,可以說像是
- 專案使用的技術難度太高,自己的技術能力不足以負擔,所以當時的心理壓力很大,後來透過運用個人時間不斷練習加緊腳步跟上大家的進度,成功貢獻專案並合作完成專案。
其實隨著工作經驗的增加,就會有很多事可以說XD,我自己本身也是在上一份工作遇到的事能拿出來說個嘴。
在我上一份工作,我首次擁有帶領新人的經驗,這位是剛畢業的社會新鮮人以及就讀非電腦專業的領域。他在公司的表現呈現像是他還在校讀書與學習的行為,我透過不斷與他溝通,引導他嘗試去開發新的功能、去貢獻公司的專案,透過貢獻去提升他的自信心,讓他意識到自己能有貢獻團隊的責任心,而不是只是學習知識。
第二,由於他並非就讀和軟體開發相關的領域,所以他對於Agile規則以及一些邏輯上的敏感力不高,若我們的Agile規則是: 和產品經理規劃功能、進入開發、完成開發、向團員展示、進入QA測試、釋出(Release),他可能實作兩個函式就認為他完成了任務。我的解決方式是引導他去思考最終需要呈現給團員展示的功能應該要是如何,進而引導他理解完成一個功能(或任務)的標準在哪,引導他清楚明白完成的定義以及Agile規則。
延伸題 (目的考你的思考模式與處理事情): 請問整個台北市有幾家寵物美容院(ATM)
類似這方面的問題,都是在考驗你的思考模式跟如何解決問題的能力,所以說最終答案根本不重要,而是面試官想知道你會怎麼解決這個問題。
- 查詢政府的開放大數據
- Google Map
- 查詢有無第三方網站或API可以得知
- 查詢政府相關部門的登記營業資料
類似用一層一層Cover並Filter的方式計算出最終答案。
額外提問: 你對我們公司或團隊有什麼疑問嗎?
這題很重要,凡事團隊目前接手的專案、專案的狀況、內容、技術、公司的狀況、團員有幾個人、職位是什麼都能問。
如果要問是否會加班相關的問題,我會習慣在前面問一堆其他問題後擺在後面問。
目前大概會被問的比較空泛的問題都是上面這些。
只要記住準備方向主要是
- 短時間內讓面試官了解自己
- 如何處理事情與思考的模式
- 你想知道對方的哪些資訊
如此,即可。