前言
自己參加過不少 iOS 的工作面試機會,前一陣子敝公司在徵 iOS 工程師,也讓我有這個機會去面試求職者。這段期間下來,也累積了不少面試題目,趁這個機會列出其中幾個題目跟各位交流。
我在面試求職者的時候,不會去問這份工作用不到的問題。例如演算法,我知道它很重要,但這份工作如果不太有機會要工程師寫演算法的東西,那就沒必要問。所以我在面試 iOS 工程師的時候,幾乎不會要求對方當場寫程式,我問的問題都比較偏向基礎知識與觀念,有些有正確答案,有些則是申論題。
以下題目不一定適用於你的公司現況或工作內容,使用前請自行斟酌
以下題目不一定適用於你的公司現況或工作內容,使用前請自行斟酌
以下題目不一定適用於你的公司現況或工作內容,使用前請自行斟酌
以下題目不一定適用於你的公司現況或工作內容,使用前請自行斟酌
以下題目不一定適用於你的公司現況或工作內容,使用前請自行斟酌
廢話不多說,以下就列出一些我曾經問過的幾個問題。
一般閒聊
這些問題真的就只是閒聊,一來放鬆彼此的心情,二來也可以了解一下求職者的相關背景與個性。
- 怎麼學 iOS 開發的,有在關注哪些網站嗎?最近有看到什麼感興趣的技術或討論嗎?
- 有在使用第三方套件嗎?如何管理第三方套件?
- 開發 iOS 過程,有遇過什麼技術上的難題嗎?
- 如何收集用戶 crash 紀錄,如何 debug
- 如何追蹤使用者行為
- 有在使用版本控制系統嗎?請說明你們的版本控制流程
- 有在看 WWDC 嗎?對哪些 session 比較有印象,有什麼感想?
- 有在寫測試嗎?有的話,請說明一下用哪套工具測試,還有測試什麼東西
- 是否有特別喜歡某個 app,你認為這個 app 的架構大概是怎樣,你會如何設計這個 app?
基礎問題
個人覺得這些都是非常基礎的問題,任何一個有一年以上經驗的 iOS 開發者應該都要能回答這些問題。但讓我訝異的是,一些號稱有多年經驗的面試者,還是會答錯某些有正確答案的問題。
- 會使用 XIB 跟 Storyboard 嗎?有辦法用程式碼刻畫面嗎?能否比較 XIB, Storyboard, Code 刻畫面的優劣?
- 我們可以使用
[anObject doSomething]
讓某物件去做某件事?那如果anObject = nil
會發生什麼事? - 假設
array
是一個 mutable array,那[array addObject:nil]
會發生什麼事? - 假設
dic
是一個 mutable dictionary,那dic[@"key"] = nil
會發生什麼事?dic[nil] = @"value"
會發生什麼事? - 什麼是 ARC,什麼是 MRC
- ARC 是如何判斷何時要回收記憶體的?它跟 GC 有不一樣嗎?
new
跟alloc init
有不一樣嗎?何時該用哪一種
進階問題
這裡的問題大多偏向觀念性,有少數是比較實作細節的東西。會問這些問題,是想知道面試者平時是否會思考該怎麼設計程式、是否有想過什麼時候用哪種解決方案比較適合,以及是否會去碰一些比較細節的東西。
- 物件之間可以透過哪些方式溝通,什麼情況下該用哪一種
- 如果要擴充一個 Class 的功能,又不能修改該 Class 的原始碼,有哪些方法可以辦到,其優缺點為何
- 有用過 Category 嗎?請舉出一些用它的實際情況。可能會遇到哪些問題,要如何解決
- 什麼是 Singleton,有什麼優缺點,請舉出使用它的時機
- 什麼是 retain cycle,為何會發生,該怎麼解決
- 直接呼叫 method 跟使用
performSelector:
有何不同,何時會使用後者 - 有實作過
isEqual
嗎?要注意哪些地方 - 什麼情況下無法使用 ARC
- 知道什麼是
toll free bridging
嗎 - 知道什麼是 shallow copy 跟 deep copy 嗎?如何 deep copy 一個 array
- 說說對 MVC 的看法
沒有留言:
張貼留言