iOS 面試題(一)

基礎(chǔ)題:
1.在oc中如何實(shí)現(xiàn)深度拷貝2.請(qǐng)描述什么是delegate、block、NSNotification,他們有什么作用

3.請(qǐng)寫出一個(gè)線程安全的單例模式

4.解釋屬性中strong、weak、assign、copy的區(qū)別

5.#import和#include的區(qū)別

6.描述tableView的重用機(jī)制

7.Object-C有多繼承嗎?沒有的話用什么代替?

8.category與繼承之間的區(qū)別

9.#define和const定義的變量,有什么區(qū)別

10.TCP和UDP的區(qū)別是什么?

11.MD5和Base64的區(qū)別是什么,各自場(chǎng)景是什么?

12.二叉搜索樹的概念,時(shí)間復(fù)雜度多少?

13.如何添加一個(gè)自定義字體到工程中

14.如何制作一個(gè)靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù),他們的區(qū)別是什么?

15.Configuration中,debug和release的區(qū)別是什么?

16.push view controller 和 present view controller的區(qū)別

17.描述下tableview cell的重用機(jī)制

18.UIView的frame和bounds的區(qū)別是什么

19.new與alloc init的區(qū)別

20.NSArray實(shí)例化時(shí),array與init的區(qū)別

中級(jí)題目

  1. 什么是arc?(arc是為了解決什么問題誕生的?)

  2. 請(qǐng)解釋以下keywords的區(qū)別: assign vs weak, __block vs __weak

  3. __block在arc和非arc下含義一樣嗎?

  4. 使用atomic一定是線程安全的嗎?

  5. 描述一個(gè)你遇到過的retain cycle例子。

  6. +(void)load; +(void)initialize;有什么用處?

  7. 為什么其他語(yǔ)言里叫函數(shù)調(diào)用, objective c里則是給對(duì)象發(fā)消息

  8. 什么是method swizzling?

  9. UIView和CALayer是啥關(guān)系?

  10. 如何高性能的給UIImageView加個(gè)圓角?(不準(zhǔn)說layer.cornerRadius!)

  11. 使用drawRect有什么影響?(這個(gè)可深可淺,你至少得用過。。)

  12. ASIHttpRequest或者SDWebImage里面給UIImageView加載圖片的邏輯是什么樣的?(把UIImageView放到UITableViewCell里面問更贊)

  13. 麻煩你設(shè)計(jì)個(gè)簡(jiǎn)單的圖片內(nèi)存緩存器(移除策略是一定要說的)

  14. 講講你用Instrument優(yōu)化動(dòng)畫性能的經(jīng)歷吧(別問我什么是Instrument)

  15. loadView是干嘛用的?

  16. viewWillLayoutSubView。layoutSubView。

  17. GCD里面有哪幾種Queue?你自己建立過串行queue嗎?背后的線程模型是什么樣的?

  18. 用過coredata或者sqlite嗎?讀寫是分線程的嗎?遇到過死鎖沒?咋解決的?

  19. http的post和get啥區(qū)別?

  20. 什么是Binary search tree? search的時(shí)間復(fù)雜度是多少?

21.哪些類不適合使用單例模式?即使他們?cè)谥芷谥兄粫?huì)出現(xiàn)一次。

22.Notification的使用場(chǎng)景是什么?同步還是異步?

23.簡(jiǎn)單介紹一下KVC和KVO,他們都可以應(yīng)用在哪些場(chǎng)景?

24.UIButton的父類是什么?UILabel呢?

25.發(fā)送10個(gè)網(wǎng)絡(luò)請(qǐng)求,然后再接收到所有回應(yīng)之后執(zhí)行后續(xù)操作,如何實(shí)現(xiàn)?

26.實(shí)現(xiàn)一個(gè)第三方控件,可以在任何時(shí)候出現(xiàn)在APP界面最上層

27.不同版本的APP,數(shù)據(jù)庫(kù)結(jié)構(gòu)變化了,如何處理?

28.內(nèi)存中的棧和堆的區(qū)別是什么?那些數(shù)據(jù)在棧上,哪些在堆上?

29.block中的weak self,是任何時(shí)候都需要加的么?

30.GCD的queue,main queue中執(zhí)行的代碼,一定是在main thread么?

31.NSOperationQueue有哪些使用方式

32.NSThread中的Runloop的作用,如何使用?

33..h文件中的變量,外部可以直接訪問么?(注意是變量,不是property)

34.講述一下runtime的概念,message send如果尋找不到相應(yīng)的對(duì)象,會(huì)如何進(jìn)行后續(xù)處理 ?

35.利用runtime實(shí)現(xiàn)一個(gè)對(duì)象的拷貝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容