课程咨询 :400-017-8985

  • 一线互联网公司iOS面试题总结(3)

    发布:西安达内ios培训      来源:西安达内      时间:2015-10-27 11:21

  • 21. oc中可修改和不可以修改类型。

    答:可修改不可修改的集合类。这个我个人简单理解就是可动态添加修改和不可动态添加修改一样。

    比如NSArray和NSMutableArray。前者在初始化后的内存控件就是固定不可变的,后者可以添加等,可以动态申请新的内存空间。

    22. 我们说的oc是动态运行时语言是什么意思?

    答:多态。 主要是将数据类型的确定由编译时,推迟到了运行时。

    这个问题其实浅涉及到两个概念,运行时和多态。

    简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。

    多态:不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类(life)都用有一个相同的方法-eat;

    那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。

    也就是不同的对象以自己的方式响应了相同的消息(响应了eat这个选择器)。

    因此也可以说,运行时机制是多态的基础?~~~

    23. 通知和协议的不同之处?

    答:协议有控制链(has-a)的关系,通知没有。

    首先我一开始也不太明白,什么叫控制链(专业术语了~)。但是简单分析下通知和代理的行为模式,我们大致可以有自己的理解

    简单来说,通知的话,它可以一对多,一条消息可以发送给多个消息接受者。

    代理按我们的理解,到不是直接说不能一对多,比如我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务。

    只是对于不同明星间,代理的事物对象都是不一样的,一一对应,不可能说明天要处理A明星要一个发布会,代理人发出处理发布会的消息后,别称B的

    发布会了。但是通知就不一样,他只关心发出通知,而不关心多少接收到感兴趣要处理。

    因此控制链(has-a从英语单词大致可以看出,单一拥有和可控制的对应关系。

    24. 什么是推送消息?

    答:推送通知更是一种技术。

    简单点就是客户端获取资源的一种手段。

    普通情况下,都是客户端主动的pull。

    推送则是服务器端主动push。 测试push的实现可以查看该博文。

    25. 关于多态性

    答:多态,子类指针可以赋值给父类。

    这个题目其实可以出到一切面向对象语言中,

    因此关于多态,继承和封装基本最好都有个自我意识的理解,也并非一定要把书上资料上写的能背出来

    26. 对于单例的理解

    答:在objective-c中要实现一个单例类,至少需要做以下四个步骤:

    1).为单例对象实现一个静态实例,并初始化,然后设置成nil,

    2).实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,

    3).重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,

    4).适当实现allocWitheZone,copyWithZone,release和autorelease。

    27. 说说响应链

    答: 事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播。

    可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。因为问的太抽象化了

    严重怀疑题目出到越后面就越笼统。

    可以从责任链模式,来讲通过事件响应链处理,其拥有的扩展性

    28. frame和bounds有什么不同?

    答:frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)

    bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)

    29. 方法和选择器有何不同?

    答:selector是一个方法的名字,method是一个组合体,包含了名字和实现.

    详情可以看apple文档。

    30. OC的垃圾回收机制?

    答: OC2.0有Garbage collection,但是iOS平台不提供。

    一般我们了解的objective-c对于内存管理都是手动操作的,但是也有自动释放池。

    但是差了大部分资料,貌似不要和arc机制搞混就好了。

上一篇:一线互联网公司iOS面试题总结(2)

下一篇:一线互联网公司iOS面试题总结(4)

最新开班日期  |  更多

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:05月31

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:05月31

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:05月31

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:05月31

  • 地址:西安市长安北路8号陕西高速大厦15F
  • 课程培训电话:400-017-8985     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2002-2018 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56