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