天天看點

做了5年iOS,靠着這份面試題跟答案,我從12K變成了30K

在部落客認為,對于iOS面試以及進階的最佳學習方法莫過于刷題+部落格+書籍+總結,前三者部落客将淋漓盡緻地揮毫于這篇部落格文章中,至于總結在于個人,實際上越到後面你會發現面試并不難,其次就是在刷題的過程中有沒有去思考,刷題隻是次之,這又是一個層次了,這裡暫時不提後面再談。

部落客總結了一系列大廠面試中常問的面試技術點,深入解析以及答案,将為最近準備面試的各開發者去大廠保駕護航,

何謂面試? 部落客所了解的面試,它是一個過程,是不斷沉澱、不斷總結、善于傳達自己的專業領域技術以及解決問題能力的過程。以下是部落客總結的一些面試題,文中如有錯誤,懇請各位大佬指出!

資料結構

  1. 資料結構的存儲一般常用的有幾種?各有什麼特點?
  2. 集合結構 線性結構 樹形結構 圖形結構
  3. 單向連結清單 雙向連結清單 循環連結清單
  4. 數組和連結清單的差別
  5. 堆、棧和隊列 分别是什麼?
  6. 輸入一棵二叉樹的根結點,求該樹的深度?
  7. 輸入一課二叉樹的根結點,判斷該樹是不是平衡二叉樹?
作為一個開發者,有一個學習的氛圍跟一個交流圈子特别重要,這是一個我的iOS交流群:413038000,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,讨論技術, 大家一起交流學習成長!

以下資料在群檔案可自行下載下傳

算法

  1. 時間複雜度 / 空間複雜度
  2. 常用的排序算法有哪些?
  3. 字元串反轉
  4. 連結清單反轉(頭插法)
  5. 如何查找第一個隻出現一次的字元(Hash查找)
  6. 如何查找兩個子視圖的共同父視圖?
  7. 無序數組中的中位數(快排思想)
  8. 如何給定一個整數數組和一個目标值,找出數組中和為目标值的兩個數。

記憶體管理

  1. 什麼情況使用weak關鍵字,相比assign有什麼不同?
  2. 鍊如何讓自己的類用copy修飾符?如何重寫帶copy關鍵字的setter?
  3. 深拷貝與淺拷貝分别是什麼?
  4. @property的本質是什麼?ivar、getter、setter是如何生成并添加到這個類中的?
  5. @protocol和category中如何使用@property
  6. 使用CADisplayLink、NSTimer有什麼注意點?BAD_ACCESS在什麼情況下出現?
  7. iOS記憶體分區情況
  8. iOS記憶體管理方式
  9. 循環引用
  10. ARC 的 retainCount 怎麼存儲的?
  11. ARC

    在編譯時做了哪些工作?

消息傳遞的方式

  1. KVC的實作原理
  2. KVO的實作原理
  3. 如何手動觸發KVO方法?
  4. 通知和代理跟有什麼差別?
  5. block和delegate的差別有哪些?
  6. 為什麼Block用copy關鍵字?

網絡

  1. 網絡七層協定有哪些?
  2. Http 和 Https 的差別?Https為什麼更加安全?
  3. HTTPS的連接配接建立流程
  4. 解釋一下 三次握手 和 四次揮手
  5. TCP 和 UDP的差別
  6. Cookie和Session
  7. DNS是什麼?
  8. DNS解析過程

多線程

  1. 程序與線程分别是什麼意思?
  2. 什麼是多線程?
  3. 多線程的優點和缺點有哪些?
  4. 多線程的 并行 和 并發 有什麼差別?
  5. iOS中實作多線程的幾種方案,各自有什麼特點?
  6. 多個網絡請求完成後如何執行下一步?
  7. 多個網絡請求順序執行後如何執行下一步?
  8. 如何了解多線程中的死鎖?
  9. 如何去了解GCD執行原理?

動畫

  1. UIView動畫與核心動畫的差別?
  2. 當我們要做一些基于 CALayer 的動畫時,有時需要設定 layer 的錨點來配合動畫,這時候我們需要注意什麼?

圖像處理

  1. 圖像的壓縮方式有哪些?
  2. 如何計算圖檔加載記憶體中所占的大小

資料安全及加密

  1. 對稱加密和非對稱加密的差別?
  2. 簡述 SSL 加密的過程用了哪些加密方法,為何這麼作?
  3. iOS的簽名機制是怎麼樣的

Runtime

  1. Category 的實作原理?
  2. isa指針的了解,對象的isa指針指向哪裡?isa指針有哪兩種類型?
  3. Objective-C 如何實作多重繼承?
  4. runtime 如何實作 weak 屬性?
  5. 講一下 OC 的消息機制
  6. runtime具體應用
  7. runtime如何通過selector找到對應的IMP位址?
  8. 簡述下Objective-C中調用方法的過程
  9. load和initialize的差別
  10. 怎麼了解Objective-C是動态運作時語言。

Runloop

  1. Runloop 和線程的關系?
  2. RunLoop的運作模式
  3. runloop内部邏輯?
  4. autoreleasePool 在何時被釋放?
  5. GCD 在Runloop中的使用?
  6. AFNetworking 中如何運用 Runloop?
  7. PerformSelector 的實作原理?
  8. PerformSelector:afterDelay:這個方法在子線程中是否起作用?
  9. 事件響應的過程?
  10. 手勢識别的過程?
  11. CADispalyTimer和Timer哪個更精确

項目架構

  1. MVC、MVP、MVVM模式
  2. 關于RAC你有怎樣運用到解決不同API依賴關系
  3. @weakify和我們宏定義的WeakSelf有什麼差別?
  4. 微服務架構設想。

設計模式

  1. iOS有哪些常見的設計模式?
  2. 單例會有什麼弊端?
  3. 程式設計中的六大設計原則?
  4. 如何設計一個圖檔緩存架構?
  5. 如何設計一個時長統計架構?

元件化

  1. 元件化有什麼好處?
  2. 你是如何元件化解耦的?
  3. 為什麼CTMediator方案優于基于Router的方案?
  4. 基于CTMediator的元件化方案,有哪些核心組成?

調試技巧

  1. LLDB常用的調試指令有哪些?
  2. 斷點調試
  3. iOS 常見的崩潰類型有哪些?

性能優化

  1. 造成tableView卡頓的原因有哪些?
  2. 如何提升 tableview 的流暢度?
  3. APP啟動時間應從哪些方面優化?
  4. 如何降低APP包的大小
  5. 如何檢測離屏渲染與優化
  6. 怎麼檢測圖層混合
  7. 日常如何檢查記憶體洩漏?
  8. 如何優化

    APP

    的電量?

源碼了解

  1. 如何了解YYKit?
  2. SDWebImage加載圖檔過程
  3. AFNetworking 底層原理分析

代碼管理

  1. SVN與Git優缺點比較
  2. Git與SVN的差別

持續內建

  1. 你在項目中使用過什麼持續內建方式?
  2. jenkins怎麼備份恢複
  3. jenkins你都用了哪些插件?

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的差別

底層面試題

  1. 一個 NSObject 對象占用多少記憶體空間?
  2. 屬性關鍵字
  3. 分類、擴充、代理(Delegate)
  4. KVO (Key-value observing)
  5. KVC(Key-value coding)
  6. 什麼是架構師及UML模組化
  7. 單例模式設計
  8. 設計模式-工廠模式
  9. 設計模式-工廠模式場景

iOS面試大總結

  1. iOS面試之UI視圖大全
  2. iOS面試之OC大全
  3. iOS面試之Runtime大全
  4. iOS面試之記憶體管理大全
  5. iOS面試之Block大全
  6. iOS面試之多線程大全

2020 聯盟持續更新,精品小圈子每日都有新内容,幹貨濃度極高。

結實人脈、讨論技術 你想要的這裡都有!

搶先入群,跑赢同齡人!(入群無需任何費用)

申請即送:

  • BAT大廠面試題、獨家面試工具包,
  • 資料免費領取,包括 資料結構、底層進階、圖形視覺、音視訊、架構設計、逆向安防、RxSwift、flutter,