無論是對于公司還是開發(fā)者或設(shè)計師個人而言,面試都是一項耗時耗錢的項目,本文作者Cameron Banga從編程郊愧、設(shè)計、App Store等各個方面對iOS開發(fā)者及設(shè)計師在面試時可能會遇到的問題進行了篩選與匯總坏快。一方面,能夠幫助HR在短時間內(nèi)獲取更多反饋信息憎夷,更好地甄選合適人選莽鸿,而iOS開發(fā)者及設(shè)計師在尋找相關(guān)工作時,也可作為參考拾给,為面試做好萬全準備富拗。
常見問題
你昨天/這周學(xué)習(xí)了什么?
你為什么熱衷于軟件開發(fā)鸣戴?
你對哪一種控制系統(tǒng)比較熟悉啃沪?
是否參與過GitHub項目?
是否參與過GitHub或其他同類型網(wǎng)站的iOS開源項目窄锅?
請描述一下你的iOS應(yīng)用開發(fā)流程创千。
是否熟知CocoaPods缰雇?它是什么?如何運行的追驴?
請概括一下你對軟件授權(quán)的理解械哟,及其對軟件開發(fā)的影響。
請概括一下你在構(gòu)建iOS應(yīng)用時的測試過程殿雪。iOS應(yīng)用如何實現(xiàn)對其他語言暇咆、日期格式以及貨幣單位的支持?
請描述一下Instruments及其作用丙曙。
關(guān)于iOS技術(shù)
請解釋一下Handoff是什么爸业,并簡述它是如何實現(xiàn)iOS、Mac/網(wǎng)頁應(yīng)用互通的亏镰。
答:Handoff是蘋果推出的一項功能扯旷,當(dāng)你的iPhone、mac索抓、ipad登陸同一個iCloud賬戶時钧忽,你在手機上打開網(wǎng)頁會實時在mac上看到,由于其是基于藍牙4.0來實現(xiàn)的逼肯,所以要手機和電腦相互靠近才可以耸黑。當(dāng)然要使用的話,iOS要8.0以上且mac要10.10以上篮幢。
iCloud包含了哪些技術(shù)與服務(wù)大刊?
答:iCloud 其實就是云服務(wù),蘋果為用戶提供了一個私有云空間洲拇,方便用戶在不同的蘋果設(shè)備之間共享個人數(shù)據(jù)奈揍。
iOS擴展是指曲尸?能否列舉一些熱門或常見的范例赋续?
答:擴展是iOS8中引入的一個非常重要的新特性,擴展讓app之間的數(shù)據(jù)交互稱為可能另患,用戶可以在app中使用其他應(yīng)用提供的功能纽乱,而無需離開當(dāng)前的應(yīng)用。引入擴展之后昆箕,app可以與擴展進行數(shù)據(jù)交換鸦列,基于安全和性能的考慮,每一個擴展運行在一個單獨的進程中鹏倘,擁有自己的bundle薯嗤,bundle 的后綴名是.appex。擴展bundle必須包含在一個普通應(yīng)用的bundle內(nèi)部纤泵。iOS8有6個支持擴展的系統(tǒng)區(qū)域骆姐,分別是Today、Share、Action玻褪、Photo Editing肉渴、Storage Provider、Custom Keyboard带射。
HealthKit是什么同规?
答:HealthKit是一個框架,應(yīng)用可以使用它來分享健康和健身數(shù)據(jù)窟社。HealthKit管理從不同來源獲得的數(shù)據(jù)券勺,并根據(jù)用戶的偏好設(shè)置,自動將不同來源的所有數(shù)據(jù)合并起來桥爽。
HomeKit是什么朱灿?
答:是蘋果發(fā)布的智能家居平臺。
Apple Pay是什么能否描述一下如何在應(yīng)用中使用Apple Pay钠四?
請解釋一下iOS應(yīng)用沙盒機制盗扒。
VoiceOver是什么?請舉例解釋一下iOS中的輔助功能(Accessibility)缀去。開發(fā)者如何使用這些功能侣灶?
iOS應(yīng)用是如何實現(xiàn)后臺多任務(wù)處理(Multitasking)的?
Game Center針對iOS游戲有哪些功能缕碎?
iBeacons是什么褥影?
Cocoa/Cocoa Touch是什么?
請概括一下Core Audio咏雌,Core Data以及Core Location各是什么凡怎。它們對iOS應(yīng)用有何意義?
請描述SpriteKit和SceneKit的作用赊抖。
Metal是什么统倒?
響應(yīng)鏈(Responder Chain)是什么?它是如何發(fā)揮作用的氛雪?
按鈕和其他控制方式對哪些操作做出回應(yīng)房匆?
AppDelegate扮演著什么樣的角色?
請解釋一下NSUserDefaults报亩。就你而言浴鸿,你會如何在磁盤中對數(shù)組對象進行序列化?
你會如何儲存用戶的認證信息弦追?
請問何為Keychain服務(wù)岳链?
為什么移動設(shè)備上的緩存和壓縮是不可或缺的?
請解釋一下/Documents劲件,/Library和~/tmp掸哑。 iOS中的~屬于什么目錄左胞?
AirPlay是如何運行的?換做是你举户,你會如何通過編程提高應(yīng)用的實用性以及演示效果烤宙?
傳感器,IO以及WiFi俭嘁、撥號等連接方式如何在iOS平臺上運作躺枕?它們有何利用價值?請扼要地談?wù)勀愕挠^點供填。
iPad 2拐云,iPad mini 1-3,iPad Retina近她,iPad Air 2叉瘩,iPhone 5、5S粘捎、6以及6+在硬件性能方面有何差異薇缅?這對注重性能的應(yīng)用有何限制?
關(guān)于編程
Cocoa Touch包含什么攒磨?不包含什么泳桦?
為什么Cocoa Touch的類名稱是以兩個大寫字母開頭的?
Swift和Objective-C分別是什么娩缰?兩者相比有何不同之處灸撰,又有何聯(lián)系?
為什么Optional在Swift語言中非常重要拼坎?
請解釋一下NSError浮毯。在Swift中,什么情況下能使用NSError 泰鸡,什么情況下不能债蓝?
請說明如何使用Instancetype及其重要性。
在Swift中鸟顺,什么時候該用let惦蚊,什么時候該用var器虾?
為什么map函數(shù)必不可少讯嫂?該在什么情況下使用它?
你會選擇什么工具來追蹤Bug兆沙?
如果在Cocoa中發(fā)現(xiàn)一個Bug欧芽,你會如何處理?
如果應(yīng)用的新版本出現(xiàn)了Regression的情況葛圃,該如何補救千扔?如何防止用戶在使用過程中遇到新的Bug憎妙?
Objective-C的類是怎么執(zhí)行的?Objective-C Runtime是如何實現(xiàn)的曲楚?
iOS是如何提高安全性厘唾,保護用戶隱私信息的?
應(yīng)用可以下載并即刻顯示數(shù)據(jù)龙誊。如何根據(jù)MVC來判斷下載的最佳位置抚垃?
MVC對代碼庫(Codebase)的設(shè)計有何影響?
Controller Life-Cycle以及View Life-cycle分別有哪些調(diào)試方法趟大?
iOS使用的是哪些設(shè)計模式(Design Patterns)鹤树?你的代碼庫使用的是哪些設(shè)計模式?
iOS提供哪些線程逊朽?如何充分利用這些線程罕伯?
請簡要描述一下UIScrollView的執(zhí)行過程。它是如何響應(yīng)手勢識別(Gesture Recognizer)叽讳、多點觸控(Multi-Touch)和Run Loop的追他?
你認為iOS需要添加或改進哪些API?
關(guān)于界面
iPhone5岛蚤、6湿酸、6+以及iPad Air 2的屏幕分辨率分別是多少?
分辨率的計算單位是什么灭美?
請解釋一下Interface Builder的作用以及NIB文件的概念推溃。
iOS UI的圖像儲存類型是什么?
請描述一下Storyboard和標準NIB文件的差別届腐。
設(shè)備狀態(tài)欄(Device Status Bar)是什么铁坎?高度如何?是否透明犁苏?在手機通話或者導(dǎo)航狀態(tài)下硬萍,它是如何顯示的?
導(dǎo)航欄(Navigation Bar)是什么围详?能否拿出你的iPhone朴乖,指出你下載的哪些應(yīng)用運用了導(dǎo)航欄?
選項卡(Tab Bar)和工具欄(Toolbar)分別是什么助赞?兩者之間有何共同點和不同點买羞?
表視圖(Table View)是什么?集合視圖(Collection View)又是什么雹食?
什么時候用“彈出(Popover)”屬性最為合適畜普?
Split-view Controller是什么?
選取器視圖(Picker View)適合存放哪類內(nèi)容群叶?
應(yīng)該在什么情況下使用標簽吃挑、文本域和文本視圖钝荡?
分段控件(Segmented Control)的作用是什么?
模態(tài)視圖(Modal View)是什么舶衬?
iOS通知屬于什么類型埠通?
關(guān)于設(shè)計
iOS應(yīng)用圖標是指什么?請盡可能詳細地描述一下逛犹。
最小尺寸和最大尺寸的應(yīng)用圖標分別是什么樣子的植阴?
應(yīng)用圖標能否包含透明的部分?
Newsstand的圖標與常規(guī)應(yīng)用有何不同圾浅?
請解釋一下啟動畫面(Launch Images)掠手。
自動布局(Auto Layout)的作用是什么?請概括一下它是如何運行的狸捕。
設(shè)計軟件時為什么要加上動畫喷鸽?
請描述一下軟件設(shè)計中的交互和Feedback有什么作用。
設(shè)計iPhone和iPad應(yīng)用時灸拍,應(yīng)分別考慮哪些因素做祝?
請描述一下原型設(shè)計對于軟件開發(fā)的意義。其作用是什么鸡岗?
關(guān)于App Store
應(yīng)用內(nèi)購買(In-App Purchases)是怎么回事混槐?IAP能夠為用戶帶來哪些新體驗?
你是否在App Store上發(fā)布過應(yīng)用轩性?能否概括一下過程声登?
iTunes Connect是什么?
Provisioning Profiles是指揣苏?
App ID是什么悯嗓?
iOS的開發(fā)和發(fā)布簽名證書有何異同?
如何使用TestFlight卸察?通過Ad-hoc發(fā)布應(yīng)用的話脯厨,該如何使用UUID?
應(yīng)何時驗證購買收據(jù)坑质?
發(fā)布iAds(蘋果平臺廣告)有哪些要求合武?
趣味問答
最近有沒有開發(fā)什么好玩的東西?你最引以為豪的作品是什么涡扼?
談一談你常用的開發(fā)工具都有哪些優(yōu)勢稼跳?
你最敬佩的獨立Mac或者iOS應(yīng)用開發(fā)者是誰?
最喜歡什么項目壳澳?哪種類型的岂贩?
你覺得Xcode有哪些需要改進的地方茫经?
iOS上你最喜歡哪些API巷波?
是否有最中意的錯誤報告萎津?
你最愛以哪種方式來檢驗一項新技術(shù)是否好用?
為什么詞典被稱作Dictionaries抹镊,而不是HashTable或HashMap锉屈?
其他參考
iOS Dev Weekly(iOS開發(fā)周刊)
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技術(shù)面試指南)