阿里iOS面试总结

一面

  • 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

  • 知道哪些设计模式

  • 三面面试官主要就聊了一些具体场景问题和一些基础,基础应该是没太大问题。