備戰九十,iOS面試題菜單,持續更新(題目及答案已上傳Github)

Objective_C語言特性

(戳這裏跳轉到Github)

  • 分類
  • 擴展
  • 代理(Delegate)
  • 通知(NSNotification)
  • KVO (Key-value observing)
  • KVC(Key-value coding)
  • 屬性關鍵字

runloop

(戳這裏跳轉到Github)

  • RunLoop概念
  • RunLoop的數據結構
  • RunLoop的Mode
  • RunLoop的實現機制
  • RunLoop與NSTimer
  • RunLoop和線程
  • 講一下 Observer ?
  • autoreleasePool 在何時被釋放?
  • 解釋一下 事件響應 的過程?
  • 解釋一下 手勢識別 的過程?
  • 解釋一下 GCD 在 Runloop 中的使用?
  • 解釋一下 NSTimer。
  • AFNetworking 中如何運用 Runloop?
  • PerformSelector 的實現原理?
  • 利用 runloop 解釋一下頁面的渲染的過程?
  • 如何使用 Runloop 實現一個常駐線程?這種線程一般有什麼作用?
  • 爲什麼 NSTimer 有時候不好使?
  • PerformSelector:afterDelay:這個方法在子線程中是否起作用?爲什麼?怎麼解決?
  • 什麼是異步繪製?
  • 分類和類拓展的區別?

runtime

(戳這裏跳轉到Github)

  • 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…?
  • 實例對象的數據結構?
  • 類對象的數據結構?
  • 元類對象的數據結構?
  • Category 的實現原理?
  • 如何給 Category 添加屬性?關聯對象以什麼形式進行存儲?
  • Category 有哪些用途?
  • Category 和 Extension 有什麼區別
  • 說一下 Method Swizzling? 說一下在實際開發中你在什麼場景下使用過?
  • 如何實現動態添加方法和屬性?
  • 說一下對 isa 指針的理解, 對象的isa 指針指向哪裏?isa 指針有哪兩種類型?
  • Obj-C 中的類信息存放在哪裏?
  • 一個 NSObject 對象佔用多少內存空間?
  • 說一下對 class_rw_t 的理解?
  • 說一下對 class_ro_t 的理解?
  • 分類和類拓展的區別?
  • 如何運用 Runtime 字典轉模型?
  • 如何運用 Runtime 進行模型的歸解檔
  • 在 Obj-C 中爲什麼叫發消息而不叫函數調用?
  • 分類和類拓展的區別?
  • 說一下 Runtime 的方法緩存?存儲的形式、數據結構以及查找的過程?
  • 是否瞭解 Type Encoding?
  • Objective-C 如何實現多重繼承?
  • Category 可不可以添加實例對象?爲什麼?
  • Obj-c對象、類的本質是通過什麼數據結構實現的?
  • Category 在編譯過後,是在什麼時機與原有的類合併到一起的?
  • 代碼題(一)
  • 代碼題(二)

UI相關

(戳這裏跳轉到Github)

  • UIView與CALayer
  • 事件傳遞與視圖響應鏈
  • 圖像顯示原理
  • UI卡頓掉幀原因
  • 滑動優化方案
  • UI繪製原理
  • 離屏渲染

Block相關面試題

(戳這裏跳轉到Github)

  • 什麼是Block?
  • Block變量截獲
  • Block的幾種形式

多線程

(戳這裏跳轉到Github)

  • 進程
  • 線程
  • 進程和線程的關係
  • 多進程
  • 多線程
  • 任務
  • 隊列
  • iOS中的多線程
  • GCD---隊列
  • 死鎖
  • GCD任務執行順序
  • dispatch_barrier_async
  • dispatch_group_async
  • Dispatch Semaphore
  • 延時函數(dispatch_after)
  • 使用dispatch_once實現單例
  • NSOperationQueue的優點
  • NSOperation和NSOperationQueue
  • NSThread+runloop實現常駐線程
  • 自旋鎖與互斥鎖

內存管理

(戳這裏跳轉到Github)

  • 內存佈局
  • 內存管理方案
  • MRC(手動引用計數)和ARC(自動引用計數)
  • 循環引用
  • 講一下 iOS 內存管理的理解
  • 使用自動引用計數應遵循的原則
  • ARC自動內存管理的原則
  • 訪問 __weak 修飾的變量,是否已經被註冊在了 @autoreleasePool 中?爲什麼?
  • ARC 的 retainCount 怎麼存儲的?
  • 簡要說一下 @autoreleasePool 的數據結構?
  • __weak 和 _Unsafe_Unretain 的區別?
  • 爲什麼已經有了 ARC ,但還是需要 @AutoreleasePool 的存在?
  • __weak 屬性修飾的變量,如何實現在變量沒有強引用後自動置爲 nil ?
  • 說一下對 retain,copy,assign,weak,_Unsafe_Unretain 關鍵字的理解。
  • ARC 在編譯時做了哪些工作
  • ARC 在運行時做了哪些工作?
  • 函數返回一個對象時,會對對象 autorelease 麼?爲什麼?
  • 說一下什麼是 懸垂指針?什麼是 野指針?
  • 內存管理默認的關鍵字是什麼?
  • 內存中的5大區分別是什麼?
  • 是否瞭解 深拷貝 和 淺拷貝 的概念,集合類深拷貝如何實現
  • BAD_ACCESS 在什麼情況下出現?
  • 講一下 @dynamic 關鍵字?
  • autoReleasePool 什麼時候釋放?
  • retain、release 的實現機制?
  • 能不能簡述一下 Dealloc 的實現機制
  • 在 MRC 下如何重寫屬性的 Setter 和 Getter?
  • 在 Obj-C 中,如何檢測內存泄漏?你知道哪些方式?

算法面試題

(戳這裏跳轉到Github)

  • 不用中間變量,用兩種方法交換A和B的值
  • 求最大公約數
  • 模擬棧操作
  • 排序算法
  • 折半查找(二分查找)
  • 集合結構 線性結構 樹形結構 圖形結構
  • 數據結構的存儲
  • 單向鏈表\雙向鏈表\循環鏈表
  • 二叉樹/平衡二叉樹
  • 過河經典問題,超詳細解析
  • 字符串反轉
  • 有序數組合並
  • HASH算法
  • 查找兩個子視圖的共同父視圖
  • 求無序數組中的中位數

網絡相關

(戳這裏跳轉到Github)

  • 請求報文和響應報文
  • HTTP的請求方式
  • HTTP的特點
  • HTTPS和HTTP的區別
  • HTTPS的連接建立流程
  • 對稱加密和非對稱加密
  • 分別用C語言、python、GCDAsyncUdpSocket來實現UDP通信
  • 利用python實現Udp通信demo
  • iOS端基於UDP的簡易聊天demo
  • UDP的特點
  • UDP的報文結構
  • UDP差錯檢測
  • TCP的特點和報文結構
  • 三次握手
  • 四次揮手
  • 可靠數據傳輸
  • 流量控制
  • 擁塞控制
  • DNS
  • DNS服務器
  • DNS解析過程
  • DNS記錄和報文
  • DNS解析安全問題
  • Cookie
  • Session
  • Cookie 和Session 的區別:
  • 網絡層和傳輸層的區別
  • IP協議
  • IP數據報分片
  • IPv4編址
  • IPv6數據報格式
  • 從IPv4到IPv6的遷移

性能優化

(戳這裏跳轉到Github)

  • 基本概念
  • 怎麼檢測離屏渲染:
  • 怎麼檢測圖層混合:
  • 光柵化
  • 入門級
  • 中級
  • 高級
  • 如何提升 tableview 的流暢度?
  • 如何有效降低 APP 包的大小?
  • 日常如何檢查內存泄露?
  • 什麼是 離屏渲染?什麼情況下會觸發?該如何應對?
  • 如何高性能的畫一個圓角?
  • 如何優化 APP 的電量?

Animation

(戳這裏跳轉到Github)

  • 簡要說一下常用的動畫庫。
  • 請說一下對 CALayer 的認識
  • CALayer 的 Contents 有幾下幾個主要的屬性

設計模式

(戳這裏跳轉到Github)

  • 編程中的六大設計原則?
  • 如何設計一個圖片緩存框架?
  • 如何設計一個時長統計框架?
  • 如何實現 App 換膚(夜間模式)?

數據安全及加密

(戳這裏跳轉到Github)

  • 簡述 SSL 加密的過程用了哪些加密方法,爲何這麼作?
  • RSA非對稱加密

75道程序員邏輯思維面試題(戳這裏跳轉到Github)

持續更新中,記得收藏關注哦!.....

更新時間:2019年6月26號(添加網絡相關面試題)
更新時間:2019年6月27號(完善網絡相關面試題)
更新時間:2019年6月29號15:09(添加內存管理方面面試題)
更新時間:2019年6月29號16:10(添加Runtime相關面試題)
更新時間:2019年6月29號16:29(添加Runloop相關面試題)
更新時間:2019年7月1號13:45(添加性能優化相關面試題)
更新時間:2019年7月2號20:42(添加設計模式相關面試題)
更新時間:2019年7月2號20:57(添加數據安全及加密相關面試題)

更多面試題和學習書籍文檔,可以添加QQ羣:551346706 !已經上傳羣文件和百度網盤,加羣自己下載即可!

如果對你有幫助,希望你們記得給這個小哥哥一點點辛苦費!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章