參考知乎
1. 什么是arc?(arc是為了解決什么問題誕生的?)
ARC,自動引用計數,內存管理。
2. 請解釋以下keywords的區別: assign vs weak, __block vs __weak
assign用于primitive type,weak用于object
__block為block捕獲的變量提供了修改權,__weak防止block內的循環引用。
3. __block在arc和非arc下含義一樣嗎?
我關心ARC...
4. 使用atomic一定是線程安全的嗎?
不一定。比如當a線程寫操作結束后,b線程進行寫操作,之后當a線程進行讀操作時,就讀入的是b線程的值。
5. 描述一個你遇到過的retain cycle例子。(別撒謊,你肯定遇到過)
我不想撒謊...
6. +(void)load; +(void)initialize;有什么用處?
load在類被import時調用,此時是改變類的行為的最佳時機,比如method swizzling。initialize在第一個消息發送之前被調用。
7. 為什么其他語言里叫函數調用, objective c里則是給對象發消息(或者談下對runtime的理解)
Objective-C是一門動態語言,[obj foo]在編譯時被轉換為objc_msgSend(obj, foo, ...)。
8. 什么是method swizzling?
方法攪拌,運行時交換兩個方法的實現...
9. UIView和CALayer是啥關系?
UIView擁有CALayer,CALayer的Delegate是UIView 參考
10. 如何高性能的給UIImageView加個圓角?(不準說layer.cornerRadius!)
一般通過clipsToBounds和layer.cornerRadius會強制Core Animation提前渲染屏幕的離屏繪制,影響性能。
可以通過貝塞爾曲線切割圖片達到目的。
11. 使用drawRect有什么影響?(這個可深可淺,你至少得用過。。)
drawRect依賴Core Graphics和UIKit根據傳入的rect進行自定義繪制
12. ASIHttpRequest或者SDWebImage里面給UIImageView加載圖片的邏輯是什么樣的?(把UIImageView放到UITableViewCell里面問更贊)
找緩存-找不到下載-設置圖片
13. 麻煩你設計個簡單的圖片內存緩存器(移除策略是一定要說的)
14. 講講你用Instrument優化動畫性能的經歷吧(別問我什么是Instrument)
15. loadView是干嘛用的?
loadView是UIViewController的實例方法,會在獲取試圖控制器的view為nil時被調用。手寫控制器時,重載此方法來定義view屬性。
16. viewWillLayoutSubView你總是知道的。。
視圖的bounds改變(如屏幕旋轉)時被調用,視圖子視圖位置發生改變前重載此方法做出響應。
17. GCD里面有哪幾種Queue?你自己建立過串行queue嗎?背后的線程模型是什么樣的?
mainQueue、globalQueue、customQueue
18. 用過coredata或者sqlite嗎?讀寫是分線程的嗎?遇到過死鎖沒?咋解決的?
19. http的post和get啥區別?(區別挺多的,麻煩多說點)
并沒有太多區別...
20. 我知道你大學畢業過后就沒接觸過算法數據結構了,但是請你一定告訴我什么是Binary search tree? search的時間復雜度是多少?我很想知道!