最近記錄一下iOS面試題难菌,只做筆記竞惋,方便隨時查看柜去,如有不當之處感謝大牛指點。目錄如下拆宛,持續(xù)更新嗓奢。
技能要求
UI視圖
OC語言
Runtime
內(nèi)存管理
Block
多線程
RunLoop
網(wǎng)絡
設計模式
架構(gòu)/框架
算法
第三方
面試總結(jié)
1.技能要求
? ? ?初級:
精通Objective-C語言基礎
精通UIKit等Cocoa Framework
熟悉網(wǎng)絡通信機制以及常用數(shù)據(jù)傳輸協(xié)議
具備主流開源框架的使用經(jīng)驗
?? ??中級:
扎實的編程基礎、能夠設計出良好的數(shù)據(jù)結(jié)構(gòu)浑厚、能用一些算法解決一些實際的問題
能夠深入的理解一些OC語言的機制(比如Runtime實際是OC語言的一個基石)股耽、內(nèi)存管理根盒、網(wǎng)絡、多線程物蝙、GUI
精通常用設計模式炎滞、框架、架構(gòu)
良好的分析诬乞、解決問題的能力(源碼的學習可以深入的了解一些解決問題的思路和邏輯册赛,包括學習系統(tǒng)的設計方案和思想)
? ? ?高級:
解決研發(fā)過程中的關(guān)鍵問題和技術(shù)難題(創(chuàng)造性的提出一些解決方案)
調(diào)優(yōu)設備流量、性能震嫉、電量等
較強的軟件設計能力
對iOS內(nèi)部原理有深刻理解
? ? ? 資深:
精通高性能編程以及性能調(diào)優(yōu)(ps: 對象的創(chuàng)建--前期就考慮用多線程處理這些問題 ?击奶、大量字符串的遍歷--選擇一個較優(yōu)的算法,在前期解決掉)
靈活運用數(shù)據(jù)結(jié)構(gòu)责掏、算法解決復雜程序設計問題
提供性能優(yōu)化柜砾、日志搜集、統(tǒng)計分析等方案
架構(gòu)换衬、模塊設計
2.UI視圖
UITableView相關(guān)(重用機制的理解和運用方面痰驱,包括我們在UITableView的使用過程中,會涉及到對數(shù)據(jù)源的一個多線程的操作瞳浦,這里面就涉及到了一個數(shù)據(jù)源同步的問題)
事件響應&視圖響應
圖像顯示原理(UI視圖的圖像顯示原理是怎樣的担映?我們創(chuàng)建了一個控件,最后是如何轉(zhuǎn)化到屏幕上的每一個像素點的呢叫潦?)
UI卡頓蝇完、掉幀
UI繪制原理/異步繪制原理
離屏渲染
3.OC語言
分類(分類的實現(xiàn)機制、原理是怎樣的矗蕊?我們應該怎樣為一個分類提供實例變量呢短蜕?涉及到關(guān)聯(lián)對象的考察)
關(guān)聯(lián)對象
擴展、代理怎么使用
KVO傻咖、KVC( 系統(tǒng)的實現(xiàn)機制朋魔、原理、包括涉及到了哪些設計思想)
NSNotification
屬性關(guān)鍵字
4.Runtime
對象卿操、類對象警检、元類對象是怎么理解的?以及他們之間的關(guān)系是怎樣的害淤?
消息的傳遞機制是怎樣的扇雕?
消息轉(zhuǎn)發(fā)流程是怎樣的?
方法緩存 ?(我們進行方法查找的過程當中窥摄,會使用到系統(tǒng)或者說Runtime中一個方法緩存的機制镶奉,這個機制又是怎樣運行的呢?)
Methood-Swizzling是Runtime的一種運用,可能會結(jié)合實際的場景腮鞍,比如說通過時長統(tǒng)計框架這樣的考察來了解對于Runtime的Methood-Swizzling技術(shù)的一個實際的運用
動態(tài)添加方法
5.內(nèi)存管理
ARC
MRC
引用計數(shù)機制
弱引用表
AutoReleasePool的實現(xiàn)機制和原理是怎樣的
循環(huán)引用
6.Block
Block的本質(zhì)(什么是block,你對block的理解)
截獲變量特性
__block修飾符的本質(zhì)(在什么情況下使用)
Block的內(nèi)存管理
循環(huán)引用(Block經(jīng)常會產(chǎn)生的循環(huán)引用)
7.多線程
GCD(講述多線程的各種技術(shù)方案GCD莹菱、NSOperation/NSOperationQueue移国、NSThread)
NSOperation/NSOperationQueue
NSThread
線程同步、資源共享(在我們實際運用多線程運用技術(shù)過程中道伟,所產(chǎn)生或者引發(fā)的線程同步迹缀、資源共享問題)
互斥鎖、自旋鎖蜜徽、遞歸鎖等相關(guān)鎖的一些技術(shù)內(nèi)容
8.RunLoop
什么是RunLoop?(剖析RunLoop的源碼)
Mode/Source/Timer/Observer
事件循環(huán)機制(RunLoop有事做事祝懂,沒事休息是由事件循環(huán)機制來維護的)
RunLoop與NSTimer之間的關(guān)系是怎樣的?(我們在使用NSTimer的時候拘鞋,應該怎樣考慮和RunLoop的關(guān)系砚蓬,包括RunLoop所帶來的影響)
RunLoop與線程之間有什么關(guān)系?
如何通過RunLoop來實現(xiàn)常駐線程盆色?
9.網(wǎng)絡
HTTP協(xié)議(什么是HTTP灰蛙,HTTP當中的get和post有什么區(qū)別)
HTTPS與網(wǎng)絡安全(HTTPS連接建立流程是什么,它與安全又有怎么的關(guān)系呢)
TCP/UDP(TCP連接建立的三次握手隔躲,四次揮手以及UDP和長鏈接之間都有怎樣的關(guān)系和含義呢)
DNS解析
Session/Cookie
10.設計模式
六大設計原則(設計模式所遵從的六大設計原則)
責任鏈
橋接
適配器
單例
命令
11.架構(gòu)/框架
圖片緩存框架
時長統(tǒng)計框架
復雜頁面架構(gòu)設計
客戶端整體架構(gòu)
12.算法
字符串反轉(zhuǎn)
鏈表反轉(zhuǎn)
有序數(shù)組合并
Hash算法
查找兩個子視圖的共同父視圖
求無序數(shù)組當中的中位數(shù)
13.第三方庫
AFNetworking
SDWebImageView
Reactive Cocoa
AsyncDisplayKit
14.章節(jié)結(jié)構(gòu)
? ?真題入手-->技術(shù)原理-->企業(yè)級實踐
————————————————
版權(quán)聲明:本文為CSDN博主「ochenmengo」的原創(chuàng)文章摩梧,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明宣旱。
原文鏈接:https://blog.csdn.net/ochenmengo/article/details/104527860/