前言
收錄的面試技術點,可能沒那么多時間來總結答案,有什么需要討論的地方歡迎大家底部留言。主要記錄一下大廠技術點,希望能幫助到正在面試或者將要面試的伙伴吧。
- 更多技術題合集:
46個技術題:
- 第一個問題:怎么優化應用啟動時間。
- category,method 的實現機制,class的載入過程。
- runloop是來做什么的?runloop和線程有什么關系?主線程默認開啟了runloop嗎?子線程呢?
- 如何保證線程安全?死鎖是如何產生的?
- 線程之間是如何共享資源的?
- 進程之間如何共享資源。
- 定時器的幾個類方法底層分別是怎么實現的?
- 從設計模式的角度分析Delegate、Notification、KVO的區別。
- Struct與Union主要區別
- plist讀寫操作如何進行鎖管理
- NSNotification實現邏輯,子線程中給主線程發送通知,主線程是否會處理通知.
- 編譯器怎么檢測#import和#include導入多次的問題,三方庫導入時如何設置""和<>
- 多線程:什么時候處理多線程,幾種方式,優缺點。
- 設計一個方案來檢測KVO的同步異步問題
- willChange和 didChange的不同點
- 如何令自己所寫的對象具有拷貝功能?
- 談一談對mrc和arc的理解
- 談談對自動釋放池的理解
- 自動釋放池在mrc和arc區別
- 多層自動釋放池嵌套的對象在哪一層釋放
- 談談對于block理解,mrc和arc下有什么區別。
- TCP和UDP的應用場景與區別?
- TCP握手為什么是三次?TCP揮手為啥是四次呢?
- TCP的擁塞控制?
- socket編程里面,select、poll、epoll的區別和特點?
- client和server之間TCP通信,雙方使用到的socket函數以及過程?
- HTTP和HTTPS的區別?
- TLS的加密過程?
- TLS握手的過程?
- TLS握手時的隨機數有什么作用?
- 說說你理解weak屬性?
- UIView和CALayer是什么關系?
- @synthesize 和 @dynamic 分別有什么作用?
- 動態綁定。
- Category(類別)、 Extension(擴展)和繼承的區別。
- 為什么代理要用weak?代理的delegate和dataSource有什么區別?block和代理的區別?
- id和NSObject*的區別。
- 如何令自己所寫的對象具有拷貝功能?
- 使用系統的某些block api(如UIView的block版本寫動畫時),是否也考慮引用循環問題?
- static有什么作用?
- Swift 下的如何使用 KVC?
- Swift有哪些模式匹配?
- objc在向一個對象發送消息時,發生了什么?
- 靜態庫的原理是什么?你有沒有自己寫過靜態編譯庫,遇到了哪些問題?
- 不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放?(比如在一個vc的viewDidLoad中創建)
- OC完整的消息轉發機制+代碼實現