上面的答案都比較“抽象”,下面是我面試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、對面向對象的理解,不好也可以寫程序,但是寫不好大程序
2、對內存的理解
3、調試的能力
4、調優的能力
產品層面:
1、對基本商業模式的了解
2、對流行產品和產品流行趨勢的了解
3、對app store營銷基礎知識的了解
4、對SNS的了解
我會從以下幾個小方面去面試:
1.通用編程技能,例如:一道小算法,數據結構的實現方式,網絡,多線程。
2.開發語言,例如:語言特性,重新實現語言提供的功能,是否深入研究過這門語言的某部分。
3.開發平臺,例如:該平臺的內部消息,內存,線程等機制。
4.工具,例如:調試技巧,是否熟練使用,代碼管理工具,項目管理工具,效率工具。
5.行業視角,例如:用什么,知道什么。
6.其他能力,例如:網絡上解決問題的能力,是否有持續學習的意識。
有經驗的,1-6都會問到,剛畢業的,只要重點面1和6
1.ViewController的生命周期
2.多線程(pthread、NSThread、NSOperation Queue、GCD)
3.動畫
4.繪圖
5.設計模式( MVC、單例等)
6.Objective-C語言的特征(KVO、Notification、Category等)
7.runtime
8.其他 對新技術的了解、平常怎么提高iOS開發等
1.在ios開發中一個hello world是怎么做的 如果面試者沒有答出來怎么裝到手機上覺得就是不合格
2.內存管理原理 要問得很深刻 比如 ios 中retain release 都做了什么 自動釋放池都做了什么 什么時候自動釋放池也會產生內存泄漏
3.o-c如何實現多態性 協議到底是什么和 c++多繼承區別
4.使用快捷鍵和SVN的配置和使用 代碼結構 設計模式MVC理解 這個也是為了保證團隊合作和開發的效率必要因素
5.調試技巧 如果做性能測試
6.網絡傳輸協議.解XML 等等基礎問題
7.平時看什么技術書
對于產品
有沒有行業認知 對現在的項目是否認可 能否給出一個好的路線 還有就是需要團隊的支持方怎么支持你的工作