美文网首页
iOS面试总结(亲身经历)

iOS面试总结(亲身经历)

作者: Edward521Alice | 来源:发表于2019-02-26 21:53 被阅读7次

1、 runtime用过吗?runloop用过吗?实际项目中用到的场景?

RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。

[self goHome];//这是我们常见的方法调用,通过clang编译器,它却是这样的

objc_msgSend(obj,@selector(goHome));

首先,编译器将代码[obj goHome];转化为objc_msgSend(obj,@selector(GoHome));,在objc_msgSend函数中。首先通过obj的isa指针找到obj对应的class。在Class中先去cache中通过SEL查找对应函数method(猜测cache中method列表是以SEL为key通过hash表来存储的,这样能提高函数查找速度),若cache中未找到。再去methodList中查找,若methodlist中未找到,则取superClass中查找。若能找到,则将method加入到cache中,以方便下次查找,并通过method中的函数指针跳转到对应的函数中去执行。

2、类和扩展有什么区别,分别是干什么的?实际项目中用到的场景?

3、多线程GCD,NSOperition用到的场景平时开发时候。

4、UIView和UILayer有什么关系,平时用layer多吗?场景?

5、socket平时用过吗?用到了系统的哪些类?场景?

GCDAsyncSocket.h

6、block用的多吗?场景?

7、_ _ weak和_ _block的区别?

8、通知、代理、block有什么区别,平时用到的场景?

9、平时开发过程中用到的设计模式有哪里?

10、MVC三者之间的关系?

1)Model 和 View 永远不能相互通信,只能通过 Controller 传递。

2)Controller 可以直接与 Model 对话(读写调用 Model),Model 通过 Notification 和 KVO 机制与 Controller 间接通信。

3)Controller 可以直接与 View 对话,通过 outlet,直接操作 View,outlet 直接对应到 View 中的控件,View 通过 action 向 Controller 报告事件的发生(如用户 Touch 我了)。Controller 是 View 的直接数据源(数据很可能是 Controller 从 Model 中取得并经过加工了)。Controller 是 View 的代理(delegate),以同步 View 与 Controller。

11、OC的内存管理机制?简要说明一下。

12、swift和OC的区别是什么?

13、TCP/UDP的区别?分别是什么?

14、KVC、KVO分别是什么?实际开发中什么时候会用到?

相关文章

网友评论

      本文标题:iOS面试总结(亲身经历)

      本文链接:https://www.haomeiwen.com/subject/jrazyqtx.html