求職|軟體工程師求職,面試篇
前一篇的求職 101 著重於面試前的資料準備;現在萬事俱備、只欠東風,當完成履歷後,最重要的就是關於面試的大小事。
自我介紹
「可以請你介紹一下你自己嗎?」這是許多場面試的開場白。
要怎麼樣能夠在 1–2 分鐘時間內,精簡概要介紹自己,並且和應徵職位能有密切關聯,同時又能展現自己的熱情。
在模擬面試時,我的第一版自我介紹著重太多上一份工作,卻和「軟體工程師」關聯度低,有被學長姐提醒,後來架構就有重新調整,同時也可以主動帶到 demo 自己的作品。
Demo
我一開始也是很被動的等面試官 cue,也是聽了學長姐 feedback,改為較主動積極地詢問:「請問現在是否可以 demo 我的作品呢?」
我會先簡介 App 的使用情境或 User Story 做為開頭,如果有時間的話可以把 App 整個 flow 介紹,如果沒有的話則可著重在功能最複雜的一兩頁。
介紹的同時也可以把實作使用方法加以說明,像是設計的架構或是版面呈現等巧思,好好地把自己的專業呈現出來。
(之後我會寫一篇關於我 App 的技術篇)
小提醒:
Demo 時的螢幕亮度、去除小白點、反手按鍵、網路連結和先順過 App ……
這些小細節如果都有注意到,相信會讓整個面試過程更流暢
技術面試
之前在找公關工作時,面試問題著重在人格特質、過往經歷以及情境題的討論;但,工程師就是真的要好好地檢視你的實力與能力。
技術面試主要就會根據你履歷上所寫的做進一步深入的討論,主要有幾類:
- Design Pattern: MVC, OOP, POP, Singleton, Delegate, Notification Center, KVO
- Swift Key Concept: GCD, ARC, Reference Type, Value Type, Closure
- User Interface: Auto Layout, Life Cycle of App and Controller
- Networking: RESTful APIs, URLRequest
- Git, GitHub
以上是我面試時常被問的題目,也會根據每個公司或面試官本身的使用習慣會有不同的討論面向,更具體而言,很多時候會在 demo 時加以提問。
除了對名詞解釋有基本的介紹,最好的方式是帶到自己是怎麼實作的,並且用自己的話加以詮釋,達到一個有溫度的回答。(這是恩師 Luke 給我的建議 XD 他說我的回答很沒有溫度😅)
我覺得最好的方式就是找人一起練習,透過討論可以更加深自己的印象。
同時,也要思考,如果不用 A 方法,用 B 方法可不可以?有些答案不一定有對錯,更重要的是瞭解你的思考邏輯脈絡。
面試即是練習,做好隨時能面試的準備。
事實上最好的面試準備就是去面試。(超推薦:2017 iOS面試心得 by Tina Chang)
真心感受到這件事就是在不斷面試後,一次一次透過和面試官的討論,對於觀念的掌握度提高,也更能檢視自己的弱點和不足,並成為下一次面試的養分。
白板 / 實作題
當然,也會有一些比較難準備的部分。
在面試時,曾被問過類似 leetcode 演算法、畫面和資料設計、高階函數實作等,有些會是請你畫在白板上或者是直接電腦 live coding。
記得我第一間被問到時,真的是腦袋一片空白,平常訓練又不夠,短短 30 分鐘覺得像是 3 個小時一樣久。只能說,這就是自己欠下的演算法債。(之前不好好寫 coding time Q_Q)
回家後,決定痛定思痛好好面對,每天練習 leetcode 和研究 swift-algorithm-club。
但比起大家的刷題,我則是培養自己對於解題的興趣;之前之所以會欠債,就是看到題目,不知道從何開始就會開始逃避;但試著從 Top Interview Questions 的 Easy 著手,每天算個一、兩題(真的很少),但靠著自己想寫出方法後,再研究其他兩到三種 solution,走一種重質不重量的路線。
漸漸地,有抓到解題的方向,也對 Swift 的高階函式更加熟悉,在後面幾場面試也帶給我很大的幫助 :)
當想不出來時,也不要保持沈默,可以透過和面試官詢問,藉此得到更多提示或想法。(謝謝我很喜歡的一位面試官給我的建議)