前言:
最近在整理自己的技術棧,收集了一些自己認為比較重要的知識點分享給大家。
Runloop
4.
PerformSelector
和
runloop
的關係
Runtime
2.isa指標的理解,物件的isa指標指向哪裡?isa指標有哪兩種型別?
5.講一下 OC 的訊息機制
6.runtime具體應用
7.runtime如何透過selector找到對應的IMP地址?
8.簡述下Objective-C中呼叫方法的過程
9.load和initialize的區別
10.怎麼理解Objective-C是動態執行時語言。
KVO
2. 透過KVC修改屬性會觸發KVO麼?KVC的賦值和取值過程是怎樣的?原理是什麼?
Block
-
block
的內部實現,結構體是什麼樣的 - block是類嗎,有哪些型別
- 一個
int
變數被__block
修飾與否的區別?block的變數截獲 -
block
在修改NSMutableArray
,需不需要新增__block
- 怎麼進行記憶體管理的
-
block
可以用strong
修飾嗎 - 解決迴圈引用時為什麼要用
__strong、__weak
修飾 -
block
發生copy
時機 -
Block
訪問物件型別的auto變數
時,在ARC和MRC
下有什麼區別
多執行緒
主要以GCD為主
-
iOS
開發中有多少型別的執行緒?分別對比 -
GCD
有哪些佇列,預設提供哪些佇列 -
GCD
有哪些方法api -
GCD
主執行緒 & 主佇列的關係 - 如何實現同步,有多少方式就說多少
-
dispatch_once
實現原理 - 什麼情況下會死鎖
- 有哪些型別的執行緒鎖,分別介紹下作用和使用場景
-
NSOperationQueue
中的maxConcurrentOperationCount
預設值 -
NSTimer、CADisplayLink、dispatch_source_t
的優劣
架構設計
- 手動埋點、自動化埋點、視覺化埋點
-
MVC、MVP、MVVM
設計模式 - 常見的設計模式
- 單例的弊端
- 常見的路由方案,以及優缺點對比
- 如果保證專案的穩定性
- 設計一個圖片快取框架(LRU)
- 如何設計一個
git diff
- 設計一個執行緒池?畫出你的架構圖
- 你的app架構是什麼,有什麼優缺點、為什麼這麼做、怎麼改進
資料結構
1.資料結構的儲存一般常用的有幾種?各有什麼特點?
2.集合結構 線性結構 樹形結構 圖形結構
3.單向連結串列 雙向連結串列 迴圈連結串列
4.陣列和連結串列區別
5.堆、棧和佇列
6.輸入一棵二叉樹的根結點,求該樹的深度?
7.輸入一課二叉樹的根結點,判斷該樹是不是平衡二叉樹?
8.字串處理
這是我的iOS開發交流群: 519832104不管你是小白還是大牛歡迎入駐,可以一起分享經驗,討論技術,共同學習成長!
另附上一份各好友收集的大廠面試題,需要iOS開發學習資料、面試真題,進群即可自行下載!點選此處,立即與iOS大牛交流學習
演算法
1.時間複雜度
2.空間複雜度
3.常用的排序演算法
4.字串反轉
5.連結串列反轉(頭差法)
6.有序陣列合並
7.查詢第一個只出現一次的字元(Hash查詢)
8.查詢兩個子檢視的共同父檢視
9.無序陣列中的中位數(快排思想)
10.給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
11.八大排序演算法
Foundation
1.nil、NIL、NSNULL 有什麼區別?
2.如何實現一個執行緒安全的 NSMutableArray?
3.atomic 修飾的屬性是絕對安全的嗎?為什麼?
4.實現 isEqual 和 hash 方法時要注意什麼?
5.id 和 instanceType 有什麼區別?
6.self和super的區別
7.@synthesize和@dynamic分別有什麼作用?
8.typeof 和 typeof,typeof 的區別?
9.類族
10.struct和class的區別
UIKit
1.UIView 和 CALayer 是什麼關係?
2.Bounds 和 Frame 的區別?
3.setNeedsDisplay 和 layoutIfNeeded 兩者是什麼關係?
4.談談對UIResponder的理解
5.loadView的作用?
6.使用 drawRect有什麼影響?
7.keyWindow 和 delegate的window有何區別
動畫
1.UIView動畫與核心動畫的區別?
2.當我們要做一些基於 CALayer 的動畫時,有時需要設定 layer的錨點來配合動畫,這時候我們需要注意什麼?
影像處理
1.影像的壓縮方式
2.如何計算圖片載入記憶體中所佔的大小
資料安全及加密
1.對稱加密和非對稱加密的區別?
2.簡述 SSL 加密的過程用了哪些加密方法,為何這麼作?
3.iOS的簽名機制是怎麼樣的
WebView
- JS 和 OC 互相呼叫的幾種方式?
2.在使用 WKWedView 時遇到過哪些問題?
元件化
1.元件化有什麼好處?
2.你是如何元件化解耦的?
3.為什麼CTMediator方案優於基於Router的方案?
4.基於CTMediator的元件化方案,有哪些核心組成?
除錯技巧
1.LLDB常用的除錯命令?
2.斷點除錯
3.iOS 常見的崩潰型別有哪些?
原始碼理解
1.YYKit
2.SDWebImage載入圖片過程
3.YYWebImage和SDWebImage對比
4.AFNetworking 底層原理分析
程式碼管理
1.SVN與Git優缺點比較
2.Git與SVN的區別
持續整合
1.你在專案中使用過什麼持續整合方式?
2.jenkins怎麼備份恢復
3.jenkins你都用了哪些外掛?