非游戲類,初級面試
常見問題
1.你昨天/這周學習了什么?
坦白點說,學習筆試面試后發現自己知識點不足的地方
2.你為什么熱衷于軟件開發?
因為有趣,可以做出一些自己感覺到有成就感的東西,就是幫助別人解決問題。
3.是否參與過GitHub項目?
4.是否參與過GitHub或其他同類型網站的iOS開源項目?
5.請描述一下你的iOS應用開發流程。
6.是否熟知CocoaPods?它是什么?如何運行的?
Cocoapods是一個用來管理第三方庫的比較好用的管理工具。
7.請概括一下你對軟件授權的理解,及其對軟件開發的影響。
8.請概括一下你在構建iOS應用時的測試過程。iOS應用如何實現對其他語言、日期格式以及貨幣單位的支持?
9.請描述一下Instruments及其作用。
***
關于iOS技術
請解釋一下Handoff是什么,并簡述它是如何實現iOS、Mac/網頁應用互通的。
iCloud包含了哪些技術與服務?
iOS擴展是指?能否列舉一些熱門或常見的范例?
HealthKit是什么?
HomeKit是什么?
Apple Pay是什么?能否描述一下如何在應用中使用Apple Pay?
請解釋一下iOS應用沙盒機制。
是一種安全體系,它規定了應用程序只能在為該應用創建的文件夾內讀取文件,不可以訪問其他地方的內容。所有的非代碼文件都保存在這個地方,比如圖片、聲音、屬性列表和文本文件等
iOS應用是如何實現后臺多任務處理(Multitasking)的?
Cocoa/Cocoa Touch是什么?
由蘋果公司提供的軟件開發api, 用于開發 iPhone\iPod\iPad上的軟件。也是蘋果公司針對iPhone應用程序快速開發提供的一個類庫。
請概括一下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 5、5S、6以及6+在硬件性能方面有何差異?這對注重性能的應用有何限制?
關于編程
Cocoa /Cocoa Touch包含什么?不包含什么?
a:相同之處:兩者都包含OC運行時的兩個核心框架:
cocoa包含Foundation和AppKit框架,可用于開發Mac OS X系統的應用程序
cocoa touch包含Foundation和UIKit框架,可用于開發iPhone OS 系統的應用程序
Cocoa是Mac OS X的開發環境,cocoa Touch是 Iphone OS的開發環境
為什么Cocoa Touch的類名稱是以兩個大寫字母開頭的?
a:蘋果的命名規范,避免命名沖突
請說明如何使用Instancetype及其重要性。
a:instancetype可以返回和方法所在類相同類型的對象,id只能返回未知類型的對象;
instancetype只能作為返回值,不能像id那樣作為參數
重要性:編譯器就能夠根據返回的數據類型檢測出該對象是否實現某某方法。有利于開發者在編譯階段發現錯誤。
為什么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?
關于界面
iPhone5、6、6+以及iPad Air 2的屏幕分辨率分別是多少?
分辨率的計算單位是什么?
a:像素
請解釋一下Interface Builder的作用以及NIB文件的概念。
a:用于設計和測試用戶界面
Nib文件是一種特殊類型的資源文件,它用于保存iPhone OS或Mac OS X應用程序的用戶接口。Nib文件是Interface Builder文檔。
iOS UI的圖像儲存類型是什么?
請描述一下Storyboard和標準NIB文件的差別。
設備狀態欄(Device Status Bar)是什么?高度如何?是否透明?在手機通話或者導航狀態下,它是如何顯示的?
導航欄(Navigation Bar)是什么?能否拿出你的iPhone,指出你下載的哪些應用運用了導航欄?
選項卡(Tab Bar)和工具欄(Toolbar)分別是什么?兩者之間有何共同點和不同點?
表視圖(Table View)是什么?集合視圖(Collection View)又是什么?
什么時候用“彈出(Popover)”屬性最為合適?
Split-view Controller是什么?
a:分割視圖控制器
選取器視圖(Picker View)適合存放哪類內容?
應該在什么情況下使用標簽、文本域和文本視圖?
分段控件(Segmented Control)的作用是什么?
a:分段的控制、頁面的切換等。
模態視圖(Modal View)是什么?
a:比如UIAlertView,它就是一個模態視圖。對于模態視圖和普通視圖最主要的區別就是模態視圖顯示的時候不能對其他視圖進行操作
iOS通知屬于什么類型?
***
關于設計
iOS應用圖標是指什么?請盡可能詳細地描述一下。
最小尺寸和最大尺寸的應用圖標分別是什么樣子的?
應用圖標能否包含透明的部分?
Newsstand的圖標與常規應用有何不同?
請解釋一下啟動畫面(Launch Images)。
自動布局(Auto Layout)的作用是什么?請概括一下它是如何運行的。
設計軟件時為什么要加上動畫?
請描述一下軟件設計中的交互和Feedback有什么作用。
設計iPhone和iPad應用時,應分別考慮哪些因素?
請描述一下原型設計對于軟件開發的意義。其作用是什么?
關于App Store
應用內購買(In-App Purchases)是怎么回事?IAP能夠為用戶帶來哪些新體驗?
你是否在App Store上發布過應用?能否概括一下過程?
iTunes Connect是什么?
a:是面向應用開發人員的一個門戶網站,允許開發人員管理其應用,跟蹤下載情況。
Provisioning Profiles是指?
a:需要創建一個自動配置文件(provisioning profile),應用程序才能在設備上運行
App ID是什么?
a:蘋果應用程序的唯一標識
iOS的開發和發布簽名證書有何異同?
a:開發證書是用來測試的,需要將設備綁定到賬號,才可以識別,在真機調試的時候可以看程序打印;發布證書主要用來打包發布APP用的,也可用于真機調試,但是看不到程序打印
如何使用TestFlight?通過Ad-hoc發布應用的話,該如何使用UUID?
應何時驗證購買收據?
發布iAds(蘋果平臺廣告)有哪些要求?
***
趣味問答
最近有沒有開發什么好玩的東西?你最引以為豪的作品是什么?
談一談你常用的開發工具都有哪些優勢?
你最敬佩的獨立Mac或者iOS應用開發者是誰?
a.李明杰
最喜歡什么項目?哪種類型的?
a.實用型的項目,辦公或者社交類型的
你覺得Xcode有哪些需要改進的地方?
iOS上你最喜歡哪些API?
a:最喜歡GPS和陀螺儀等傳感器的API,可以開發很多有意思的應用程序
是否有最中意的錯誤報告?
你最愛以哪種方式來檢驗一項新技術是否好用?