一、UI視圖
其中包括事件傳遞、視圖響應(yīng)、UI布局、繪制、Tableview重用機(jī)制的理解等基本技術(shù)點(diǎn),也包括如離屏渲染、流式頁(yè)面的性能優(yōu)化、異步繪制、UI渲染機(jī)制等偏底層技術(shù)的考察。
二、Objective-C語(yǔ)言
其中包括如KVO、KVC、分類、擴(kuò)展、關(guān)聯(lián)對(duì)象等系統(tǒng)實(shí)現(xiàn)原理和機(jī)制,以及NSNotification、屬性關(guān)鍵字等相關(guān)技術(shù)點(diǎn)的考察。
三、Runtime
可以說(shuō)是中級(jí)以及以上工程師的必備技術(shù)要求,面試官往往會(huì)考察大家對(duì)對(duì)象、類對(duì)象、元類對(duì)象的理解、消息傳遞機(jī)制、消息轉(zhuǎn)發(fā)流程、Method-Swizzling、ISA-swizzling、動(dòng)態(tài)方法解析、動(dòng)態(tài)添加方法等。
四、內(nèi)存管理
可以說(shuō)是高階考點(diǎn),也是難點(diǎn),中高級(jí)及以上無(wú)法回避的問(wèn)題。考察內(nèi)容基本包括:weak自動(dòng)置nil、ARC、MRC、自動(dòng)釋放池的實(shí)現(xiàn)原理、循環(huán)引用、引用計(jì)數(shù)管理思想等。
五、Block
iOS當(dāng)中非常重要的OC語(yǔ)言特性,自然也是面試常考點(diǎn)。其中包括截獲變量特性、__Block關(guān)鍵字、Block的本質(zhì)、Block的內(nèi)存管理和循環(huán)引用等。
六、多線程
面試高級(jí)考點(diǎn)。iOS常見(jiàn)的多線程技術(shù)NSOperation&NSOperationQueue 、NSThread、GCD;那么面試過(guò)程當(dāng)中,往往會(huì)結(jié)合實(shí)際代碼考察大家對(duì)多線程技術(shù)的掌握深度,包括對(duì)于常見(jiàn)鎖的考察,如NSLock、遞歸鎖、自旋鎖、條件鎖等等。
七、RunLoop
相信大家都知道RunLoop可以有事做事,沒(méi)事休息,面試當(dāng)中的考察可能要更深入些,RunLoop為什么會(huì)有事做事沒(méi)事休息,系統(tǒng)是怎樣實(shí)現(xiàn)的。再比如怎樣實(shí)現(xiàn)一個(gè)常駐線程、RunLoop和線程的關(guān)系是怎樣的等等。
八、網(wǎng)絡(luò)
其中包括HTTP相關(guān)的中間人攻擊、HTTPS的連接建立流程、對(duì)稱加密、非對(duì)稱加密、DNS劫持、TCP的滑動(dòng)窗口協(xié)議、可靠傳輸是怎樣保證的,以及TCP的慢啟動(dòng)特點(diǎn),Session/Cookie的區(qū)別等等,這些都是面試中高級(jí)崗位必考問(wèn)題。
九、設(shè)計(jì)模式
其中包括常見(jiàn)的軟件設(shè)計(jì)原則,責(zé)任鏈、適配器、橋接、命令、單例、策略模式等等,面試官會(huì)讓你結(jié)合實(shí)際業(yè)務(wù)場(chǎng)景,現(xiàn)場(chǎng)考察你對(duì)設(shè)計(jì)模式的運(yùn)用和理解的。
十、架構(gòu)/框架
其中包括常見(jiàn)的如怎樣設(shè)計(jì)圖片緩存框架、網(wǎng)絡(luò)框架,客戶端的整體架構(gòu)怎樣實(shí)現(xiàn),常見(jiàn)的解耦方式有哪些,大部分人都知道OpenURL是一種解耦方案,那依賴注入這種方式可能很多人會(huì)感到陌生,這也是面試官期許的答案。
十一、算法
其中包括BAT、TMD經(jīng)常考察的有序數(shù)組歸并、鏈表反轉(zhuǎn)、字符串反轉(zhuǎn)、大數(shù)相加算法思想等等,這部分變化就很多了。
十二、第三方
常見(jiàn)的AFNetworking、SDWebImageView、Reactive Cocoa、React Native等的原理。