iOS面试考察点

来源:互联网 发布:关系数据库语言 编辑:程序博客网 时间:2024/05/14 04:28

因为工作关系,最近总结了一套iOS面试流程及题目,分享给大家看一下。题目多来自网上常见常考的问题,这个面试的目的也不是为了考察应聘者的知识有多么牛逼,而是要看这个人能不能干活,干好活。

欢迎大家提各种宝贵意见。


面试流程

1.   闲聊

a)    自我介绍:自我认识能力

b)    评价上一家公司:社会认知能力

c)    兴趣爱好(书、电影、音乐、dota等),能否在爱好领域达到比较深的地步

2.   让面试者先讲一会他现在所做的项目,5分钟左右。

a)    做事热情

b)    沟通能力

c)    专业知识水平

d)    团队融合度

3.     写一个foo-bar逻辑判断小程序。(从1-100遍历一遍,如果是3的倍数,输出foo,如果是5的倍数,输出bar,如果是3和5的倍数,输出foobar。不要小看这个题目,很多自称几年工作经验的老鸟都栽在这个题目上,我面试到的人能够一遍通过的比例低到你绝对不敢想象。)

a)    思维是否清楚,程序经验及聪明程度。

4.iOS专业能力测试


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的父类是什么。

c)    事件响应链流程。

i.        hitTest、pointInside及如何修改事件响应的顺序。

5.     UIViewController的生命周期。(didLoad,willAppear等)

a)    loadView函数

b)    viewDidUnload函数、didReceiveMemoryWarning函数

6.     你使用过或见过哪些动画方式。([UIView beginAnimations: context:]、[UIViewanimateWithDuration]、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方法有什么区别?

b)    使用gcd处理一些并行任务,可以有哪些方法。哪种方法最好最值得推荐?

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框架的联系是什么。

 

部分试题来自于喵神OneCat的博文:上级向的十个iOS面试问题


0 0
原创粉丝点击