百度iOS面试

588 阅读3分钟

一面 (40min)

  1. 属性关键字:atomic、nonatomic、strong、weak、assign、copy、retain、readOnly、readWrite(建议解释一下各个关键词,并且说明一下怎么使用及其使用的坑点),readOnly和readWrite怎么使用,weak的实现原理
  2. block用什么关键字修饰,用copy和strong有什么区别,对block有什么了解,对block引用循环有什么了解,__strong什么情况下使用
  3. 对ARC有什么了解,ARC的引用计数加一和减一怎么实现的(该问题还可以延伸:编写ARC和MRC情况下一个属性的set和get方法)
  4. 对KVO和KVC有什么了解。KVO的实现机制以及怎么使用的,如果直接修改成员变量进行KVO会怎样,什么情况会触发KVO,“=”赋值和KVC赋值会触发KVO么(通过willChangeValueForKey和didChangeValueForKey方法触发)? KVC有那些方法,平常怎么使用的?
  5. 对runtime有什么了解,有怎么使用runtime机制(该问题可以延伸提问iOS各种运行时使用的底层原理)
  6. __block有什么了解,怎么用,实现原理是什么(实现原理不记得了)
  7. 编程题:寻找两个view的最近公共父视图
  8. UIView和CALayer有了解多少(因为了解的不多,所以没有接下来的问题)

······一面问题有近二十个,都是基础问题,最好不要答错或答不出来,我感觉答对了8成左右吧,面试官不是很满意······

二面 (30min)

  1. 先简单自我介绍
  2. 单例的实现有几种(只知道GCD的实现方式,汗颜)
  3. 多线程有几种实现(NSTread,GCD,NSOperation),分别有什么区别。项目中有用到那些多线程(还会针对你的回答进行深入讨论)
  4. 如何对tableView滑动卡顿进行优化,对于微博的tableView的优化有什么想法
  5. 有遇到哪些崩溃,都是怎么解决的
  6. 死锁?怎么解决
  7. 有接触过动画么,对coreAnimation有了解么(因为没怎么接触过动画,所以也就不知道接下来会问什么)
  8. 项目中可以拿出手的东西

······其实一面二面还有一些题目,当时比较紧张不太记得了(明明搜狐的面试都很淡定的)······

结论

一面就是一些基础知识,只有有准备,基本都能答上来,二面则会深入一些。面试结束,面试官说领导不在,让我回去等消息(潜台词就是你以及挂了,快走吧)。感觉基础知识还是有些没答上来,后面多积累吧。综合来说,百度的面试比搜狐的面试质量高多了,会细致考察基础知识,也会考察具体项目的细节,对个人技术积累和思考能力的测试很全面。百度不愧是大厂,面试还是有水平的,一般人进不去。很可惜面试没过,以后再接再厉吧,争取两年后再去百度面试(在此立贴为证)