關於面試題,可能沒那麼多時間來總結答案,有什麼需要討論的地方歡迎大家指教。主要記錄一下準備過程,和麪試的一些總結,希望能幫助到正在面試或者將要面試的同學吧。
一面
-
最近公共父節點(兩個節點,都可能爲null,都可能不在樹上。)
-
反轉鏈表(常規題)
-
HTTP瞭解嗎?HTTP2.0介紹下
-
iOS9-13,每個版本講一個特性
-
怎麼實現多個任務執行完後,再統一處理(應該是同步阻塞、柵欄函數、調度組)
-
不讓用SDWebImage,如何實現類似邏輯 (自己設計圖片請求和緩存,簡單講了SDWebImage的思路)
-
每個TableViewCell都有一個UIImageView要加載圖片,如果沒有緩存,有五個Cell請求一個url,同時發請求肯定是不實際的,如何處理?
-
微信TableView滑動的時候,動圖是不動的,爲什麼?(Runloop的Mode決定的)
-
有了解過WebSocket嗎?
二面
-
如何不試用遞歸,打印所有一個UIView所有的subviews
-
設計一個圖片緩存系統,並代碼實現
-
介紹基於LLVM/Clang的靜態分析
-
七層協議棧
-
HTTP是哪一層的協議
-
HTTP常見的返回碼有哪些?
-
HTTP除了GET、POST還有哪些?(UPDATE、DELETE、HEAD)
-
HTTPS介紹一下
-
HTTPS能防止中間人攻擊嗎?
-
TCP和UDP的區別
-
線程和進程的區別
-
線程之間如何進行通訊
-
不使用gcd,如何保證線程安全?
-
iOS有哪些多線程方式?(NSOperation、NSThread、GCD)
-
同步和異步有什麼區別?
-
串行隊列和並行隊列有什麼區別?
-
隊列和線程的關係
-
死鎖是怎麼產生的?
三面
-
合併排序鏈表
-
HTTPS用的對稱加密還是非對稱加密?
-
TCP的慢啓動,快恢復介紹下
-
客戶端發送網絡請求,到拿到響應的整個過程 (類似打開一個網頁的過程)
-
接上題,如果DNS解析的時候,某個ISP服務器沒有了,這時候邏輯是怎樣的?
-
介紹了下字典轉模型的設計+夜間模式的設計
-
爲什麼不用成熟的字典轉模型的三方?有了解過嗎?
-
夜間模式有什麼缺點,能怎麼優化?
-
鎖有哪些?
-
數據存儲,怎麼存的(FMDB)
-
線程安全錯誤是怎麼出現的?