一面
1、介绍项目
2、在KVO中,他是怎么知道监听的对象发生了变化?
3、字典的工作原理 ?怎100w个中是怎么快速去取value?
4、一个上线的项目,知道这个方法可能会出问题,在不破坏改方法前提下,怎么搞?
5、Block和函数指针的区别?
6、性能优化
7、YYModel和AF源码
8、如何自己设计json转model
9、架构
他们的面试官好像都爱问一下底层的东西,比如这次面试上来机会问我KVO的问题。
问题【1】,看着好像很吊的样子,仔细一样不去思考,可能还真不是太了解,
问题【2】,这个就是纯纯的数据结构的问题了。
问题【3】,这个就是iOS的runTime的问题了,要只要isa,和一些swizzling技术
问题【4】,就是看你了解有多广泛了。
二面
1、浅拷贝和深拷贝的区别
2、Block的循环引用、如何解决、原理
3、Block和delegate的比较
4、kvo的实现原理
5、Autorelease pool的实现原理
6、消息转发机制
7、线程死锁的四个条件
8、进程和线程的区别
9、持久化
10、事务的特征
中途还讨论了Masonry的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用多次,然后争论了一会儿
三面
主要问了项目的一些东西 和给一些场景问我如何实现
自我介绍 介绍一些项目难点
主线程是相对于什么而言的
一张图片的内存占用大小是由什么决定的
索引的作用
索引的优缺点
在数组中找最小的k个数
淘宝下拉加载更多如何优化
淘宝页面发送HTTP请求的过程
介绍一下MVVM
知道哪些设计模式
三面面试官主要就聊了一些具体场景问题和一些基础,基础应该是没太大问题。