今天在逛知乎的時(shí)候,看到一個(gè)帖子,下面的回答支持最多的是一個(gè)技術(shù)總監(jiān)總結(jié)的他面試iOS開發(fā)工程師,常問的20個(gè)非常簡單的問題,但能準(zhǔn)確答對一半以上的人卻非常少。本人看了下,感覺這些問題確實(shí)比較基礎(chǔ),之所以很多人很多問題答不上,歸根結(jié)底還是對基礎(chǔ)知識不夠重視,掌握得不夠牢靠。下面將者20個(gè)問題分享出來,大家可以來看看,你可以準(zhǔn)確答對幾個(gè)。
1.什么是arc?(arc是為了解決什么問題誕生的?)
2.請解釋以下keywords的區(qū)別:assign vs weak, __block vs __weak
3. __block在arc和非arc下含義一樣嗎?
4.使用atomic一定是線程安全的嗎?
5.描述一個(gè)你遇到過的retain
cycle例子。
6. +(void)load; +(void)initialize;有什么用處?
7.為什么其他語言里叫函數(shù)調(diào)用,objective-c語言里則是給對象發(fā)消息(或者談下對runtime的理解)
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è)簡單的圖片內(nèi)存緩存器(移除策略是一定要說的)
14.講講你用Instrument優(yōu)化動(dòng)畫性能的經(jīng)歷吧(別問我什么是Instrument)
15. loadView是干嘛用的?
16. viewWillLayoutSubView你總是知道的。。
17. GCD里面有哪幾種Queue?你自己建立過串行queue嗎?背后的線程模型是什么樣的?
18.用過coredata或者sqlite嗎?讀寫是分線程的嗎?遇到過死鎖沒?咋解決的?
19. http的post和get啥區(qū)別?(區(qū)別挺多的,麻煩多說點(diǎn))
20.我知道你大學(xué)畢業(yè)過后就沒接觸過算法數(shù)據(jù)結(jié)構(gòu)了,但是請你一定告訴我什么是Binary search tree? search的時(shí)間復(fù)雜度是多少?我很想知道!
以上就是iOS工程師面試常被問到的20個(gè)基礎(chǔ)問題,如果你都能準(zhǔn)確答上,那么恭喜你,你確實(shí)很優(yōu)秀。如果你還有不清楚的地方,那就趕緊去找資料了解、學(xué)習(xí)去吧。
相關(guān)文章:《iOS學(xué)習(xí)之UITableView的常見屬性及用法》