一面 (40min)
- 属性关键字:atomic、nonatomic、strong、weak、assign、copy、retain、readOnly、readWrite(建议解释一下各个关键词,而且说明一下怎么使用及其使用的坑点),readOnly和readWrite怎么使用,weak的实现原理
- block用什么关键字修饰,用copy和strong有什么区别,对block有什么了解,对block引用循环有什么了解,__strong什么状况下使用
- 对ARC有什么了解,ARC的引用计数加一和减一怎么实现的(该问题还能够延伸:编写ARC和MRC状况下一个属性的set和get方法)
- 对KVO和KVC有什么了解。KVO的实现机制以及怎么使用的,若是直接修改为员变量进行KVO会怎样,什么状况会触发KVO,“=”赋值和KVC赋值会触发KVO么(经过willChangeValueForKey和didChangeValueForKey方法触发)? KVC有那些方法,日常怎么使用的?
- 对runtime有什么了解,有怎么使用runtime机制(该问题能够延伸提问iOS各类运行时使用的底层原理)
- __block有什么了解,怎么用,实现原理是什么(实现原理不记得了)
- 编程题:寻找两个view的最近公共父视图
- UIView和CALayer有了解多少(由于了解的很少,因此没有接下来的问题)
······一面问题有近二十个,都是基础问题,最好不要答错或答不出来,我感受答对了8成左右吧,面试官不是很满意······面试
二面 (30min)
- 先简单自我介绍
- 单例的实现有几种(只知道GCD的实现方式,汗颜)
- 多线程有几种实现(NSTread,GCD,NSOperation),分别有什么区别。项目中有用到那些多线程(还会针对你的回答进行深刻讨论)
- 如何对tableView滑动卡顿进行优化,对于微博的tableView的优化有什么想法
- 有遇到哪些崩溃,都是怎么解决的
- 死锁?怎么解决
- 有接触过动画么,对coreAnimation有了解么(由于没怎么接触过动画,因此也就不知道接下来会问什么)
- 项目中能够拿出手的东西
······其实一面二面还有一些题目,当时比较紧张不太记得了(明明搜狐的面试都很淡定的)······编程
结论
一面就是一些基础知识,只有有准备,基本都能答上来,二面则会深刻一些。面试结束,面试官说领导不在,让我回去等消息(潜台词就是你以及挂了,快走吧)。感受基础知识仍是有些没答上来,后面多积累吧。综合来讲,百度的面试比搜狐的面试质量高多了,会细致考察基础知识,也会考察具体项目的细节,对我的技术积累和思考能力的测试很全面。百度不愧是大厂,面试仍是有水平的,通常人进不去。很惋惜面试没过,之后再接再砺吧,争取两年后再去百度面试(在此立贴为证)多线程