2019年,iOS 大廠面試題大全(附答案)
這個欄目將持續更新--請iOS的小夥伴關注!
1、[多線程的應用](多線程的應用)
2、[GCD實現多個請求都完成之後返回結果](GCD實現多個請求都完成之後返回結果)
3、[A、B兩個int數組,得到A數組中B數組不包含的元素](A、B兩個int數組,得到A數組中B數組不包含的元素)
4、[事件傳遞鏈,頁面上一個按鈕,按鈕和它的superView有一樣的action,為什麼只執行button的action?](事件傳遞鏈,頁面上一個按鈕,按鈕和它的superView有一樣的action,為什麼只執行button的action?)
5、[runtime的應用](runtime的應用)
6、[array中加入對象,對象的retainCount會加1 如何是的對象自己管理自己的生命周期](array中加入對象,對象的retainCount會加1 如何是的對象自己管理自己的生命周期)
7、[bugly的卡頓監控原理](bugly的卡頓監控原理)
8、[如何架構一個app](如何架構一個app)
9、[c中,malloc對象,傳入了size,free只需要指針,這是為什麼?](c中,malloc對象,傳入了size,free只需要指針,這是為什麼?)
10、[資料庫選擇原因(realm 、coreData、FMDB、Sqlite)](資料庫選擇原因(realm 、coreData、FMDB、Sqlite))
11、[資料庫做過哪些優化](資料庫做過哪些優化)
12、[腳本打包原理](腳本打包原理)
13、[app運行過程中,同時最多有幾個線程,怎麼實現的高並發](app運行過程中,同時最多有幾個線程,怎麼實現的高並發)
14、[iOS應用導航模式有哪些?](iOS應用導航模式有哪些?)
15、[iOS中持久化方式有哪些?](iOS中持久化方式有哪些?)
16、[iOS單元測試框架有哪些?](iOS單元測試框架有哪些?)
17、[iOS atomatic nonatomic區別和理解](iOS atomatic nonatomic區別和理解)
18、[#import 跟 #include 有 什 么 區 別 , @class 呢 , #import<> 跟 #import」 」有什麼區別?](#import 跟 #include 有 什 么 區 別 , @class 呢 , #import<> 跟 #import」 」有什麼區別?)
19、[Object-c 的類可以多重繼承么?可以實現多個介面么?Category 是什 么?重寫一個類的方式用繼承好還是分類好?為什麼?](Object-c 的類可以多重繼承么?可以實現多個介面么?Category 是什 么?重寫一個類的方式用繼承好還是分類好?為什麼?)
20、[屬性 readwrite,readonly,assign,retain,copy,nonatomic 各是 什麼作用,在那種情況下用?](屬性 readwrite,readonly,assign,retain,copy,nonatomic 各是 什麼作用,在那種情況下用?)
21、[對於語句 NSString*obj=[[NSDataalloc]init];obj 在編譯時和運行時 分別時什麼類型的對象?](對於語句 NSString*obj=[[NSDataalloc]init];obj 在編譯時和運行時 分別時什麼類型的對象?)
22、[常見的 objective-c 的數據類型有那些, 和 C 的基本數據類型有什 么區別?如:NSInteger 和 int](常見的 objective-c 的數據類型有那些, 和 C 的基本數據類型有什 么區別?如:NSInteger 和 int)
23、[Objective-C 如何對內存管理的,說說你的看法和解決方法?](Objective-C 如何對內存管理的,說說你的看法和解決方法?)
24、[原子(atomic)跟非原子(non-atomic)屬性有什麼區別?](原子(atomic)跟非原子(non-atomic)屬性有什麼區別?)
25、[ObjectC 中創建線程的方法是什麼?如果在主線程中執行代碼,方 法是什麼?如果想延時執行代碼、方法又是什麼?](ObjectC 中創建線程的方法是什麼?如果在主線程中執行代碼,方 法是什麼?如果想延時執行代碼、方法又是什麼?)
26、[淺複製和深複製的區別?](淺複製和深複製的區別?)
27、[類別的作用?繼承和類別在實現中有何區別?](類別的作用?繼承和類別在實現中有何區別?)
28、[類別和類擴展的區別](類別和類擴展的區別。)
29、[我們說的 OC 是動態運行時語言是什麼意思?](我們說的 OC 是動態運行時語言是什麼意思?)
30、[類變數的@protected,@private,@public,@package,聲明各有什麼 含義?](類變數的@protected,@private,@public,@package,聲明各有什麼 含義?)
31、[簡述 OC 中內存管理機制。與 retain 配對使用的方法是 dealloc 還 是 release,為什麼?需要與 alloc 配對使用的方法是 dealloc 還是 release,為什麼...](簡述 OC 中內存管理機制。與 retain 配對使用的方法是 dealloc 還 是 release,為什麼?需要與 alloc 配對使用的方法是 dealloc 還是 release,為什麼...)
32、[說說響應鏈](說說響應鏈)
33、[線程是什麼?進程是什麼?二者有什麼區別和聯繫?](線程是什麼?進程是什麼?二者有什麼區別和聯繫?)
34、[RunLoop 是什麼?](RunLoop 是什麼?)
35、[簡述你對 UIView、UIWindow 和 CALayer 的理解](簡述你對 UIView、UIWindow 和 CALayer 的理解)
36、[iOS 的動態性](iOS 的動態性)
37、[談談對性能優化的看法,如何做?](談談對性能優化的看法,如何做?)
38、[NSAutoreleasePool 是怎麼工作的?](NSAutoreleasePool 是怎麼工作的?)
39、[什麼情況使用 weak 關鍵字,相比 assign 有什麼不同?](什麼情況使用 weak 關鍵字,相比 assign 有什麼不同?)
40、[runtime 如何實現 weak 屬性?](runtime 如何實現 weak 屬性?)
41、[怎麼用 copy 關鍵字?](怎麼用 copy 關鍵字?)
42、[用 @property 聲明的 NSString(或 NSArray,NSDictionary)經常使用 copy 關鍵字,為什麼?如果改用 strong 關鍵字,可能造成什麼問題?](用 @property 聲明的 NSString(或 NSArray,NSDictionary)經常使用 copy 關鍵字,為什麼?如果改用 strong 關鍵字,可能造成什麼問題?)
43、[怎麼理解淺拷貝與深拷貝?](怎麼理解淺拷貝與深拷貝?)
44、[如何讓自己的類用 copy 修飾符?](如何讓自己的類用 copy 修飾符?)
45、[@property 的本質是什麼?](@property 的本質是什麼?)
46、[@protocol 和 category 中如何使用 @property?](@protocol 和 category 中如何使用 @property?)
47、[category 和 extension 有什麼區別?category 是如何載入的?category 的方法覆蓋是怎麼處理的?](category 和 extension 有什麼區別?category 是如何載入的?category 的方法覆蓋是怎麼處理的?)
48、[@synthesize 和 @dynamic 分別有什麼作用?](@synthesize 和 @dynamic 分別有什麼作用?)
49、[ARC 下,不顯式指定任何屬性關鍵字時,默認的關鍵字都有哪些?](ARC 下,不顯式指定任何屬性關鍵字時,默認的關鍵字都有哪些?)
50、[在有了自動合成屬性實例變數之後,@synthesize 還有哪些使用場景?](在有了自動合成屬性實例變數之後,@synthesize 還有哪些使用場景?)
51、[一個 objc 對象如何進行內存布局(考慮有父類的情況)?](一個 objc 對象如何進行內存布局(考慮有父類的情況)?)
52、[runtime 如何通過 selector 找到對應的 IMP 地址(分別考慮實例方法和類方法)?Selector、Method 和 IMP 的有什麼區別與聯繫?](runtime 如何通過 selector 找到對應的 IMP 地址(分別考慮實例方法和類方法)?Selector、Method 和 IMP 的有什麼區別與聯繫?)
53、[objc 中的類方法和實例方法有什麼本質區別和聯繫?](objc 中的類方法和實例方法有什麼本質區別和聯繫?)
54、[objc_msgSend、_objc_msgForward 都是做什麼的?OC 中的消息調用流程是怎樣的?](objc_msgSend、_objc_msgForward 都是做什麼的?OC 中的消息調用流程是怎樣的?)
55、[能否向編譯後得到的類中增加實例變數?能否向運行時創建的類中添加實例變數?為什麼?](能否向編譯後得到的類中增加實例變數?能否向運行時創建的類中添加實例變數?為什麼?)
56、[runloop 和線程有什麼關係?](runloop 和線程有什麼關係?)
57、[runloop 的 mode 作用是什麼?](runloop 的 mode 作用是什麼?)
58、[以 + scheduledTimerInterval... 的方式觸發的 timer,在滑動頁面上的列表時,timer 會暫定回調,為什麼?如何解決?WithTime](猿_員 - 簡書)
59、[猜想 runloop 內部是如何實現的?](猜想 runloop 內部是如何實現的?)
60、[聊一聊iOS 中的離屏渲染?](聊一聊iOS 中的離屏渲染?)
61、[objc 使用什麼機制管理對象內存?](objc 使用什麼機制管理對象內存?)
62、[ARC 通過什麼方式幫助開發者管理內存?](ARC 通過什麼方式幫助開發者管理內存?)
63、[iOS 開發中常見的內存問題有哪些?](iOS 開發中常見的內存問題有哪些?)
64、[一個 autorealese 對象在什麼時刻釋放?](一個 autorealese 對象在什麼時刻釋放?)
65、[如何實現 autoreleasepool 的?](如何實現 autoreleasepool 的?)
66、[如何用 GCD 同步若干個非同步調用?](如何用 GCD 同步若干個非同步調用?)
67、[dispatch_barrier_async 的作用是什麼?](dispatch_barrier_async 的作用是什麼?)
68、[如何手動觸發一個 value 的 KVO?](如何手動觸發一個 value 的 KVO?)
69、[BAD_ACCESS 在什麼情況下出現?](BAD_ACCESS 在什麼情況下出現?)
70、[動態計算文本高度的時候需要注意什麼?](動態計算文本高度的時候需要注意什麼?)
71、[如何優化 App 的啟動耗時?](如何優化 App 的啟動耗時?)
72、[什麼是事件響應鏈?](什麼是事件響應鏈?)
73、[當我們要做一些基於 CALayer 的動畫時,有時需要設置 layer 的錨點來配合動畫,這時候我們需要注意什麼?](當我們要做一些基於 CALayer 的動畫時,有時需要設置 layer 的錨點來配合動畫,這時候我們需要注意什麼?)
74、[聊一聊 TCP 的滑動窗口協議?](聊一聊 TCP 的滑動窗口協議?)
75、[聊一聊 TCP 的擁塞控制相關過程?](聊一聊 TCP 的擁塞控制相關過程?)
76、[聊一聊你知道的幾種查找樹?](聊一聊你知道的幾種查找樹?)
77、[load 和 initialize 方法的區別?](load 和 initialize 方法的區別?)
78、[如何優化 App 的的包大小?](如何優化 App 的的包大小?)
79、[struct和class的區別](struct和class的區別)
80、[介紹一下觀察者模式](介紹一下觀察者模式)
81、[在一個HTTPS連接的網站里,輸入賬號密碼點擊登錄後,到伺服器返回這個請求前,中間經歷了什麼](在一個HTTPS連接的網站里,輸入賬號密碼點擊登錄後,到伺服器返回這個請求前,中間經歷了什麼)
82、[在一個app中間有一個button,在你手觸摸屏幕點擊後,到這個button收到點擊事件,中間發生了什麼](在一個app中間有一個button,在你手觸摸屏幕點擊後,到這個button收到點擊事件,中間發生了什麼)
83、[循環引用的產生原因,以及解決方法](循環引用的產生原因,以及解決方法)
84、[鍵路徑(keyPath)、鍵值編碼(KVC)、鍵值觀察(KVO)](鍵路徑(keyPath)、鍵值編碼(KVC)、鍵值觀察(KVO))
85、[NSNotification、Block、Delegate和KVO的區別](NSNotification、Block、Delegate和KVO的區別)
86、[static、self、super關鍵字的作用](static、self、super關鍵字的作用)
87、[iOS開發中數據持久性有哪幾種?](iOS開發中數據持久性有哪幾種?)
88、[Core Data的6成員對象](Core Data的6成員對象)
89、[Core Data的功能](Core Data的功能)
90、[堆和棧的區別](堆和棧的區別)
91、[線程與進程的區別和聯繫?](線程與進程的區別和聯繫?)
92、[多線程編程](多線程編程)
推薦閱讀: