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