io面试题基本答案二

来源:互联网 发布:大众网络报官网 编辑:程序博客网 时间:2024/04/29 03:48

1、在某个方法中self.name = _name、name = _name,他们的区别是:

前者是存在内存管理中的,他会对name进行保留或者拷贝;而后者只是普通的赋值;

2、对象归档:

是数据持久化的一种方法,他的特点是给归档的对象进行加密,增强数据的安全性。此外,自定义的类的对象进行归档,必须实现NSCoding协议。

3、键路径:

是一个用点做分隔符键组成的字符串,用于指定一个连接在一起的对象性质序列。

4、深拷贝,浅拷贝:

深拷贝:拷贝出来的是对象内容,

浅拷贝:拷贝出来的是指针。

5、iOS的动态性:

(1)动态类型:如id类型,运行时才决定对象的接受者的类型;

(2)动态绑定:就是程序在运行时根据需要去调用所需要的方法;

(3)动态载入:让程序在运行时添加代码模块以及其他资源。

6、什么是安全释放?

就是把对象release后,再置为nil;

7、Runloop是什么?

Runloop是一个事件处理的循环,用来不停的调度工作以及处理输入时间,目的是为了减少CPU无谓的空转,每个线程默认都有一个Runloop,主线程的runloop是默认开启的,而子线程的runnloop是需要我们手动去开启的。调用开启方法:API [[nsrUNLOOP CURRENTrUNLOOP]  run];

8、写出应用程序按Home键进入后台和前台的生命周期:

(1)应用程序将要不活跃

- (void)applicationWillResignActive:(UIApplication *)application;

        应用程序以及不活跃,进入后台

- (void)applicationDidEnterBackground:(UIApplication *)application;

(2)应用程序将要进入前台

- (void)applicationWillEnterForground:(UIApplication *)application;

       应用程序进入前台,开始活跃

- (void)applicationDidBecomeActive:(UIApplication *)application;

9、UIView、CALayer、UIWindow的区别:
UIView侧重对内容的管理、绘制和构建页面,相当于相框,因为他是继承自UIResponder->NSObject,所以可以响应用户的交互事件;
CALayer侧重的是内容的显示,相当于相片,他是直接继承自NSObject,不能响应用户交互事件;
UIWindow相当于挂相框的墙壁,用来存放上面的组合。
10、OC语言面向对象的三大特性:
封装:把客观事物封装成抽象的类,隐藏内部的实现,只对外提供接口;
继承:子类继承弗雷,可以使用父类的所有功能;
多态:不同的对象以自己的方式响应相同的消息的能力。
11、JSON和XML的区别?
JSON是一种轻量级的数据交换格式,有良好地方可读性和便于快速编写,可在不同平台之间进行数据交换,传输效率低,但是解析较为简单;
XML是一种标签语言,非常适合于Web传输,XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
12、内存管理机制原则

在OC中,只要是alloc/retain/copy的对象,都要发送release消息,当对象呗发送release消息时,他并不会被立即销毁,而是被放进了释放池中,当释放池被销毁时,才会向池中的对象发送release消息,当池中对象的引用计数为0时,系统才会调用delloc,将对象和对象所拥有的实力释放掉。

13、TCP协议:面向连接、可靠的、基于字节流的运输层的通信协议;

UDP协议:是用户数据包协议,是一种无连接的传输层协议;

面向连接:指的是通信双方在通信时,要事先建立一条通信线路(建立连接,使用连接,释放连接)

面向无连接:是指通信双方不需要建立一条通信线路。

14、沙盒:

iOS应用系统为每一个应用程序只能在为该程序创建的应用文件系统中读取文件,不可以去其他地方访问,此区域称为沙盒。

15.多线程:

NSThread:轻量级的线程,需要自己管理线程的生命周期;

NSOPerationQueue:是一个操作队列,用来管理一组OPeration对象的执行,会根据需要开辟合适数量的线程执行任务。

GCD:核心是往dispatch_queue里添加要执行的任务,然后由queue来管理调度任务的执行。

Serial:串行队列,依次执行

Concurrent:并行队列,同时执行

并发:能同时执行多个任务

不并发:任务只能顺序执行

线程同步:依次执行

线程异步:同时进行

16、进程与线程的区别:

线程是进程的一部分,进程是程序的一部分。

进程有独立的地址空间,一个进程崩溃后,在保护模式下,不会对其他进程产生影响,而线程只是进程中的一个执行路径。

线程有自己的堆栈和局部变量,主线程死掉就等于整个进程死掉。




1 0
原创粉丝点击