Objective_C語言特性
一、分類
二、擴展
三、代理(Delegate)
四、通知(NSNotification)
五、KVO (Key-value observing)
六、KVC(Key-value coding)
七、屬性關鍵字
runloop
一、RunLoop概念
二、RunLoop的數據結構
三、RunLoop的Mode
四、RunLoop的實現機制
五、RunLoop與NSTimer
六、RunLoop和線程
runtime
- objc在向一個對象發送消息時,發生了什麼?
- objc中向一個nil對象發送消息將會發生什麼?
- objc中向一個對象發送消息[obj foo]和objc_msgSend()函數之間有什麼關係?
- 什麼時候會報unrecognized selector的異常?
- 能否向編譯後得到的類中增加實例變量?能否向運行時創建的類中添加實例變量?爲什麼?
- 給類添加一個屬性後,在類結構體裏哪些元素會發生變化?
- 一個objc對象的isa的指針指向什麼?有什麼作用?
- [self class] 與 [super class]
- runtime如何通過selector找到對應的IMP地址?
- _objc_msgForward函數是做什麼的,直接調用它將會發生什麼?
- runtime如何實現weak變量的自動置nil?知道SideTable嗎?
- isKindOfClass 與 isMemberOfClass
- 使用runtime Associate方法關聯的對象,需要在主對象dealloc的時候釋放麼?
- 什麼是method swizzling(俗稱黑魔法)
- Compile Error / Runtime Crash / NSLog…?
- 代碼題(一)
- 代碼題(二)
####UI相關
一、UIView與CALayer
二、事件傳遞與視圖響應鏈
三、圖像顯示原理
四、UI卡頓掉幀原因
五、滑動優化方案
六、UI繪製原理
七、離屏渲染
Block相關面試題
一、什麼是Block?
二、Block變量截獲
三、Block的幾種形式
多線程
一、 進程
二、 線程
三、 進程和線程的關係
四、 多進程
五、 多線程
六、任務
七、隊列
八、iOS中的多線程
九、GCD---隊列
十、死鎖
十一、GCD任務執行順序
十二、dispatch_barrier_async
十三、dispatch_group_async
十四、Dispatch Semaphore
十五、延時函數(dispatch_after)
十六、使用dispatch_once實現單例
十七、NSOperationQueue的優點
十八、NSOperation和NSOperationQueue
十九、NSThread+runloop實現常駐線程
二十、自旋鎖與互斥鎖
內存管理
一、內存佈局
二、內存管理方案
三、MRC(手動引用計數)和ARC(自動引用計數)
四、循環引用
算法面試題
1、不用中間變量,用兩種方法交換A和B的值
2、求最大公約數
3、模擬棧操作
4、排序算法
5、折半查找(二分查找)
6、集合結構 線性結構 樹形結構 圖形結構
7、數據結構的存儲
8、單向鏈表\雙向鏈表\循環鏈表
9、二叉樹/平衡二叉樹
10、過河經典問題,超詳細解析
11、字符串反轉
12、有序數組合並
13、HASH算法
14、查找兩個子視圖的共同父視圖
15、求無序數組中的中位數
網絡相關
一、請求報文和響應報文
二、HTTP的請求方式
三、HTTP的特點
四、HTTPS和HTTP的區別
五、HTTPS的連接建立流程
六、對稱加密和非對稱加密
七、分別用C語言、python、GCDAsyncUdpSocket來實現UDP通信
八、利用python實現Udp通信demo
九、iOS端基於UDP的簡易聊天demo
性能優化
1.基本概念
2.怎麼檢測離屏渲染:
3.怎麼檢測圖層混合:
4.光柵化
5.入門級
6.中級
7.高級