一、Runtime
- 一個objc對象的isa的指針指向什麼?有什麼作用?
- 一個 NSObject 對象佔用多少內存空間?
- 說一下對 class_rw_t 的理解?
- 說一下對 class_ro_t 的理解?
- 說一下對 isa 指針的理解
- 說一下 Runtime 的方法緩存?存儲的形式、數據結構以及查找的過程?
- 使用runtime Associate方法關聯的對象,需要在主對象dealloc的時候釋放麼?
- 實例對象的數據結構?
- 什麼是method swizzling(俗稱黑魔法)
- 什麼時候會報unrecognized selector的異常?
- 如何給 Category 添加屬性?關聯對象以什麼形式進行存儲?
- 能否向編譯後得到的類中增加實例變量?能否向運行時創建的類中添加實例變量?爲什麼?
- 類對象的數據結構?
- runtime如何通過selector找到對應的IMP地址?
- runtime如何實現weak變量的自動置nil?知道SideTable嗎?
- objc中向一個nil對象發送消息將會發生什麼?
- objc在向一個對象發送消息時,發生了什麼?
- isKindOfClass 與 isMemberOfClass
- Category 在編譯過後,是在什麼時機與原有的類合併到一起的?
- Category 有哪些用途?
- Category 的實現原理?
- _objc_msgForward函數是做什麼的
- [self class] 與 [super class]
- 代碼題 一
- 代碼題 二
二、Runloop
- 爲什麼 NSTimer 有時候不好使?
- AFNetworking 中如何運用 Runloop?
- autoreleasePool 在何時被釋放?
- PerformSelector 的實現原理?
- PerformSelector:afterDelay:這個方法在子線程中是否起作用?爲什麼?怎麼解決?
- RunLoop的Mode
- RunLoop的實現機制
- RunLoop和線程
- RunLoop的數據結構
- RunLoop概念
- RunLoop與NSTimer
- 講一下 Observer ?
- 解釋一下 NSTimer
- 解釋一下
事件響應
的過程? - 解釋一下 手勢識別 的過程?
- 什麼是異步繪製?
- 利用 runloop 解釋一下頁面的渲染的過程?
三、Objective_C語言特性
四、Animation
五、Block
六、UI相關
七、多線程
- 進程、線程
- 多進程、多線程
- 任務、隊列
- iOS中的多線程
- GCD---隊列
- 死鎖
- GCD任務執行順序
- dispatch_barrier_async
- dispatch_group_async
- Dispatch Semaphore
- 延時函數(dispatch_after)
- 使用dispatch_once實現單例
- NSOperationQueue的優點
- NSOperation和NSOperationQueue
- NSThread+runloop實現常駐線程
- 自旋鎖與互斥鎖
八、內存管理
- 在 Obj-C 中,如何檢測內存泄漏?你知道哪些方式?
- 在 MRC 下如何重寫屬性的 Setter 和 Getter_
- 循環引用
- 說一下什麼是
懸垂指針
?什麼是野指針
? - 說一下對 retain,copy,assign,weak,_Unsafe_Unretain 關鍵字的理解
- 是否瞭解 深拷貝 和 淺拷貝 的概念,集合類深拷貝如何實現
- 使用自動引用計數應遵循的原則
- 能不能簡述一下 Dealloc 的實現機制
- 內存中的5大區分別是什麼?
- 內存管理默認的關鍵字是什麼?
- 內存管理方案
- 內存佈局
- 講一下
iOS
內存管理的理解 - 講一下
@dynamic
關鍵字? - 簡要說一下
@autoreleasePool
的數據結構? - 訪問
__weak
修飾的變量,是否已經被註冊在了@autoreleasePool
中?爲什麼? retain
、release
的實現機制?- MRC(手動引用計數)和ARC(自動引用計數)
BAD_ACCESS
在什麼情況下出現?autoReleasePool
什麼時候釋放?- ARC自動內存管理的原則
ARC
在運行時做了哪些工作?ARC
在編譯時做了哪些工作ARC
的retainCount
怎麼存儲的?__weak
屬性修飾的變量,如何實現在變量沒有強引用後自動置爲nil
?__weak
和_Unsafe_Unretain
的區別?
九、設計模式
十、數據安全及加密
十一、數據結構與算法
十二、網絡相關
- HTTP協議
- HTTPS、對稱加密、非對稱加密
- 一個基於UDP的簡單的聊天Demo
- UDP的特點、UDP的報文結構及差錯檢測
- TCP、三次握手、四次揮手、代碼實現
- 可靠數據傳輸、流量控制(滑動窗口)、擁塞控制
- DNS
- Cookie和Session
- IP協議、IP數據報分片、IPv4編址、網絡地址轉換(NAT)
- IPv6、從IPv4到IPv6的遷移
十三、性能優化
- iOS 性能優化面試題
- 光柵化
- 日常如何檢查內存泄露?
- 如何高性能的畫一個圓角?
- 如何提升
tableview
的流暢度? - 如何優化
APP
的電量? - 如何有效降低 APP 包的大小?
- 什麼是 離屏渲染?什麼情況下會觸發?該如何應對?
- 如何檢測離屏渲染?
- 怎麼檢測圖層混合?
面試題還在更新,請記得要關注該簡書哦~
面試題持續整理更新中,需要拿到第一手大廠面試題及答案文檔可以添加 iOS進階學習交流羣:551346706 !結實人脈、討論技術你想要的這裏都有!