不管是對於公司仍是開發者或設計師我的而言,面試都是一項耗時耗錢的項目,本文做者Cameron Banga從編程、設計、App Store等各個方面對iOS開發者及設計師在面試時可能會遇到的問題進行了篩選與彙總。一方面,可以幫助HR在短期內獲取更多反饋信息,更好地甄選合適人選,而iOS開發者及設計師在尋找相關工做時,也可做爲參考,爲面試作好萬全準備。
面試
你昨天/這周學習了什麼?編程
你爲何熱衷於軟件開發?設計模式
你對哪種控制系統比較熟悉?數組
是否參與過GitHub項目?緩存
是否參與過GitHub或其餘同類型網站的iOS開源項目?安全
請描述一下你的iOS應用開發流程。ide
是否熟知CocoaPods?它是什麼?如何運行的?函數
請歸納一下你對軟件受權的理解,及其對軟件開發的影響。工具
請歸納一下你在構建iOS應用時的測試過程。iOS應用如何實現對其餘語言、日期格式以及貨幣單位的支持?oop
請描述一下Instruments及其做用。
請解釋一下Handoff是什麼,並簡述它是如何實現iOS、Mac/網頁應用互通的。
iCloud包含了哪些技術與服務?
iOS擴展是指?可否列舉一些熱門或常見的範例?
HealthKit是什麼?
HomeKit是什麼?
Apple Pay是什麼?可否描述一下如何在應用中使用Apple Pay?
請解釋一下iOS應用沙盒機制。
VoiceOver是什麼?請舉例解釋一下iOS中的輔助功能(Accessibility)。開發者如何使用這些功能?
iOS應用是如何實現後臺多任務處理(Multitasking)的?
Game Center針對iOS遊戲有哪些功能?
iBeacons是什麼?
Cocoa/Cocoa Touch是什麼?
請歸納一下Core Audio,Core Data以及Core Location各是什麼。它們對iOS應用有何意義?
請描述SpriteKit和SceneKit的做用。
Metal是什麼?
響應鏈(Responder Chain)是什麼?它是如何發揮做用的?
按鈕和其餘控制方式對哪些操做作出迴應?
AppDelegate扮演着什麼樣的角色?
請解釋一下NSUserDefaults。就你而言,你會如何在磁盤中對數組對象進行序列化?
你會如何儲存用戶的認證信息?
請問何爲Keychain服務?
爲何移動設備上的緩存和壓縮是不可或缺的?
請解釋一下~/Documents,~/Library和~/tmp。 iOS中的~屬於什麼目錄?
AirPlay是如何運行的?換作是你,你會如何經過編程提升應用的實用性以及演示效果?
傳感器,IO以及WiFi、撥號等鏈接方式如何在iOS平臺上運做?它們有何利用價值?請扼要地談談你的觀點。
iPad 2,iPad mini 1-3,iPad Retina,iPad Air 2,iPhone 五、5S、6以及6+在硬件性能方面有何差別?這對注重性能的應用有何限制?
Cocoa Touch包含什麼?不包含什麼?
爲何Cocoa Touch的類名稱是以兩個大寫字母開頭的?
Swift和Objective-C分別是什麼?二者相比有何不一樣之處,又有何聯繫?
爲何Optional在Swift語言中很是重要?
請解釋一下NSError。在Swift中,什麼狀況下能使用NSError ,什麼狀況下不能?
請說明如何使用Instancetype及其重要性。
在Swift中,何時該用let,何時該用var?
爲何map函數必不可少?該在什麼狀況下使用它?
你會選擇什麼工具來追蹤Bug?
若是在Cocoa中發現一個Bug,你會如何處理?
若是應用的新版本出現了Regression的狀況,該如何補救?如何防止用戶在使用過程當中遇到新的Bug?
Objective-C的類是怎麼執行的?Objective-C Runtime是如何實現的?
iOS是如何提升安全性,保護用戶隱私信息的?
應用能夠下載並即刻顯示數據。如何根據MVC來判斷下載的最佳位置?
MVC對代碼庫(Codebase)的設計有何影響?
Controller Life-Cycle以及View Life-cycle分別有哪些調試方法?
iOS使用的是哪些設計模式(Design Patterns)?你的代碼庫使用的是哪些設計模式?
iOS提供哪些線程?如何充分利用這些線程?
請簡要描述一下UIScrollView的執行過程。它是如何響應手勢識別(Gesture Recognizer)、多點觸控(Multi-Touch)和Run Loop的?
你認爲iOS須要添加或改進哪些API?
iPhone五、六、6+以及iPad Air 2的屏幕分辨率分別是多少?
分辨率的計算單位是什麼?
請解釋一下Interface Builder的做用以及NIB文件的概念。
iOS UI的圖像儲存類型是什麼?
請描述一下Storyboard和標準NIB文件的差異。
設備狀態欄(Device Status Bar)是什麼?高度如何?是否透明?在手機通話或者導航狀態下,它是如何顯示的?
導航欄(Navigation Bar)是什麼?可否拿出你的iPhone,指出你下載的哪些應用運用了導航欄?
選項卡(Tab Bar)和工具欄(Toolbar)分別是什麼?二者之間有何共同點和不一樣點?
表視圖(Table View)是什麼?集合視圖(Collection View)又是什麼?
何時用「彈出(Popover)」屬性最爲合適?
Split-view Controller是什麼?
選取器視圖(Picker View)適合存放哪類內容?
應該在什麼狀況下使用標籤、文本域和文本視圖?
分段控件(Segmented Control)的做用是什麼?
模態視圖(Modal View)是什麼?
iOS通知屬於什麼類型?
iOS應用圖標是指什麼?請儘量詳細地描述一下。
最小尺寸和最大尺寸的應用圖標分別是什麼樣子的?
應用圖標可否包含透明的部分?
Newsstand的圖標與常規應用有何不一樣?
請解釋一下啓動畫面(Launch Images)。
自動佈局(Auto Layout)的做用是什麼?請歸納一下它是如何運行的。
設計軟件時爲何要加上動畫?
請描述一下軟件設計中的交互和Feedback有什麼做用。
設計iPhone和iPad應用時,應分別考慮哪些因素?
請描述一下原型設計對於軟件開發的意義。其做用是什麼?
應用內購買(In-App Purchases)是怎麼回事?IAP可以爲用戶帶來哪些新體驗?
你是否在App Store上發佈過應用?可否歸納一下過程?
iTunes Connect是什麼?
Provisioning Profiles是指?
App ID是什麼?
iOS的開發和發佈簽名證書有何異同?
如何使用TestFlight?經過Ad-hoc發佈應用的話,該如何使用UUID?
應什麼時候驗證購買收據?
發佈iAds(蘋果平臺廣告)有哪些要求?
最近有沒有開發什麼好玩的東西?你最引覺得豪的做品是什麼?
談一談你經常使用的開發工具都有哪些優點?
你最敬佩的獨立Mac或者iOS應用開發者是誰?
最喜歡什麼項目?哪一種類型的?
你以爲Xcode有哪些須要改進的地方?
iOS上你最喜歡哪些API?
是否有最中意的錯誤報告?
你最愛以哪一種方式來檢驗一項新技術是否好用?
爲何詞典被稱做Dictionaries,而不是HashTable或HashMap?
iOS Dev Weekly(iOS開發週刊)
Accidental Tech Podcast
Debug Podcast
The Talk Show
NSHipster
KZBootstrap(一個方便iOS工程初始化的項目)
WWDC Videos
ASCII WWDC(文字版本,可搜索)
Pttrns(iOS手機App界面分享平臺)
Ray Wenderlich Tutorials(Ray Wenderlich教程)
iOS Version Stats(信息分享平臺)
iOS Human Interface Guidelines(iOS人機界面指南)
Black Pixel blog post on hiring iOS and Mac engineers(Black Pixel博客)
Macoscope guide to a technical interview( Macoscope技術面試指南)