- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
iOS程序员面试分类模拟12
简答题
1.?什么是线程?线程与进程有什么区别?为什么要使用多线程?
正确答案:
线程指程序在执行过程中,能够执行程序代码的一个执行单元。线程主要有4种状态:运行、就绪、挂起(江南博哥)、结束。
??进程指一段正在执行的程序。而线程有时候也被称为轻量级进程,是程序执行的最小单元。一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。进程与线程的关系如图所示。
??
??进程与线程的关系
??在操作系统级别上,程序的执行都是以进程为单位的,而每个进程中通常都会有多个线程互不影响地并发执行,那么为什么要使用多线程呢?其实,使用多线程为程序研发带来了巨大的便利。具体而言,有以下几个方面的内容:
??1)使用多线程可以减少程序的响应时间。在单线程(单线程指程序执行过程中只有一个有效操作的序列,不同操作之间都有明确的执行先后顺序)的情况下,如果某个操作很耗时,或者陷入长时间的等待(如等待网络响应),那么此时程序将不会响应鼠标和键盘等操作,使用多线程后,可以把这个耗时的线程分配到一个单独的线程去执行,使得程序具备了更好的交互性。
??2)与进程相比,线程的创建和切换开销更小。由于启动一个新的线程必须给这个线程分配独立的地址空间,建立许多数据结构来维护线程代码段、数据段等信息,而运行于同一进程内的线程共享代码段、数据段,所以线程的启动或切换的开销比进程要少很多。同时多线程在数据共享方面效率非常高。
??3)多CPU或多核计算机本身就具有执行多线程的能力,如果使用单个线程,那么将无法重复利用计算机资源,造成资源的巨大浪费。因此,在多CPU计算机上使用多线程能提高CPU的利用率。
??4)使用多线程能简化程序的结构,使程序便于理解和维护。一个非常复杂的进程可以分成多个线程来执行。
?
2.?如何理解多线程?
正确答案:
多线程(multithreading)指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件的支持而能够在同一时间执行多个线程,进而提升整体处理性能。要深入了解iOS中的多线程技术,先需要了解以下几个概念。
??1.进程
??每个正在系统上运行的程序都是一个进程。每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内。进程在系统内存中的关系如图所示。
??
??系统内存中的进程
??通过“活动监视器”可以查看Mac系统中开启的所有进程(见图)。
??
??活动监视器中的进程
??2.线程
??线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。每个进程包含至少一个线程。线程基本上是轻量级的进程,它负责在单个程序中执行多个任务。通常由系统负责多个线程的调度和执行。
??需要注意的是,在同一个线程中执行的任务是串行的。也就是说,在同一时间内,一个线程只能执行一个任务。
??线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。多线程技术主要是为了充分利用CPU,提高程序的执行效率。多线程之间的关系如图所示。
??
??多线程之间的关系
??事实上,在同一时间,CPU只能处理一条线程,只有一条线程在执行。多线程的并发执行,其实就是CPU快速地在多条线程之间调度。如果CPU调度线程的速度足够快,那么就会产生多条线程并发执行的假象。
??多线程技术的优点如下:
??1)可以很大程度上提高程序的执行效率,提高程序的响应速度。
??2)使用线程可以把占据时间长的程序中的任务放到后台去处理,这样就不会阻塞程序主线程,用户体验更好(耗时操作会卡住主线程,严重影响UI的流畅度)。
??3)提高计算机资源的利用率,如:更加充分利用内存,多CPU计算机上提高CPU利用率。
??4)将进程分块,优化简化程序逻辑结构。
??多线程技术的缺点如下:
??1)多线程程序的代码会更加复杂、难读,增加交接和维护难度。
??2)创建和调度线程会有额外的开销,线程越多,开销越大,甚至反而降低程序的性能。
??3)通常模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。
??因此,在实际使用多线程时,需要适当开启线程,当线程使用完成后,需要及时释放资源。在最新的iOS技术中,已经很少需要直接操作线程了,因为苹果公司已经将大部分复杂的操作封装好。
?
3.?如何理解HTTP协议?
正确答案:
超文本传输协议(HyperTextTransferProtocol,HTTP)是互联网上应用最为广泛的一种网络协议。简单来说,HTTP是客户端和服务器端之间请求和应答的标准,它可以使
文档评论(0)