1 / 6
文档名称:

IOS面试题--线程与网络.docx

格式:docx   大小:142KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

IOS面试题--线程与网络.docx

上传人:zxwziyou9 2018/5/12 文件大小:142 KB

下载得到文件列表

IOS面试题--线程与网络.docx

文档介绍

文档介绍:1. 线程与进程的区别和联系? 
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。 
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
?什么是进程?两者关系
线程是一组指令的集合,是程序中一个单一顺序的控制流程。
进程是整个程序或者部分程序的动态执行。
每个正在系统上运行的程序都是一个进程。每个进程中包含多个线程。进程之间不能共享资源,但是线程之间可以共享资源。
3. 实现线程的方式?各自特点是什么?相互间区别是什么?
(1)NSThread:轻量级的方式(具有很少的规则和惯例,依赖的东西少),比较底层和原始。
需要自己手动管理线程的生命周期,同步的时候需要加锁来控制线程执行顺序,会增加系统开销。不推荐使用。
(2)NSOperationQueue:一个NSoperation对象可以通过调用start方法执行任务,默认是同步执行;也可以将NSOperation添加到一个NSOperationQueue中执行,这时是异步的。
通过这个方式开启线程后,可以中途停止、继续、取消等操作。
如果想控制线程执行顺序,可以通过添加依赖完成。
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上。
对于上传、下载这种复杂的操作,推荐使用。
(3)GCD:苹果提供的,异步执行。提高了代码执行效率和多核的利用率,性能更好。对于复杂的不推荐使用,但是简单的提交数据推荐使用。
4、线程同步和异步分别是什么意思?如何实现线程的同步?
线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低。
线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制。
通过添加线程锁实现线程的同步。单线程不加锁可以,但是多线程的时候,对于公共资源,必须加锁。当线程并发,也就是异步访问,就会出现问题。所以要把异步的变成同步的才行。
5、如何实现多线程按顺序执行?
在NSOperationQueue,可以通过添加依赖完成线程的顺序执行。
6. Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:
is lazy loading?
懒汉模式,只在用到的时候才去初始化。也可以理解成延时加载。
我觉得最好也最简单的一个列子就是tableView中图片的加载