iOS開發面試題整理


前言

本文借鑒整理了iOS高級開發常見的面試題,並且分博客一一分析,希望能和大家一起進步學習。

歡迎大家關注我的 Github👏以及相關博客 Github.io 簡書

大家的鼓勵是我前進的動力😄

iOS基礎題

  1. 分類和擴展有什么區別?可以分別用來做什么?分類有哪些局限性?分類的結構體里面有哪些成員?
    iOS分類Category探索
  2. 講一下atomic的實現機制;為什么不能保證絕對的線程安全(最好可以結合場景來說)?
  3. 被weak修飾的對象在被釋放的時候會發生什么?是如何實現的?知道sideTable么?里面的結構可以畫出來么?
  4. 關聯對象有什么應用,系統如何管理關聯對象?其被釋放的時候需要手動將其指針置空么?
    AssociatedObject關聯對象原理實現
  5. KVO的底層實現?如何取消系統默認的KVO並手動觸發(給KVO的觸發設定條件:改變的值符合某個條件時再觸發KVO)?
    刨根問底KVO原理
  6. Autoreleasepool所使用的數據結構是什么?AutoreleasePoolPage結構體了解么?
  7. 講一下對象,類對象,元類,跟元類結構體的組成以及他們是如何相關聯的?為什么對象方法沒有保存的對象結構體里,而是保存在類對象的結構體里?
  8. class_ro_tclass_rw_t 的區別?
  9. iOS 中內省的幾個方法?class方法和objc_getClass方法有什么區別?
  10. 在運行時創建類的方法objc_allocateClassPair的方法名尾部為什么是pair(成對的意思)?
  11. 一個int變量被__block修飾與否的區別?
    \12. 為什么在block外部使用__weak修飾的同時需要在內部使用__strong修飾?
  12. RunLoop的作用是什么?它的內部工作機制了解么?(最好結合線程和內存管理來說)
  13. 哪些場景可以觸發離屏渲染?(知道多少說多少)

iOS 實戰題

  1. AppDelegate如何瘦身?
  2. 反射是什么?可以舉出幾個應用場景么?(知道多少說多少)
  3. 有哪些場景是NSOperation比GCD更容易實現的?(或是NSOperation優於GCD的幾點,知道多少說多少)
  4. App 啟動優化策略?最好結合啟動流程來說(main()函數的執行前后都分別說一下,知道多少說多少)
  5. App 無痕埋點的思路了解么?你認為理想的無痕埋點系統應該具備哪些特點?(知道多少說多少)
  6. 你知道有哪些情況會導致app崩潰,分別可以用什么方法攔截並化解?(知道多少說多少)
  7. 你知道有哪些情況會導致app卡頓,分別可以用什么方法來避免?(知道多少說多少)

網絡題

  1. App 網絡層有哪些優化策略?
  2. TCP為什么要三次握手,四次揮手?
  3. 對稱加密和非對稱加密的區別?分別有哪些算法的實現?
  4. HTTPS的握手流程?為什么密鑰的傳遞需要使用非對稱加密?雙向認證了解么?
  5. HTTPS是如何實現驗證身份和驗證完整性的?
  6. 如何用Charles抓HTTPS的包?其中原理和流程是什么?
  7. 什么是中間人攻擊?如何避免?

計算機系統題

  1. 了解編譯的過程么?分為哪幾個步驟?
  2. 靜態鏈接了解么?靜態庫和動態庫的區別?
  3. 內存的幾大區域,各自的職能分別是什么?
  4. static和const有什么區別?
  5. 了解內聯函數么?
  6. 什么時候會出現死鎖?如何避免?
  7. 說一說你對線程安全的理解?
  8. 列舉你知道的線程同步策略?
  9. 有哪幾種鎖?各自的原理?它們之間的區別是什么?最好可以結合使用場景來說

設計模式題

  1. 除了單例,觀察者設計模式以外,還知道哪些設計模式?分別介紹一下
  2. 最喜歡哪個設計模式?為什么?
  3. iOS SDK 里面有哪些設計模式的實踐?
  4. **設計模式是為了解決什么問題的?
  5. **設計模式的成員構成以及工作機制是什么?
  6. **設計模式的優缺點是什么?

架構 & 設計題

  1. MVC和MVVM的區別?MVVM和MVP的區別?
  2. 面向對象的幾個設計原則了解么?最好可以結合場景來說。
  3. 可以說幾個重構的技巧么?你覺得重構適合什么時候來做?
  4. 你覺得框架和設計模式的區別是什么?
  5. 看過哪些第三方框架的源碼,它們是怎么設計的?設計好的地方在哪里,不好的地方在哪里,如何改進?(這道題的后三個問題的難度已經很高了,如果不是太N的公司不建議深究)

數據結構&算法題

  1. 鏈表和數組的區別是什么?插入和查詢的時間復雜度分別是多少?
  2. 哈希表是如何實現的?如何解決地址沖突?
  3. 排序題:冒泡排序,選擇排序,插入排序,快速排序(二路,三路)能寫出那些?
  4. 鏈表題:如何檢測鏈表中是否有環?如何刪除鏈表中等於某個值的所有節點?
  5. 數組題:如何在有序數組中找出和等於給定值的兩個元素?如何合並兩個有序的數組之后保持有序?
  6. 二叉樹題:如何反轉二叉樹?如何驗證兩個二叉樹是完全相等的?

引用

出一套 iOS 高級面試題


免責聲明!

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



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