我對知乎上的如何面試一個iOS工程師帖子的一點回答

因爲要找工作,在知乎上看了一個帖子,叫做“如何面試iOS工程師”,裏面有一些初級問題,我記錄下來,一是分享,而是記錄,方便複習,如果有不對的,請批評指正,共同進步。問題如下:
1.什麼是arc?(arc是爲了解決什麼問題誕生的?)
2. 請解釋以下keywords的區別: assign vs weak, __block vs __weak
3. __block在arc和非arc下含義一樣嗎?
4. 使用atomic一定是線程安全的嗎?
5. 描述一個你遇到過的retain cycle例子。(別撒謊,你肯定遇到過)
6. +(void)load; +(void)initialize;有什麼用處?
7. 爲什麼其他語言裏叫函數調用, objective c裏則是給對象發消息(或者談下對runtime的理解)
8. 什麼是method swizzling?
9. UIView和CALayer是啥關係?
10. 如何高性能的給UIImageView加個圓角?(不準說layer.cornerRadius!)
11. 使用drawRect有什麼影響?(這個可深可淺,你至少得用過。。)
12. ASIHttpRequest或者SDWebImage裏面給UIImageView加載圖片的邏輯是什麼樣的?把UIImageView放到UITableViewCell裏面問更贊)
13. 麻煩你設計個簡單的圖片內存緩存器(移除策略是一定要說的)
14. 講講你用Instrument優化動畫性能的經歷吧(別問我什麼是Instrument)
15. loadView是幹嘛用的?
16. viewWillLayoutSubView你總是知道的。。
17. GCD裏面有哪幾種Queue?你自己建立過串行queue嗎?背後的線程模型是什麼樣的?
18. 用過coredata或者sqlite嗎?讀寫是分線程的嗎?遇到過死鎖沒?咋解決的?
19. http的post和get啥區別?(區別挺多的,麻煩多說點)
20. 我知道你大學畢業過後就沒接觸過算法數據結構了,但是請你一定告訴我什麼是Binary search tree? search的時間複雜度是多少?我很想知道!

我打算一個一個問題的去解決,慢慢更新。
1.什麼是ARC?
ARC是英文單詞automatic reference counting 的簡寫,是iOS的一種內存管理機制。
在ARC之前,iOS使用的是MRC內存管理機制,MRC機制,簡言之遵守“誰創建,誰釋放,誰引用,誰管理”的機制。也就是說創建一個對象時,需要向對象發送alloc、copy、retain消息,還要使用完畢後向對象發送release消息,當計數器爲0的時候,對象就會被釋放。
而ARC是蘋果爲了簡化內存管理,會在程序的適當地方自動插入release和autorelease。
同時,要注意修飾符strong assign weak 。用strong修飾的對象,引用計數會+1,並且strong是默認的修飾符,strong修飾的指針變量指向對象時,當指針指向新值或者指針不復存在,相關聯的對象就會自動釋放,而weak修飾的指針變量指向對象,當對象的擁有者指向新值或者不存在時weak修飾的指針會自動置爲nil。assign是簡單的賦值,並不會修改計數,主要用於修飾基本數據類型。
以後,每天更新一點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章