第一篇:iOS開發(fā)高級程序員面試題-答案
一、判斷題(每題2分,共20分)
1、UITableView能夠綁定多個數(shù)據(jù)源。(錯)
2、一個UIViewController可以管理多個UITableView。(對)
3、Object-c的類可以多重繼承。(錯)
4、objective-c類里面的方法只有兩種, 靜態(tài)方法和實例方法。(對)
5、NSFileManager和NSWorkspace在使用時都是基于進(jìn)程進(jìn)行單件對象的實例化。(對)
6、用類別增加方法時,不能與原來類中的方法產(chǎn)生名稱沖突。(錯)
7、frame指的是該view在本身坐標(biāo)系統(tǒng)中 的位置和大小。(錯)
8、method是一個方法的名字,selector是一個組合體。(錯)
9、ARC是編譯特性,不是運行時特性,在編譯時,編譯器會自動加上釋放代碼。(對)
10、從iOS4之后,Safari支持全屏瀏覽,Siri支持普通話。(對)
二、填空題(每空2分,共20分)
1、iOS是使用Objective-C語言編寫的,使用該語言開發(fā)的Cocoa是一款功能強大的用戶界面工具包,也是iOS的核心。
2、數(shù)組是將元素在內(nèi)存中連續(xù)存放,由于每個元素占用內(nèi)存相同,可以通過下標(biāo)迅速訪問數(shù)組中任何元素。鏈表恰好相反,其中的元素在內(nèi)存中不是順序存儲的,而是通過存在元素中的指針聯(lián)系到一起。
3、發(fā)送同步請求,程序?qū)⑼V褂脩艚换ィ敝练?wù)器返回數(shù)據(jù)完成,才可以進(jìn)行下一步操作。而發(fā)送異步請求不會阻塞主線程,會建立一個新的線程來操作,之后程序可以繼續(xù)運行。
4、autorelease只是把Object放入了當(dāng)前的autorelease pool中,當(dāng)它被釋放時,其中的所有Object都會被調(diào)用Release。
5、作為Objective-C導(dǎo)入頭文件的關(guān)鍵字,#import<>用來包含系統(tǒng)的頭文件,#import””用來包含用戶頭文件。
三、簡述題(每題4分,共20分)
1、delegate和notification有什么區(qū)別,什么情況下使用?
答:delegate:消息的發(fā)送者(sender)告知接收者(receiver)某個事件將要發(fā)生,delegate同意然后發(fā)送者響應(yīng)事件,delegate機制使得接收者可以改變發(fā)送者的行為。通常發(fā)送者和接收者的關(guān)系是直接的一對多的關(guān)系。
notification:消息的發(fā)送者告知接收者事件已經(jīng)發(fā)生或者將要發(fā)生,僅此而已,接收者并不能反過來影響發(fā)送者的行為。通常發(fā)送者和接收者的關(guān)系是間接的多對多關(guān)系。
2、Object-C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時執(zhí)行代碼、方法又是什么?
答:線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建、使用 GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue。
在主線程執(zhí)行代碼,方法是 performSelectorOnMainThread。
如果想延時執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone。
3、iOS有哪些數(shù)據(jù)持久化方式?
答:四種:屬性列表、對象歸檔、SQLite3和Core Data。
4、Objective-C如何對內(nèi)存管理的,說說你的看法和解決方法?
答:Objective-C的內(nèi)存管理主要有三種方式ARC(自動內(nèi)存計數(shù))、手動內(nèi)存計數(shù)、內(nèi)存池。解決方法的話:誰持有,誰釋放。
5、如何對iOS設(shè)備進(jìn)行性能測試?
答:Profile-> Instruments->Time Profiler。
四、問答題(每題10分,共20分)
1、什么是MVC,為什么使用MVC,有什么好處?描述一下iOS SDK中如何實現(xiàn)MVC的開發(fā)模式。
答:MVC分別為:模型(Model),視圖(View)和控制Controller)。
模型(Model):即“數(shù)據(jù)模型”,用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對數(shù)據(jù)的處理方法。“模型”有對數(shù)據(jù)直接訪問的權(quán)力,例如對數(shù)據(jù)庫的訪問。視圖(View):視圖層能夠?qū)崿F(xiàn)數(shù)據(jù)有目的顯示。
控制器(Controller):控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程。對于iOS SDK,所有的View都是視圖層的,它應(yīng)該獨立于模型層,由視圖控制層來控制。所有的用戶數(shù)據(jù)都是模型層,它應(yīng)該獨立于視圖。所有的ViewController都是控制層,由它負(fù)責(zé)控制視圖,訪問模型數(shù)據(jù)。
2、請闡述UIViewController的生命周期,包括代碼的執(zhí)行順序。答:當(dāng)一個視圖控制器被創(chuàng)建,并在屏幕上顯示的時候。代碼的執(zhí)行順序
// 視圖顯示在屏幕上的順序
1、alloc 創(chuàng)建對象,分配空間。
2、init(initWithNibName)初始化對象,初始化數(shù)據(jù)。
3、viewload 從nib載入視圖, 這一步不需要去干涉。除非沒有使用xib文件創(chuàng)建視圖。
4、viewDidLoad 加載完畢,可以進(jìn)行自定義數(shù)據(jù)以及動態(tài)創(chuàng)建其他控件。
5、viewWillAppear 視圖將出現(xiàn)在屏幕之前,馬上這個視圖即將顯示在屏幕上。
6、viewDidAppear 視圖已在屏幕上渲染完成。
// 視圖將被從屏幕上移除的順序
1、viewWillDisappear 視圖將被從屏幕上移除之前執(zhí)行。
2、viewDidDisappear 視圖已經(jīng)被從屏幕上移除。
3、dealloc 視圖被銷毀,此時需要在init和viewDidLoad中創(chuàng)建的對象進(jìn)行釋放。
4、viewDidUnload 出現(xiàn)內(nèi)存警告在內(nèi)存不足時執(zhí)行,并對所有非當(dāng)前顯示的controller執(zhí)行。本視圖的所有子視圖將被銷毀,以釋放內(nèi)存,此時開發(fā)者需要手動對viewLoad、viewDidLoad中創(chuàng)建的對象釋放內(nèi)存。因為當(dāng)這個視圖再次顯示在屏幕上的時候,viewLoad、viewDidLoad 再次被調(diào)用,以便再次構(gòu)造視圖。
五、論述題(20分)
請針對正泰中自智慧水務(wù)APP的需求(見現(xiàn)場展示的原型),論述您的開發(fā)思路和使用的開發(fā)技術(shù)。
第二篇:100個iOS開發(fā)設(shè)計程序員面試題匯總
www.tmdps.cn
美國上市公司
億元級外企IT培訓(xùn)企業(yè)
100個iOS開發(fā)/設(shè)計程序員面試題匯總
無論是對于公司還是開發(fā)者或設(shè)計師個人而言,面試都是一項耗時耗錢的項目,本文作者Cameron Banga從編程、設(shè)計、App Store等各個方面對iOS開發(fā)者及設(shè)計師在面試時可能會遇到的問題進(jìn)行了篩選與匯總。一方面,能夠幫助HR在短時間內(nèi)獲取更多反饋信息,更好地甄選合適人選,而iOS開發(fā)者及設(shè)計師在尋找相關(guān)工作時,也可作為參考,為面試做好萬全準(zhǔ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)用互通的。
iCloud包含了哪些技術(shù)與服務(wù)?
iOS擴展是指?能否列舉一些熱門或常見的范例?
HealthKit是什么?
HomeKit是什么?
Apple Pay是什么?能否描述一下如何在應(yīng)用中使用Apple Pay?
請解釋一下iOS應(yīng)用沙盒機制。
VoiceOver是什么?請舉例解釋一下iOS中的輔助功能(Accessibility)。開發(fā)者如何使用這些功能?
iOS應(yīng)用是如何實現(xiàn)后臺多任務(wù)處理(Multitasking)的?
Game Center針對iOS游戲有哪些功能?
iBeacons是什么?
www.tmdps.cn
美國上市公司
億元級外企IT培訓(xùn)企業(yè)
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ù)組對象進(jìn)行序列化?
你會如何儲存用戶的認(rèn)證信息?
請問何為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)的?
www.tmdps.cn
美國上市公司
億元級外企IT培訓(xùn)企業(yè)
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的?
你認(rèn)為iOS需要添加或改進(jìn)哪些API?
四、關(guān)于界面
iPhone5、6、6+以及iPad Air 2的屏幕分辨率分別是多少?
分辨率的計算單位是什么?
請解釋一下Interface Builder的作用以及NIB文件的概念。
iOS UI的圖像儲存類型是什么?
請描述一下Storyboard和標(biāo)準(zhǔn)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)該在什么情況下使用標(biāo)簽、文本域和文本視圖?
分段控件(Segmented Control)的作用是什么?
模態(tài)視圖(Modal View)是什么?
iOS通知屬于什么類型?
五、關(guān)于設(shè)計
iOS應(yīng)用圖標(biāo)是指什么?請盡可能詳細(xì)地描述一下。
最小尺寸和最大尺寸的應(yīng)用圖標(biāo)分別是什么樣子的?
應(yīng)用圖標(biāo)能否包含透明的部分?
www.tmdps.cn
美國上市公司
億元級外企IT培訓(xùn)企業(yè)
Newsstand的圖標(biāo)與常規(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有哪些需要改進(jìn)的地方?
iOS上你最喜歡哪些API?
是否有最中意的錯誤報告?
你最愛以哪種方式來檢驗一項新技術(shù)是否好用?
為什么詞典被稱作Dictionaries,而不是HashTable或HashMap?
以上內(nèi)容來自達(dá)內(nèi)iOS培訓(xùn)機構(gòu),更多關(guān)于iOS的內(nèi)容歡迎在線咨詢!
第三篇:IOS開發(fā)工程師面試題
湖南路線圖網(wǎng)絡(luò)科技有限公司 技術(shù)中心 內(nèi)部資料
IOS開發(fā)工程師面試題(45分鐘)
1.請詳述viewController的生命周期?
2.OC中類的屬性retain, assign, weak, strong的作用是什么?
3.OC中SEL是什么,有什么作用?
4.如何在OC的字典或數(shù)組中存取一個基本數(shù)據(jù)類型的值?如何把字典或數(shù)組中的值轉(zhuǎn)換成基本數(shù)據(jù)類型的值?
5.IOS中界面間傳值的方式有哪些?
6.OC中通知有哪幾類?請簡述蘋果推送的流程?
7.OC中淺拷貝和深拷貝的區(qū)別是什么?
8.什么是block?block如何使用?
9.談?wù)凮C中內(nèi)存管理的方式和過程,以及ARC的使用注意事項,如何在ARC的工
程中使用非ARC的類和開源框架?
10.簡要說明下OC的延展和分類的作用和區(qū)別
11.OC中多線程的實現(xiàn)方式有哪些?如何實現(xiàn)在一個異步線程中使用一個定時器?
12.請例舉常用的網(wǎng)絡(luò)請求開源框架、JSON解析開源框架、UI開源框架。
13.請詳述如何使app對IOS6、IOS7、iphone4S、iphone5做界面適配的方法
14.請列舉出你所知道的設(shè)計模式及各種設(shè)計模式的特點。
第四篇:c#高級程序員面試題
1.簡要說一下.Net的編譯過程.2.ASP.NET與ASP的區(qū)別
3.談一下ASP.NET頁面生命周期
4.ASP.NET程序的運行機制。可以從一個頁面的請求到返回的角度談
5.Javascript中類庫的制作和調(diào)用方法
6.AJAX原理及你所知道和使用過的版本
7.WebService使用的協(xié)議及簡述使用流程
8.談一下WebService的安全性及相關(guān)技術(shù)
9.事務(wù)操作的原理及同庫事務(wù)及跨庫事務(wù)的思路
10.簡述你的一個項目,主要的流程及部署
11.談一下你對SOA的理解及熟習(xí)的SOA架構(gòu)
12.談一下你對SaaS的理解
13.你是否在ASP.NET之外還會JAVA、PHP?
14.如果讓你設(shè)計一個登錄模塊,你會怎么考慮和制作?
15.如果讓你制作日志模塊,你會怎么考慮和制作?
16.如果讓你制作用戶權(quán)限模塊,你會怎么考慮和制作?
17.如果讓你做文件上傳模塊,你會怎么考慮和制作?如果文件大于1G你會怎么考慮設(shè)計?
18.是否了解及使用過WCF、WF、WPF?
19.Web頁面的打印及報表的輸出思路?
20.報表的制作思路?
21.談一下你對.Net中垃圾回收的理解?
22.ADO和ADO.NET的區(qū)別?
第五篇:iOS面試題整理
1.用#define定義一個宏,表示一年中的秒數(shù)。
@interface USER
{NSSTring *name;}
@end
a)self.name=@”abc”與name=@”abc”的區(qū)別?
b)self.name=[[NSSTring alloc]initWithString:@”abc”];中name的retainCount是多少?
c)補全setName:(NSSTring *)myName方法
d)這里用self.name訪問了name屬性,還可以用別的方法訪問name屬
性么?
2.UITableView中什么可以自定義?
3.view.bounds和view.frame有什么區(qū)別?
4.iOS中是怎樣進(jìn)行內(nèi)存管理的?
5.簡述分類與繼承的區(qū)別。
6.簡述CALayer與UIView的區(qū)別。
7.簡述堆與棧的區(qū)別。
8.簡述Delegate、KVO和NotificationCenter區(qū)別。
9.用預(yù)處理指令#define聲明MAX(X,Y)和MIN(X,Y)。
10.試寫出strCompare
11.對于一個字節(jié)(8bit)的變量,求其二進(jìn)制中“1”的個數(shù),要求算法的執(zhí)
行效率盡可能地高。
12.求兩個正整數(shù)的最大公約數(shù),要求算法的執(zhí)行效率盡可能地高。
13.如何判斷兩個單向鏈表是否相交?
14.能不能找到符合如下條件的9位數(shù):
a)這個數(shù)包括了1-9這9個數(shù)字;
b)這個9位數(shù)的前n位都能被n整除,若這個數(shù)表示為abcdefghi,則ab
可以被2整除,abc可以被3整除??abcdefghi可以被9整除。
15.說說autorelease和release 的區(qū)別?
16.如何下載圖片?
17.微博的認(rèn)證?
18.版本擴展?
19.程序調(diào)試?
20..(點)運算符?
21.UITableView中每一行都緩存圖片的處理,如何處理才能在滑動時不會出現(xiàn)等
待的現(xiàn)象。
22.