最近在準備ms,發現了一些比較尖銳的問題,可能平時開發注意不要,自己也會但是就是不能清晰的表達出來,問題比較寬泛再此做個總結(下面附部分答案,答案為自己理解結合百度,可能有些不標準歡迎各位提出意見)。問題持續更新,答案也持續更新。歡迎投稿。這些都會了我覺得找工作應該沒問題了。這些知識是一些簡單的點,真正面試的時候肯定會有比這兒更深的層次,這只是引出一個問題的點。還是需要多學習
iOS底層
- KVO的實現原理
- KVC是什麼,他是如何實現的
- 請簡單介紹一下Runtime,以及它的原理和應用(訊息傳送機制,動態解析。應用防止崩潰)
- 什麼是block?(堆block,棧block,全域性block)
- weak的實現原理。
- 通知和代理的區別。
- 說說你讀過的第三方庫工作流程。
- oc類的本質是什麼?他的結構是什麼,他是如何初始化的。
- Swift類的初始化發生了什麼
架構
- 談談MVC,MVVM,MVP的三種架構各自的優缺點。
設計模式
- 介面卡
- 裝飾器
- 迭代器
- 工廠模式,抽象工廠,簡單工廠模式的區別
- 物件池(可選)
- 介面卡
- 代理
- 單例的優缺點
...
網路相關
- 什麼是http,它與https的區別
- tcp和udp的區別,介紹一下三次握手,四次揮手,為啥連線要三次,斷開要四次揮手
- alamofire或者AFN的證書認證。
執行緒
- 什麼時候會造成執行緒死鎖
- Runloop是什麼以及它的工作流程
- NSOperation和GCD的區別。
- 執行緒與程式的區別。
資料結構與演算法
- 連結串列是什麼,如何確定連結串列有環
- 如何用佇列實現一個棧,或者用棧實現一個佇列。
- 二分法查詢的實現流程
- 說說你知道的排序演算法的實現以及他們的時間複雜度,以及穩定性。
答案
底層答案:iOS底層
//設計模式:設計模式
//網路相關: 網路相關
//多執行緒: 多執行緒
//資料結構與演算法: 資料結構與演算法