- 相關推薦
iOS開發(fā)設計面試試題
無論是對于公司還是開發(fā)者或設計師個人而言,面試都是一項耗時耗錢的項目,本文作者Cameron Banga從編程、設計、App Store等各個方面對iOS開發(fā)者及設計師在面試時可能會遇到的問題進行了篩選與匯總。一方面,能夠幫助HR在短時間內(nèi)獲取更多反饋信息,更好地甄選合適人選,而iOS開發(fā)者及設計師在尋找相關工作時,也可作為參考,為面試做好萬全準備。
iOS開發(fā)設計面試試題一
100個iOS開發(fā)/設計程序員面試題匯總,你將如何作答?
常見問題
你昨天/這周學習了什么?
你為什么熱衷于軟件開發(fā)?
你對哪一種控制系統(tǒng)比較熟悉?
是否參與過GitHub項目?
是否參與過GitHub或其他同類型網(wǎng)站的iOS開源項目?
請描述一下你的iOS應用開發(fā)流程。
是否熟知CocoaPods?它是什么?如何運行的?
請概括一下你對軟件授權的理解,及其對軟件開發(fā)的影響。
請概括一下你在構建iOS應用時的測試過程。iOS應用如何實現(xiàn)對其他語言、日期格式以及貨幣單位的支持?
請描述一下Instruments及其作用。
關于iOS技術
請解釋一下Handoff是什么,并簡述它是如何實現(xiàn)iOS、Mac/網(wǎng)頁應用互通的。
iCloud包含了哪些技術與服務?
iOS擴展是指?能否列舉一些熱門或常見的范例?
HealthKit是什么?
HomeKit是什么?
Apple Pay是什么?能否描述一下如何在應用中使用Apple Pay?
請解釋一下iOS應用沙盒機制。
VoiceOver是什么?請舉例解釋一下iOS中的輔助功能(Accessibility)。開發(fā)者如何使用這些功能?
iOS應用是如何實現(xiàn)后臺多任務處理(Multitasking)的?
Game Center針對iOS游戲有哪些功能?
iBeacons是什么?
Cocoa/Cocoa Touch是什么?
請概括一下Core Audio,Core Data以及Core Location各是什么。它們對iOS應用有何意義?
請描述SpriteKit和SceneKit的作用。(面試網(wǎng) www.pincai.com)
Metal是什么?
響應鏈(Responder Chain)是什么?它是如何發(fā)揮作用的?
按鈕和其他控制方式對哪些操作做出回應?
AppDelegate扮演著什么樣的角色?
請解釋一下NSUserDefaults。就你而言,你會如何在磁盤中對數(shù)組對象進行序列化?
你會如何儲存用戶的認證信息?
請問何為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 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,你會如何處理?
如果應用的新版本出現(xiàn)了Regression的情況,該如何補救?如何防止用戶在使用過程中遇到新的Bug?
Objective-C的類是怎么執(zhí)行的?Objective-C Runtime是如何實現(xiàn)的?
iOS是如何提高安全性,保護用戶隱私信息的?
應用可以下載并即刻顯示數(shù)據(jù)。如何根據(jù)MVC來判斷下載的最佳位置?
MVC對代碼庫(Codebase)的設計有何影響?
Controller Life-Cycle以及View Life-cycle分別有哪些調(diào)試方法?
iOS使用的是哪些設計模式(Design Patterns)?你的代碼庫使用的是哪些設計模式?
iOS提供哪些線程?如何充分利用這些線程?
請簡要描述一下UIScrollView的執(zhí)行過程。它是如何響應手勢識別(Gesture Recognizer)、多點觸控(Multi-Touch)和Run Loop的?
你認為iOS需要添加或改進哪些API?
關于界面
iPhone5、6、6+以及iPad Air 2的屏幕分辨率分別是多少?
分辨率的計算單位是什么?
請解釋一下Interface Builder的作用以及NIB文件的概念。
iOS UI的圖像儲存類型是什么?
請描述一下Storyboard和標準NIB文件的差別。
設備狀態(tài)欄(Device Status Bar)是什么?高度如何?是否透明?在手機通話或者導航狀態(tài)下,它是如何顯示的?
導航欄(Navigation Bar)是什么?能否拿出你的iPhone,指出你下載的哪些應用運用了導航欄?
選項卡(Tab Bar)和工具欄(Toolbar)分別是什么?兩者之間有何共同點和不同點?
表視圖(Table View)是什么?集合視圖(Collection View)又是什么?
什么時候用“彈出(Popover)”屬性最為合適?
Split-view Controller是什么?
選取器視圖(Picker View)適合存放哪類內(nèi)容?
應該在什么情況下使用標簽、文本域和文本視圖?
分段控件(Segmented Control)的作用是什么?
模態(tài)視圖(Modal View)是什么?
iOS通知屬于什么類型?
關于設計
iOS應用圖標是指什么?請盡可能詳細地描述一下。
最小尺寸和最大尺寸的應用圖標分別是什么樣子的?
應用圖標能否包含透明的部分?
Newsstand的圖標與常規(guī)應用有何不同?
請解釋一下啟動畫面(Launch Images)。
自動布局(Auto Layout)的作用是什么?請概括一下它是如何運行的。
設計軟件時為什么要加上動畫?
請描述一下軟件設計中的交互和Feedback有什么作用。
設計iPhone和iPad應用時,應分別考慮哪些因素?
請描述一下原型設計對于軟件開發(fā)的意義。其作用是什么?
關于App Store
應用內(nèi)購買(In-App Purchases)是怎么回事?IAP能夠為用戶帶來哪些新體驗?
你是否在App Store上發(fā)布過應用?能否概括一下過程?
iTunes Connect是什么?
Provisioning Profiles是指?
App ID是什么?
iOS的開發(fā)和發(fā)布簽名證書有何異同?
如何使用TestFlight?通過Ad-hoc發(fā)布應用的話,該如何使用UUID?
應何時驗證購買收據(jù)?
發(fā)布iAds(蘋果平臺廣告)有哪些要求?
趣味問答
最近有沒有開發(fā)什么好玩的東西?你最引以為豪的作品是什么?
談一談你常用的開發(fā)工具都有哪些優(yōu)勢?
你最敬佩的獨立Mac或者iOS應用開發(fā)者是誰?
最喜歡什么項目?哪種類型的?
你覺得Xcode有哪些需要改進的地方?
iOS上你最喜歡哪些API?
是否有最中意的錯誤報告?
你最愛以哪種方式來檢驗一項新技術是否好用?
為什么詞典被稱作Dictionaries,而不是HashTable或HashMap?
iOS開發(fā)設計面試試題二
設計模式是什么? 你知道哪些設計模式,并簡要敘述?
設計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型的事情。
1). MVC模式:Model View Control,把模型 視圖 控制器 層進行解耦合編寫。
2). MVVM模式:Model View ViewModel 把模型 視圖 業(yè)務邏輯 層進行解耦和編寫。
3). 單例模式:通過static關鍵詞,聲明全局變量。在整個進程運行期間只會被賦值一次。
4). 觀察者模式:KVO是典型的通知模式,觀察某個屬性的狀態(tài),狀態(tài)發(fā)生變化時通知觀察者。
5). 委托模式:代理+協(xié)議的組合。實現(xiàn)1對1的反向傳值操作。
6). 工廠模式:通過一個類方法,批量的根據(jù)已有模板生產(chǎn)對象。
MVC 和 MVVM 的區(qū)別
1). MVVM是對胖模型進行的拆分,其本質(zhì)是給控制器減負,將一些弱業(yè)務邏輯放到VM中去處理。
2). MVC是一切設計的基礎,所有新的設計模式都是基于MVC進行的改進。
#import跟 #include 有什么區(qū)別,@class呢,#import<> 跟 #import””有什么區(qū)別?
答:
1). #import是Objective-C導入頭文件的關鍵字,#include是C/C++導入頭文件的關鍵字,使用#import頭文件會自動只導入一次,不會重復導入。
2). @class告訴編譯器某個類的聲明,當執(zhí)行時,才去查看類的實現(xiàn)文件,可以解決頭文件的相互包含。
3). #import<>用來包含系統(tǒng)的頭文件,#import””用來包含用戶頭文件。
frame 和 bounds 有什么不同?
frame指的是:該view在父view坐標系統(tǒng)中的位置和大小。(參照點是父view的坐標系統(tǒng))
bounds指的是:該view在本身坐標系統(tǒng)中的位置和大小。(參照點是本身坐標系統(tǒng))
Objective-C的類可以多重繼承么?可以實現(xiàn)多個接口么?Category是什么?重寫一個類的方式用繼承好還是分類好?為什么?
答:Objective-C的類不可以多重繼承;可以實現(xiàn)多個接口(協(xié)議);Category是類別;一般情況用分類好,用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關系。
@property 的本質(zhì)是什么?ivar、getter、setter 是如何生成并添加到這個類中的
@property 的本質(zhì)是什么?
@property = ivar + getter + setter;
“屬性” (property)有兩大概念:ivar(實例變量)、getter+setter(存取方法)
“屬性” (property)作為 Objective-C 的一項特性,主要的作用就在于封裝對象中的數(shù)據(jù)。 Objective-C 對象通常會把其所需要的數(shù)據(jù)保存為各種實例變量。實例變量一般通過“存取方法”(access method)來訪問。其中,“獲取方法” (getter)用于讀取變量值,而“設置方法” (setter)用于寫入變量值。
@property中有哪些屬性關鍵字?/ @property 后面可以有哪些修飾符?
屬性可以擁有的特質(zhì)分為四類:
1.原子性--- nonatomic 特質(zhì)
2.讀/寫權限---readwrite(讀寫)、readonly (只讀)
3.內(nèi)存管理語義---assign、strong、 weak、unsafe_unretained、copy
4.方法名---getter=、setter=
5.不常用的:nonnull,null_resettable,nullable
屬性關鍵字 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那種情況下用?
答:
1). readwrite 是可讀可寫特性。需要生成getter方法和setter方法。
2). readonly 是只讀特性。只會生成getter方法,不會生成setter方法,不希望屬性在類外改變。
3). assign 是賦值特性。setter方法將傳入?yún)?shù)賦值給實例變量;僅設置變量時,assign用于基本數(shù)據(jù)類型。
4). retain(MRC)/strong(ARC) 表示持有特性。setter方法將傳入?yún)?shù)先保留,再賦值,傳入?yún)?shù)的retaincount會+1。
5). copy 表示拷貝特性。setter方法將傳入對象復制一份,需要完全一份新的變量時。
6). nonatomic 非原子操作。決定編譯器生成的setter和getter方法是否是原子操作,atomic表示多線程安全,一般使用nonatomic,效率高。
什么情況使用 weak 關鍵字,相比 assign 有什么不同?
1.在 ARC 中,在有可能出現(xiàn)循環(huán)引用的時候,往往要通過讓其中一端使用 weak 來解決,比如: delegate 代理屬性。
2.自身已經(jīng)對它進行一次強引用,沒有必要再強引用一次,此時也會使用 weak,自定義 IBOutlet 控件屬性一般也使用 weak;當然,也可以使用strong。
IBOutlet連出來的視圖屬性為什么可以被設置成weak?
因為父控件的subViews數(shù)組已經(jīng)對它有一個強引用。
不同點:
assign 可以用非 OC 對象,而 weak 必須用于 OC 對象。
weak 表明該屬性定義了一種“非擁有關系”。在屬性所指的對象銷毀時,屬性值會自動清空(nil)。
怎么用 copy 關鍵字?
用途:
1. NSString、NSArray、NSDictionary 等等經(jīng)常使用copy關鍵字,是因為他們有對應的可變類型:NSMutableString、NSMutableArray、NSMutableDictionary;
2. block 也經(jīng)常使用 copy 關鍵字。
說明:
block 使用 copy 是從 MRC 遺留下來的“傳統(tǒng)”,在 MRC 中,方法內(nèi)部的 block 是在棧區(qū)的,使用 copy 可以把它放到堆區(qū).在 ARC 中寫不寫都行:對于 block 使用 copy 還是 strong 效果是一樣的,但寫上 copy 也無傷大雅,還能時刻提醒我們:編譯器自動對 block 進行了 copy 操作。如果不寫 copy ,該類的調(diào)用者有可能會忘記或者根本不知道“編譯器會自動對 block 進行了 copy 操作”,他們有可能會在調(diào)用之前自行拷貝屬性值。這種操作多余而低效。
用@property聲明的 NSString / NSArray / NSDictionary 經(jīng)常使用 copy 關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
答:用 @property 聲明 NSString、NSArray、NSDictionary 經(jīng)常使用 copy 關鍵字,是因為他們有對應的可變類型:NSMutableString、NSMutableArray、NSMutableDictionary,他們之間可能進行賦值操作(就是把可變的賦值給不可變的),為確保對象中的字符串值不會無意間變動,應該在設置新屬性值時拷貝一份。
1. 因為父類指針可以指向子類對象,使用 copy 的目的是為了讓本對象的屬性不受外界影響,使用 copy 無論給我傳入是一個可變對象還是不可對象,我本身持有的就是一個不可變的副本。
2. 如果我們使用是 strong ,那么這個屬性就有可能指向一個可變對象,如果這個可變對象在外部被修改了,那么會影響該屬性。
總結:使用copy的目的是,防止把可變類型的對象賦值給不可變類型的對象時,可變類型對象的值發(fā)送變化會無意間篡改不可變類型對象原來的值。
淺拷貝和深拷貝的區(qū)別?
答:
淺拷貝:只復制指向對象的指針,而不復制引用對象本身。
深拷貝:復制引用對象本身。內(nèi)存中存在了兩份獨立對象本身,當修改A時,A_copy不變。
系統(tǒng)對象的 copy 與 mutableCopy 方法
不管是集合類對象(NSArray、NSDictionary、NSSet ... 之類的對象),還是非集合類對象(NSString, NSNumber ... 之類的對象),接收到copy和mutableCopy消息時,都遵循以下準則:
1. copy 返回的是不可變對象(immutableObject);如果用copy返回值調(diào)用mutable對象的方法就會crash。
2. mutableCopy 返回的是可變對象(mutableObject)。
一、非集合類對象的copy與mutableCopy
在非集合類對象中,對不可變對象進行copy操作,是指針復制,mutableCopy操作是內(nèi)容復制;
對可變對象進行copy和mutableCopy都是內(nèi)容復制。用代碼簡單表示如下:
二、集合類對象的copy與mutableCopy (同上)
在集合類對象中,對不可變對象進行copy操作,是指針復制,mutableCopy操作是內(nèi)容復制;
對可變對象進行copy和mutableCopy都是內(nèi)容復制。但是:集合對象的內(nèi)容復制僅限于對象本身,對集合內(nèi)的對象元素仍然是指針復制。(即單層內(nèi)容復制)
iOS開發(fā)設計面試試題三
1、最能概括你自己的三個詞是什么?
回答提示:我經(jīng)常用的三個詞是:適應能力強,有責任心和做事有始終,結合具體例子向主考官解釋。
2、你的業(yè)余愛好是什么?
回答提示:找一些富于團體合作精神的,這里有一個真實的故事:有人被否決掉,因為他的愛好是深海潛水。主考官說:因為這是一項單人活動,我不敢肯定他能否適應團體工作。
3、作為被面試者給我打一下分
回答提示:試著列出四個優(yōu)點和一個非常非常非常小的缺點,(可以抱怨一下設施,沒有明確責任人的缺點是不會有人介意的)。
4、你怎么理解你應聘的職位?
回答提示:把崗位職責和任務及工作態(tài)度闡述一下
5、喜歡這份工作的哪一點?
回答提示:相信其實大家心中一定都有答案了吧!每個人的價值觀不同,自然評斷的標準也會不同,但是,在回答面試官這個問題時可不能太直接就把自己心理的話說出來,尤其是薪資方面的問題,不過一些無傷大雅的回答是不錯的考慮,如交通方便,工作性質(zhì)及內(nèi)容
頗能符合自己的興趣等等都是不錯的答案,不過如果這時自己能仔細思考出這份工作的與眾不同之處,相信在面試上會大大加分。
6、為什么要離職?
回答提示:①回答這個問題時一定要小心,就算在前一個工作受到再大的委屈,對公司有多少的怨言,都千萬不要表現(xiàn)出來,尤其要避免對公司本身主管的批評,避免面試官的負面情緒及印象;建議此時最好的回答方式是將問題歸咎在自己身上,例如覺得工作沒有學習發(fā)展的空間,自己想在面試工作的相關產(chǎn)業(yè)中多加學習,或是前一份工作與自己的生涯規(guī)劃不合等等,回答的答案最好是積極正面的。 ②我希望能獲得一份更好的工作,如果機會來臨,我會抓住;我覺得目前的工作,已經(jīng)達到頂峰,即沒有升遷機會。
7、說說你對行業(yè)、技術發(fā)展趨勢的看法?
回答提示:企業(yè)對這個問題很感興趣,只有有備而來的求職者能夠過關。求職者可以直接在網(wǎng)上查找對你所申請的行業(yè)部門的信息,只有深入了解才能產(chǎn)生獨特的見解。企業(yè)認為最聰明的求職者是對所面試的公司預先了解很多,包括公司各個部門,發(fā)展情況,在面試回答問題的時候可以提到所了解的情況,企業(yè)歡迎進入企業(yè)的人是“知己”,而不是“盲人”。
8、對工作的期望與目標何在?
回答提示:這是面試者用來評斷求職者是否對自己有一定程度的期望、對這份工作是否了解的問題。對于工作有確實學習目標的人通常學習較快,對于新工作自然較容易進入狀況,這時建議你,最好針對工作的性質(zhì)找出一個確實的答案,如業(yè)務員的工作可以這樣回答:“我的目標是能成為一個超級業(yè)務員,將公司的產(chǎn)品廣泛的推銷出去,達到最好的業(yè)績成效;為了達到這個目標,我一定會努力學習,而我相信以我認真負責的態(tài)度,一定可以達到這個目標!逼渌惖墓ぷ饕部梢员日者@個方式來回答,只要在目標方面稍微修改一下就可以了。
9、說說你的家庭。
回答提示:企業(yè)面試時詢問家庭問題不是非要知道求職者家庭的情況,探究隱私,企業(yè)不喜歡探究個人隱私,而是要了解家庭背景對求職者的塑造和影響。企業(yè)希望聽到的重點也在于家庭對求職者的積極影響。企業(yè)最喜歡聽到的是:我很愛我的家庭!我的家庭一向很和睦,雖然我的父親和母親都是普通人,但是從小,我就看到我父親起早貪黑,每天工作特別勤勞,他的行動無形中培養(yǎng)了我認真負責的態(tài)度和勤勞的精神。我母親為人善良,對人熱情,特別樂于助人,所以在單位人緣很好,她的一言一行也一直在教導我做人的道理。企業(yè)相信,和睦的家庭關系對一個人的成長有潛移默化的影響。
10、就你申請的這個職位,你認為你還欠缺什么?
回答提示:企業(yè)喜歡問求職者弱點,但精明的求職者一般不直接回答。他們希望看到這樣的求職者:繼續(xù)重復自己的優(yōu)勢,然后說:“對于這個職位和我的能力來說,我相信自己是可以勝任的,只是缺乏經(jīng)驗,這個問題我想我可以進入公司以后以最短的時間來解決,我的學習能力很強,我相信可以很快融入公司的企業(yè)文化,進入工作狀態(tài)!逼髽I(yè)喜歡能夠巧妙地躲過難題的求職者。
iOS開發(fā)設計面試試題四
1、在最初的2-3個月時間里,你希望我能完成哪些工作?
優(yōu)秀的iOS開發(fā)求職者希望在面試過程中做到最好。他們不希望花很多時間慢慢了解公司的結構,他們希望有所作為。所以他們想知道公司會對其有哪些期待?所以,問這個問題很有必要。他們想找到公司對其的目標和期待,才能力求表現(xiàn)突出。
2、公司優(yōu)秀的人,都有哪些共同的特征?
優(yōu)秀的求職者都想成為公司的長期員工。公司每個組織是不同的,那這些不同組織中的員工都有哪些共同的特征呢?他們問這個問題大都是想了解自己是否適合這份工作,以及若想成為公司優(yōu)秀的員工,需要哪些特質(zhì);蛟S這些優(yōu)秀的員工花更多的時間工作,或許更有靈活性和創(chuàng)造性,而不是嚴格遵守公司的各項流程,或者能在新領域開發(fā)新用戶而不是簡單的維持和老用戶的關系。
但是不管面試官怎樣回答這個問題,求職者只是想知道他們是否適合這個工作,如果適合,他們也會向這些員工看齊。
3、怎樣可以促使公司業(yè)績增長?
員工在公司工作,可以把它看成一項投資。因為拿了公司的工資,就需要關心怎樣才能推動公司業(yè)績的增加。比如,雇主希望技術人員對公司的某一個產(chǎn)品進行改版,他們希望技術人員不僅能夠找出解決問題的辦法,最好還能想出辦法帶動其銷量的增加。對求職者而言,也需要了解幫助公司成功就是在幫助自己。
4、員工業(yè)余時間都在做什么?
公司的文化通常都是一項比較有爭議性的話題,因為這很大程度上取決于雇主。如果公司的文化氛圍好,員工狀態(tài)自然好,他們會更加熱愛自己的工作,也可愉快的與周圍的同事相處。但這個問題對面試官比較難回答,除非公司規(guī)模很小,否則他們只能很籠統(tǒng)的回答你。在大概了解這個情況后,求職者可了解自己能否適應公司的文化,然后方便自己做出選擇。
5、你打算如何處理某一問題?
幾乎是每家公司,特別是科技公司,都在面臨科技發(fā)展、競爭對手以及外部經(jīng)濟環(huán)境發(fā)展的變化。一個好的求職者不僅需要了解面試者的想法,還要了解公司未來的發(fā)展藍圖,然后怎樣才能把自己融入到公司里。不過求職者問這個問題,多半是想確認自己是否適合公司的發(fā)展軌跡。
【iOS開發(fā)設計面試試題】相關文章:
iOS面試題集合02-13
iOS面試題匯總02-13
前端開發(fā)常見面試試題02-14
Android開發(fā)工程師面試試題02-14
2016年Java開發(fā)崗位面試題02-20
HR如何設計面試題目08-25
平面設計師面試題目02-15
肯德基面試的面試試題01-20
面試試題精選02-22