记不得出处了,希望勿怪~~
iOS专业能力考察内容
题目难度按级别区分。各级别之间可能没有直接关系,只代表相关问题的深度。第一级,数字1. 2. 3。属于应该知道范畴,应能回答出来80%以上,算是能干活的人。可以用来面试1-2年经验的人。
第二级,字母a) b) c)。属于有较深理解内容,应能回答出来30%-50%,说明或深或浅的在各知识点有一些研究。能把任何一个问题讲得透彻明白的,都加分。可以用来面试2-3年经验的人。
第三级,罗马数字i. ii,iii.。属于较高级认识阶段,应能回答出10%-20%左右。
1. 简述关键字assign,retain,copy,strong,weak,nonatomic,readonly,setter,synthesize的作用。
a) ARC是什么,其实现原理。
b) 请简述非ARC内存管理方式的关键原则。ARC的优缺点。
2. 请简述一些UIView的常见属性的作用及其默认值。(frame、tag、userInteractionEnabled、clipsToBounds,layer等)
a) frame属性与bounds属性的作用与区别。
i. 做动画时应使用哪个属性?为什么?
b) CALayer与UIView的关系及各自的作用。
3. 请列举UITableViewDelegate、UITableViewDataSource里的函数。哪些是必须实现的(numberOfRow, cellForRow)?哪些是不必实现的?
a) 请简述自己实现一个简单tableView的思路与关键点。(内存重用)
4. 按下UIButton到手指从屏幕离开,总共可以触发哪些函数?
a) 触控事件有哪几个状态?(UITouchPhaseBegan,Moved,Ended,Cancelled)。
b) UIWindow,UIView,UIViewController,UIApplication,UIResponder, UIScreen的父类是什么。
UIView UIResponder UIResponder UIResponder NSObject NSObject
c) 事件响应链流程。
i. hitTest、pointInside及如何修改事件响应的顺序。
5. UIViewController的生命周期。(didLoad,willAppear等)
a) loadView函数
b) viewDidUnload函数、didReceiveMemoryWarning函数
6. 你使用过或见过哪些动画方式。([UIView beginAnimations: context:]、[UIView animateWithDuration]、Core Animation、OpenGL ES)
a) 它们的效率有差别么?有的话请排序。
b) 请简述CAKeyframeAnimation的使用方法。
i. 请简述显式事务、隐式事务及事务嵌套。
ii. 贝塞尔曲线是什么?你在哪见过它?(动画里的时间函数CAMediaTimingFunction、路径函数等都是贝塞尔曲线)
7. 定义一个block变量。
a) 循环引用导致的内存问题
i. block的底层实现
8. NSNotification和KVO的区别和用法是什么?
a) 它们的实现上有什么区别?
b) 如果用protocol和delegate(或者delegate的Array)来实现类似的功能,可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?
9. 请简述你用过的iOS多线程方式。
a) NSOperation中start和main方法有什么区别?
如果你把NSOperation交给队列去维护,只需要实现main方法就行了,但是你如果想要手动去控制这个线程(启动。。。),需要自己调用start方法,但是这样是不安全的, 因为若没有获得充分资源,而此时你调用start方法,就会抛出异常。
c) 是否使用过信号量或条件锁。
i. iOS系统多线程模型及它们的优缺点。
ii. 常见基础类中,哪些类是线程安全的?KVO是线程安全的么?
10. 请简述iOS持久化存储有哪些方式。
11. 请简述你在iOS开发中见到的一些设计模式。
12. 使用过Objective-C的运行时编程(Runtime Programming)么?用它做了什么?记得所使用的相关的头文件或者某些方法的名称吗?
13. 使用过哪些Core打头的内容(CoreData,CoreAnimation,CoreGraphics,CoreText,CoreImage)。
a) 评价任一Core打头的框架。
b) CA框架、CG框架和UI框架的联系是什么。