如何面試iOS工程師-問題列表

參考知乎

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的時間復雜度是多少?我很想知道!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容