@TOC
笔试题 613题
⭐️⑦、笔试题-多线程篇(60题)
1.下面方法中,哪个方法
没有创建新的线程
?:[单选题]
- A、+(void)datechNewThreadSelector(SEL)selector,toTarget:(id)target withObject:(id)argument;
- B、- (id)initWithTarger(id)target selector:(SEL)selector object:(id)argument;
- C、- (void)preformSelectorInBackground(SEL)selector withObject:(id)arg;
- D、- (void)preformSelectorInOnMianThread(SEL)selector withObject:(id)arg waitUntilDone:(BOOL)wait;
2.Cocoa
中的NSRunLoop类
并不是线程安全
的?:[判断题]
- A、正确
- B、错误
3.Run Loop
的管理
并不完全是自动
的:[判断题]
- A、正确
- B、错误
4.Run Loop
同时也负责 autorelease pool
的创建
和释放
?:[判断题]
- A、正确
- B、错误
5.GCD Queue
分为哪三种?:[多选题]
- A、The main queue 主队列
- B、Global queues 全局并发队列
- C、用函数 dispatch_queue_create创建的用户队列
- D、Default queues 默认队列
6.死锁
有哪些必要
条件?:[多选题]
- A、互斥
- B、请求保持
- C、不可剥夺
- D、环路
7.以下哪种方法可以处理死锁
:[多选题]
- A、鸵鸟策略
- B、预防策略
- C、避免策略
- D、检测与解除死锁
8.下列技术不属于多线程
的是:[单选题]
- A、Block
- B、Thread
- C、Operation
- D、GCD
9.线程
和进程
的区别不正确的是:[单选题]
- A、进程和线程都是由操作系统所体会的程序运行的基本单元
- B、线程之间有单独的地址空间
- C、进程和线程的主要差别在于它们是不同的操作系统资源管理方式
- D、线程有自己的堆栈和局部变量
10.对于runloop
的理解不正确的是:[单选题]
- A、每一个线程都有其对应的RunLoop
- B、默认非主线程的RunLoop是没有运行的
- C、在一个单独的线程中没必要去启用RunLoop
- D、可以将NSTimer添加到RunLoop中
11.以下多线程
对int型变量x的操作,哪个不需要
进行同步:[单选题]
- A、x=y
- B、x++
- C、++x
- D、x=1
12.多线程
中栈
与堆
是公有
的还是私有
的:[单选题]
- A、栈公有,堆私有
- B、栈公有,堆公有
- C、栈私有,堆公有
- D、栈私有,堆私有
13.下面关于线程管理
错误的是:[单选题]
- A、GCD所用的开销要比NSTread大
- B、可以在子线程中修改UI元素
- C、NSOperationQueue是比NSThread更高层的封装
- D、GCD可以根据不同优先级分配线程
14.Object C的线程
下面描述不正确的是:[单选题]
- A、使用NSThread创建、使用GCD的dispatch
- B、直接使用NSOPeration,然后将其加入NSOPerationQueue
- C、在主线程执行代码,方法是performSelectorOnMainThread,
- D、如果想延时执行代码可以用performSelector:OnThread:withObject:waitUnitlDone;
15.对NSOperationQueue
理解不正确的是:[单选题]
- A、存放NSOperation的集合类
- B、可以设置最大并发数
- C、放进去的线程会自动执行
- D、用户需要管理放进去的线程执行顺序
16.以下关于iOS开发
中多线程
概念,描述正确的是:[多选题]
- A、Multthreadng多线程是指从软件或硬件上,试下多个线程并发执行的技术。
- B、具有多线程能力的硬件,因为有硬件的支持。所以能够在同一时间内执行多于一个的线程,进而提升应用程序的整体处理性能。
- C、多线程能够同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率,从而提高应用程序的效率。
- D、进程启动之后,一个最主要的线程被称为主线程,主线程会创建和管理应用程序中所有的UI元素
17.每个线程
不仅仅在创建
的过程中需要耗费时间
,同时它也会占用
一定内核的内存空间
和应用程序的内存空间
。:[判断题]
- A、正确
- B、错误
18.在iOS中,主线程
的栈空间大小
为:[单选题]
- A、1MB
- B、4MB
- C、8MB
- D、32MB
19.在iOS中,主线程
的栈空间大小
是可以修改
的?:[判断题]
- A、正确
- B、错误
20.在iOS中,应用程序子线程
的默认栈空间大小
为?:[单选题]
- A、256 KB
- B、512 KB
- C、1 MB
- D、4 MB
21.iOS应用程序子线程
的栈空间大小
,会在线程
的使用过程
逐渐增加
?:[判断题]
- A、正确
- B、错误
22.iOS子线程
运行分配的最小栈空间
是?:[单选题]
- A、4 KB
- B、8 KB
- C、16 MB
- D、32 MB
23.子线程
运行分配的栈空间大小
,必须为4KB的整数倍
?:[判断题]
- A、正确
- B、错误
24.线程
的优先级
属于threadPriority
是一个0.0~1.0
之间的浮点数,那么1.0
表示 最高
的优先级?:[判断题]
- A、正确
- B、错误
25.线程的默认的优先级
是0.5
?:[判断题]
- A、正确
- B、错误
26.优先级较高
的线程,一定
比优先级较低
的线程先执行
?:[判断题]
- A、正确
- x] B、错误
27.在线程
自创
至消亡的
整个生命周期中包含多个状态,各状态的顺序
是?:[单选题]
- A、创建状态、就绪状态、阻塞状态、运行状态、消亡状态
- B、创建状态、就绪状态、运行状态、阻塞状态、消亡状态
- C、就绪状态、创建状态、运行状态、阻塞状态、消亡状态
- D、就绪状态、创建状态、阻塞状态、运行状态、消亡状态
28.iOS应用程序的每条线程
,都有唯一的RunLoop对象与之对应
?:[判断题]
- A、正确
- B、错误
29.子线程
的RunLoop
需要手动创建
?:[判断题]
- A、正确
- B、错误
30.主线程
的RunLoop
是自动创建并启动的
?:[判断题]
- A、正确
- B、错误
31.子线程
的RunLoop
,当需要手动创建
,调用以下哪个方法来启动
:[单选题]
- A、start()
- B、fire()
- C、new()
- D、run()
32.currentRunLoop
是延迟加载
的,只创建一次
?:[判断题]
- A、正确
- B、错误
33.使用Thread
创建的线程
,将共享
同一应用程序的部分内存空间
,它们拥有对数据相同的访问权限
?:[判断题]
- A、正确
- B、错误
34.为了协调多个线
程对同一数据的访问
,通常的做法是访问之前加锁
.加锁会导致一定的性能开销
吗?:[判断题]
- A、不会
- B、会
35.Thread
的创建分为显式
和隐式
两种类型,其中显式方式
有哪两种:[多选题]
- A、Thread.detachNewThreadSelector(selector:toTarger:with:)
- B、object.performSelector(inBackground:with:)
- C、object.performSelector(inBackground:afterDelay with:)
- D、Thread.init(targer:selector:object:)
36.当一个Lock对象
成功调用lock
方法后,在其调用unlock
方法之前,任何线程都不能
对此Lock对象加锁:[判断题]
- A、正确
- B、错误
37.iOS提供了哪些类型
的线程锁
:[多选题]
- A、Lock
- B、RecursiveLock
- C、ConditionLock
- D、UnLock
38.ConditionLock
是一种带条件的锁
,可以根据条件对多线程进行加锁
?:[判断题]
- A、正确
- B、错误
39.也就是说一个线程可以对一个Recursive对象
多次调用lock
,只要解锁
时调用相同的unlock
方法便可。以上是RecursiveLock的特征
吗?:[判断题]
- A、不是
- B、是
40.因为线程
是消耗系统资源
的,所以需要控制线程的并发数
,以避免系统变慢
?:[判断题]
- A、是
- B、不是
41.Cocoa operation
相关的类有哪些:[多选题]
- A、Operation
- B、NSLock
- C、OperationQueue
- D、NSThread
42.为了在同一个时间点
内只执行一个线程
,且当前一个线程结束后
才执行第二个
线程,需要将队列的maxConcurrentOperationCount
设置为:[单选题]
- A、0
- B、1
- C、2
- D、10
43.Grand Central Dispatch(GCD)
是由Apple公司在哪个iOS版本
时,推出的一个多核编程的解决方案
:[单选题]
- A、iOS 4.0
- B、iOS 5.0
- C、iOS 6.0
- D、iOS 7.0
44.GCD
的API
很大程度上是和以下哪种技术配合使用
的:[单选题]
- A、delegate
- B、block
- C、kvo
- D、kvc
45.由于GCD
基于工作单元
而非像Thread
那样基于运算
,所以GCD
可以控制
注入等待任务结束
、监视文件描述符
、周期执行代码以工作挂起
等任务?:[判断题]
- A、正确
- B、错误
46.GCD
的dispatch queue
调度队列
可以是并发
的,也可以是串行
的?:[判断题]
- A、正确
- B、错误
47.以下关于并发
、串行
、同步
和异步
描述正确的是:[多选题]
- A、并发:多个任务同时执行
- B、串行:一个任务执行完成后,再执行下一个任务
- C、 同步:在当前线程中执行任务,不会开启新线程
- D、 异步:在新的线程执行任务
48.GCD
的dispatch queue
调度队列有以下哪三种类型
?:[多选题]
- A、The main queues 串行队列
- B、Global queues 全局队列
- C、 用户线程队列
- D、 子线程队列
49.Global queues
全局队列
是并发队列
,它包含哪些优先级
?:[多选题]
- A、高
- B、中
- C、 低
- D、 后台
50.Thead
多线程技术
是基于什么来实现多线程
的?:[单选题]
- A、Thead线程
- B、Queue队列
- C、 Block闭包
- D、Task任务
51.Operation
多线程技术
是基于什么来实现多线程
的?:[单选题]
- A、Thead线程
- B、Queue队列
- C、 Block闭包
- D、Task任务
52.Grand Cental Dispatch
多线程技术
是基于什么来实现多线程
的?:[单选题]
- A、Thead线程
- B、Queue队列
- C、 Block闭包
- D、Task任务
53.Timer
定时器
有哪两种功能?:[多选题]
- A、在指定的时间执行指定的任务。
- B、在指定的时间范围内执行指定的任务。
- C、 可以实现推送通知的任务。
- D、每隔一段时间执行指定的任务。
54.以下保持线程同步
的方式有哪些?:[多选题]
- A、@synchronized
- B、NSLock
- C、NSCondition
- D、pthread_mutex
55.dispatch_semaphore
是GCD
用来同步
一种方式吗?:[判断题]
- A、是
- B、不是
56.NSRecursiveLock
是一个递归锁
,这个锁可以被同一个线程多次请求
,而不会引起死锁
吗?:[判断题]
- A、是
- B、不是
57.OSSpinLock
是一种自旋锁
,它有哪三种方法
?:[多选题]
- A、加锁
- B、尝试加锁
- C、尝试解锁
- D、解锁
58.OSSpinLock
请求加锁失败
的话,OSSpinLock
会一直轮询,等待时会消耗大量CPU资源
,所以OSSpinLock不适合较长时间的任务
?:[判断题]
- A、是
- B、不是
59.NSLock
请求加锁失败
的话,会先轮询
,但一秒
过后便会使线程进入 waiting状态
。等待唤醒
。以上说法正确吗?:[判断题]
- A、正确
- B、错误
60.pthread_mutex
是基于OC语言
的多线程
加互斥锁的方式
吗?:[判断题]
- A、是
- B、不是