设为首页 加入收藏

TOP

iOS面试题(一)
2019-09-03 02:40:13 】 浏览:42
Tags:iOS 试题

文章转载自:http://www.pythonheidong.com/blog/article/3327/

iOS面试题

 

1.Difference between shallow copy and deep copy?

浅复制和深复制的区别?

浅层复制:指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。

 

2.What is advantage of categories? What is difference between implementing a category and inheritance?

类别的作用?继承和类别在实现中有何区别?

category可以在不熟悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。并且如果类别和原来类中的方法名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。

类别主要有3个作用:

(1)将类的实现分散到多个不同文件或多个不同框架中。

(2)创建对私有方法的前向引用。

(3)向对象添加非正式协议。

继承可以添加,修改或删除方法,并且可以增加属性。

 

3.Difference between categories and extensions?

类别和类扩展的区别。

categories和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。

extensions可以认为是一个私有的categories。

 

4.Difference between protocol in objective c and interfaces in Java?

obc中的协议和java中得接口概念有何不同?

obc中的代理有2层含义,官方定义为formal和informal protocol。前者和Java接口一样。

informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类的属性。现在协议有2个修饰词:”必须实现(@requied)“和”可选实现(@optional)“。

 

5.What are KVO and KVC?

kvc:键值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制。很多情况下可以简化程序代码。

kvo:键值观察机制,他提供了观察某一属性变化的方法,极大的简化了代码。

 

6.What is purpose of delegates?

代理的作用?

代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度,代理可以理解为Java中的回调监听机制的一种类似。

 

7.What are mutable and immutable types in Objective C?

obc中可修改和不可修改的类型。

简单理解就是可动态添加修改和不可动态添加修改一样。比如NSArray和NSMutableArray。

 

8.When we call objective c is runtime language what does it mean?

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

主要是将数据类型的确定由编译时推迟到运行时。

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

多态:不同对象以自己的方式响应相同的消息的能力叫做多态。

 

9.What is difference between NSNotification and protocol?

通知和协议的不同之处?

协议有控制链的关系,通知没有。通知一对多,代理则对象不用所做的事情不同。通知只负责发出。

10.What is push notification?

什么是消息推送?

推送是一个技术,获取资源的手段。

 

11.Ploymorphism?

关于多态性?

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

 

12.Singleton?

对于单例的理解?

答案:保证在内存中拥有只有类的单个实例

 

13.如何在多线程访问单例时的安全性

答案:

 

14.What is responder chain?

响应链

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

 

15.Difference between frame and bounds?

frame是以父控件左上角为坐标原点,bounds是以自身为原点。

 

16.Difference between method and selector?

方法和选择器有何不同?

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

 

17.Is there any garbage collection mechanism in Objective C?

obc的垃圾回收机制?

obc2.0有Garbage collection,但是iOS平台不提供。obc一般都是手动管理内存但也有自动释放池。

 

18.NSOperation queue?

存放NSOperation的集合类。

操作和操作队列,基本可以看成Java中的线程和线程池的概念。用于处理iOS多线程开发的问题。

 

19.What is lazy loading?

用到时才初始化,延迟加载。

延时加载可以避免内存过高,异步加载可以避免线程堵塞。

 

20.Can we use two tableview controllers on one viewcontroller?

是否能在一个视图控制器中嵌入两个tableview控制器?

一个试图控制只提供了一个view试图,有的能例如TabBarController。

 

21.Can we use one tableview with two different datasources?How you will achieve this?

一个tableview是否可以关联两个不同的数据源?你会怎么处理?

不解。

 

22.Objective C的类可以多重继承么?可以实现多个接口么?重写一个类的方式用继承还是分类好?为什么?

obc只支持单继承,可以实现多个接口,如果要实现多继承的话,可以通过类别和协议的方式来实现。一般情况下用分类好,用category重写类的方法,仅对本category有效,不会影响其他类和原有类的关系。

 

23.#import跟#include有什么区别,@class,@import<>跟@import”“有什么区别?

#import是Objective C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import”“用来包含用户头文件。

 

24.属性readwrite,readonly,assign,retain,co
iOS面试题(一) https://www.cppentry.com/bencandy.php?fid=99&id=246396

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇git找回丢失的代码 下一篇iOS Push详述,了解一下?