面试的时候你可能碰到面试官设的各类坑:不止喜欢问你iOS开发的一些特性和方法,更喜欢喜欢问你这些特性及方法你以为它是怎么实现的?你以为苹果公司为何要这样设计?面试
也许面试官本身也没本身实现过,毕竟有些东西苹果为何这样设计,若不是苹果公司的工程师没法知道。编程
但做为面试者,这个些问题正是拉开差距的最好办法:不必定要你亲手用C去重现苹果的机制,但能够谈谈你的看法和见解。因此,这一块最好有个准备。多线程
通常,会问你怎么实现某个模块,用过哪些API,介绍下他们的用法。架构
你之前的项目架构是怎样的?框架
你是如何数据建模的?动画
你怎么实现字典转模型的?线程
你用过哪些动画效果?设计
你怎么处理图片加载的?3d
你有怎样用过一些第三方库的?cdn
可是,还有的喜欢问你OC语法各类高级特性如Runtime动态性,以及你平时常常用的某个方法,若是我让你本身写本身实现,你以为它是怎么实现的?
除了App应用程序的生命周期,ViewController的生命周期你知道吗?它的生命周期是怎么操做和控制的?你以为这些操做的方法是怎么实现的?它和App的生命周期的区别你说说看?
你平时copy用的多吗?何时会用?关于copy的其它特性你有了解过吗,好比说引用计数和内存管理方面,你能不能说说看?若是我让你本身写个copy的方法,你以为copy这个方法是怎么实现的?
你有了解过运行时吗?运行时是什么?你以为运行时的这些特性是怎么实现的?动态性的这些特性在编译和运行分别怎样体现的?你平时编程的时候有怎样利用过运行时的一些特性?
多线程编程你有过了解吗?关于多线程有哪些方法?线程和进程有什么区别?为何要用多线程?分别最多能够开多少进程和线程?你以为GCD里面的开启线程的操做是怎么实现的?还有线程切换的操做你以为是怎么实现的?
内存管理你了解多少?我知道你提到了ARC和strong,retain等等一些东西,但你以为在ARC以前的MRC是怎么实现内存管理的?ARC又是怎么实现内存管理的?还有,你以为OC中操做内存的这些方法是怎么实现的?
好的,你刚才提到了FMDB,能介绍你用过它的哪些类?作了些什么事情?在你的项目中是怎么用到它的?你以为它和CoreData的区别是什么?还能说说其它有关数据模型的一些框架吗?它们是怎么实现数据存储功能的?实现数据存储的时候各自有什么共同点和区别?
这些问题是PA一个面试官问过的,据说他是从百度公司跳槽出来的。可能吧,百度系出来的面试官真的喜欢问底层。
关于这些问题的答案,特别是关于自由发挥和独立看法的部分,欢迎读者在本身复习相关知识后,在评论区贴出你的看法。