2020年,大廠常問iOS面試題匯總!


Runloop & KVO

runloop

  1. app如何接收到觸摸事件的
  2. 為什么只有主線程的runloop是開啟的
  3. 為什么只在主線程刷新UI
  4. PerformSelectorrunloop的關系
  5. 如何使線程保活

KVO

  1. 實現原理
  2. 如何手動關閉kvo
  3. 通過KVC修改屬性會觸發KVO么
  4. 哪些情況下使用kvo會崩潰,怎么防護崩潰
  5. kvo的優缺點

runtime相關問題

結構模型

  1. 介紹下runtime的內存模型(isa、對象、類、metaclass、結構體的存儲信息等)
  2. 為什么要設計metaclass
  3. class_copyIvarList & class_copyPropertyList區別
  4. class_rw_tclass_ro_t 的區別
  5. category如何被加載的,兩個category的load方法的加載順序,兩個category的同名方法的加載順序
  6. category & extension區別,能給NSObject添加Extension嗎,結果如何
  7. 消息轉發機制,消息轉發機制和其他語言的消息機制優劣對比
  8. 在方法調用的時候,方法查詢-> 動態解析-> 消息轉發 之前做了什么
  9. IMPSELMethod的區別和使用場景
  10. loadinitialize方法的區別什么?在繼承關系中他們有什么區別
  11. 說說消息轉發機制的優劣

Block

  1. block的內部實現,結構體是什么樣的
  2. block是類嗎,有哪些類型
  3. 一個int變量被 __block 修飾與否的區別?block的變量截獲
  4. block在修改NSMutableArray,需不需要添加__block
  5. 怎么進行內存管理的
  6. block可以用strong修飾嗎
  7. 解決循環引用時為什么要用__strong、__weak修飾
  8. block發生copy時機
  9. Block訪問對象類型的auto變量時,在ARC和MRC下有什么區別

多線程

主要以GCD為主

  1. iOS開發中有多少類型的線程?分別對比
  2. GCD有哪些隊列,默認提供哪些隊列
  3. GCD有哪些方法api
  4. GCD主線程 & 主隊列的關系
  5. 如何實現同步,有多少方式就說多少
  6. dispatch_once實現原理
  7. 什么情況下會死鎖
  8. 有哪些類型的線程鎖,分別介紹下作用和使用場景
  9. NSOperationQueue中的maxConcurrentOperationCount默認值
  10. NSTimer、CADisplayLink、dispatch_source_t 的優劣

性能優化

如何做啟動優化,如何監控
如何做卡頓優化,如何監控
如何做耗電優化,如何監控
如何做網絡優化,如何監控

架構設計

  1. 手動埋點、自動化埋點、可視化埋點
  2. MVC、MVP、MVVM設計模式
  3. 常見的設計模式
  4. 單例的弊端
  5. 常見的路由方案,以及優缺點對比
  6. 如果保證項目的穩定性
  7. 設計一個圖片緩存框架(LRU)
  8. 如何設計一個git diff
  9. 設計一個線程池?畫出你的架構圖
  10. 你的app架構是什么,有什么優缺點、為什么這么做、怎么改進

數據結構與算法

  1. 八大排序算法
  2. 棧&隊列
  3. 字符串處理
  4. 鏈表
  5. 二叉樹相關操作
  6. 深搜廣搜
  7. 基本的動態規划題、貪心算法、二分查找

iOS面試題答案專欄推薦

總結

這些都是收集於最近面試中一些常見問題,歡迎各位業界高手留下更多的題目與答案!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM