前言
本文借鑑整理了iOS高級開發常見的面試題,而且分博客一一分析,但願能和你們一塊兒進步學習。html
歡迎你們關注個人 Github👏以及相關博客 Github.io 簡書 博客園git
你們的鼓勵是我前進的動力😄github
iOS基礎題
- 分類和擴展有什麼區別?能夠分別用來作什麼?分類有哪些侷限性?分類的結構體裏面有哪些成員? Category探索
- 講一下atomic的實現機制;爲何不能保證絕對的線程安全(最好能夠結合場景來講)?
- 被weak修飾的對象在被釋放的時候會發生什麼?是如何實現的?知道sideTable麼?裏面的結構能夠畫出來麼?
- 關聯對象有什麼應用,系統如何管理關聯對象?其被釋放的時候須要手動將其指針置空麼? AssociatedObject關聯對象原理實現
- KVO的底層實現?如何取消系統默認的KVO並手動觸發(給KVO的觸發設定條件:改變的值符合某個條件時再觸發KVO)? 刨根問底KVO原理
Autoreleasepool
所使用的數據結構是什麼?AutoreleasePoolPage
結構體瞭解麼?
- 講一下對象,類對象,元類,跟元類結構體的組成以及他們是如何相關聯的?爲何對象方法沒有保存的對象結構體裏,而是保存在類對象的結構體裏?
class_ro_t
和 class_rw_t
的區別?
- iOS 中內省的幾個方法?
class
方法和objc_getClass
方法有什麼區別?
- 在運行時建立類的方法
objc_allocateClassPair
的方法名尾部爲何是pair(成對的意思)?
- 一個int變量被
__block
修飾與否的區別? \12. 爲何在block外部使用__weak
修飾的同時須要在內部使用__strong
修飾?
- RunLoop的做用是什麼?它的內部工做機制瞭解麼?(最好結合線程和內存管理來講)
- 哪些場景能夠觸發離屏渲染?(知道多少說多少)
iOS 實戰題
- AppDelegate如何瘦身?
- 反射是什麼?能夠舉出幾個應用場景麼?(知道多少說多少)
- 有哪些場景是NSOperation比GCD更容易實現的?(或是NSOperation優於GCD的幾點,知道多少說多少)
- App 啓動優化策略?最好結合啓動流程來講(main()函數的執行先後都分別說一下,知道多少說多少)
- App 無痕埋點的思路瞭解麼?你認爲理想的無痕埋點系統應該具有哪些特色?(知道多少說多少)
- 你知道有哪些狀況會致使app崩潰,分別能夠用什麼方法攔截並化解?(知道多少說多少)
- 你知道有哪些狀況會致使app卡頓,分別能夠用什麼方法來避免?(知道多少說多少)
網絡題
- App 網絡層有哪些優化策略?
- TCP爲何要三次握手,四次揮手?
- 對稱加密和非對稱加密的區別?分別有哪些算法的實現?
- HTTPS的握手流程?爲何密鑰的傳遞須要使用非對稱加密?雙向認證瞭解麼?
- HTTPS是如何實現驗證身份和驗證完整性的?
- 如何用Charles抓HTTPS的包?其中原理和流程是什麼?
- 什麼是中間人攻擊?如何避免?
計算機系統題
- 瞭解編譯的過程麼?分爲哪幾個步驟?
- 靜態連接瞭解麼?靜態庫和動態庫的區別?
- 內存的幾大區域,各自的職能分別是什麼?
- static和const有什麼區別?
- 瞭解內聯函數麼?
- 何時會出現死鎖?如何避免?
- 說一說你對線程安全的理解?
- 列舉你知道的線程同步策略?
- 有哪幾種鎖?各自的原理?它們之間的區別是什麼?最好能夠結合使用場景來講
設計模式題
- 除了單例,觀察者設計模式之外,還知道哪些設計模式?分別介紹一下
- 最喜歡哪一個設計模式?爲何?
- iOS SDK 裏面有哪些設計模式的實踐?
- **設計模式是爲了解決什麼問題的?
- **設計模式的成員構成以及工做機制是什麼?
- **設計模式的優缺點是什麼?
架構 & 設計題
- MVC和MVVM的區別?MVVM和MVP的區別?
- 面向對象的幾個設計原則瞭解麼?最好能夠結合場景來講。
- 能夠說幾個重構的技巧麼?你以爲重構適合何時來作?
- 你以爲框架和設計模式的區別是什麼?
- 看過哪些第三方框架的源碼,它們是怎麼設計的?設計好的地方在哪裏,很差的地方在哪裏,如何改進?(這道題的後三個問題的難度已經很高了,若是不是太N的公司不建議深究)
數據結構&算法題
- 鏈表和數組的區別是什麼?插入和查詢的時間複雜度分別是多少?
- 哈希表是如何實現的?如何解決地址衝突?
- 排序題:冒泡排序,選擇排序,插入排序,快速排序(二路,三路)能寫出那些?
- 鏈表題:如何檢測鏈表中是否有環?如何刪除鏈表中等於某個值的全部節點?
- 數組題:如何在有序數組中找出和等於給定值的兩個元素?如何合併兩個有序的數組以後保持有序?
- 二叉樹題:如何反轉二叉樹?如何驗證兩個二叉樹是徹底相等的?
引用
出一套 iOS 高級面試題面試