iOS面試題

前言

本文借鑑整理了iOS高級開發常見的面試題,而且分博客一一分析,但願能和你們一塊兒進步學習。html

歡迎你們關注個人 Github👏以及相關博客 Github.io 簡書 博客園git

你們的鼓勵是我前進的動力😄github

iOS基礎題

  1. 分類和擴展有什麼區別?能夠分別用來作什麼?分類有哪些侷限性?分類的結構體裏面有哪些成員? 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 高級面試題面試

相關文章
相關標籤/搜索