一、億級日誌中,查找登錄次數最多的十個用戶數組
解題思路:先用哈希表保存登錄次數和ID,而後用紅黑樹保存最大的十個數。緩存
二、說說你對 OC 中 load 方法和 initialize 方法的異同。app
主要說一下執行時間,各自用途,沒實現子類的方法會不會調用父類的函數
三、 說說你對 block 的理解。oop
三種 block,棧上的自動複製到堆上,block 的屬性修飾符是 copy,循環引用的原理和解決方案。佈局
四、 說說你對 runtime 的理解。性能
主要是方法調用時如何查找緩存,如何找到方法,找不到方法時怎麼轉發,對象的內存佈局。優化
五、說說你對 MVC 和 MVVM 的理解。spa
MVC 的 C 太臃腫,能夠和 V 合併,變成 MVVM 中的 V,而 VM 用來將 M 轉化成 V 能用的數據。 線程
六、說說 UITableView 的調優。
一方面是經過 instruments 檢查影響性能的地方,另外一方面是估算高度並在 runloop 空閒時緩存。
七、 談談你對 ARC 的理解。
ARC 是編譯器完成的,依靠引用計數,談談幾個屬性修飾符的內存管理策略,什麼狀況下會內存泄露。
八、野指針是什麼,iOS 開發中什麼狀況下會有野指針?
野指針是不爲 nil,可是指向已經被釋放的內存的指針....
九、介紹 block
提到棧上的 block 在 ARC 下會自動複製到堆上
十、 ARC 會對代碼作什麼優化?
好比 NSString *s2 = s1; s2 = nil 這樣的語句,可能就不會有 retain 和 release 方法了
十一、數據的雙向綁定怎麼作, bind 函數了解過麼?
十二、怎麼判斷某個 cell 是否顯示在屏幕上 進程和線程的區別 TCP 與 UDP 區別 TCP 流量控制 數組和鏈表的區別
1三、UIView 生命週期 若是頁面 A 跳轉到 頁面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪一個先調用?
1四、block 循環引用問題 ARC 的本質 RunLoop 的基本概念,它是怎麼休眠的? Autoreleasepool 何時釋放,在什麼場景下使用? 如何找到字符串中第一個不重複的字符 哈希表如何處理衝突