⑦(多线程篇)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)

iOS面试题 一共分为笔试题面试题两部分
笔试题 一共分为10个 总共613题
面试题 一共400题
笔试题 一个10个系列 分别为
①(语法篇) 共147题 已更新
②(常识篇) 共72题 已更新
③(界面篇) 共83题 已更新
④(iOS篇) 共52题 已更新
⑤(操作篇) 共68题 已更新
⑥(数据结构篇) 共23题 已更新
⑦(多线程篇) 共60题 已更新
⑧(网络篇) 共22题 已更新
⑨(多媒体篇) 共59题 已更新
⑩(安全篇) 共27题 已更新
面试题 一共分为3个 总共400题
⑪(面试篇 1/3) 共127题 已更新
⑪(面试篇 2/3) 共137题 已更新
⑪(面试篇 3/3) 共136题 已更新

请添加图片描述

iOS面试1000题以及答案-笔试题-⑦多线程篇

    • 笔试题 613题
    • ⭐️⑦、笔试题-多线程篇(60题)
      • 1.下面方法中,哪个`方法`没有创建新的`线程`?:[单选题]
      • 2.`Cocoa`中的`NSRunLoop类`并不是`线程安全`的?:[判断题]
      • 3.`Run Loop`的`管理`并不完全是`自动`的:[判断题]
      • 4.`Run Loop`同时也负责 `autorelease pool`的`创建`和`释放`?:[判断题]
      • 5.`GCD Queue`分为哪三种?:[多选题]
      • 6.`死锁`有哪些`必要`条件?:[多选题]
      • 7.以下哪种方法可以`处理死锁`:[多选题]
      • 8.下列技术不属于`多线程`的是:[单选题]
      • 9.`线程`和`进程`的区别不正确的是:[单选题]
      • 10.对于`runloop`的理解不正确的是:[单选题]
      • 11.以下`多线程`对int型变量x的操作,哪个`不需要`进行同步:[单选题]
      • 12.`多线程`中`栈`与`堆`是`公有`的还是`私有`的:[单选题]
      • 13.下面关于`线程管理`错误的是:[单选题]
      • 14.Object C的`线程`下面描述不正确的是:[单选题]
      • 15.对`NSOperationQueue`理解不正确的是:[单选题]
      • 16.以下关于`iOS开发`中`多线程`概念,描述正确的是:[多选题]
      • 17.每个`线程`不仅仅在`创建`的过程中`需要耗费时间`,同时它也会`占用`一定`内核的内存空间`和`应用程序的内存空间`。:[判断题]
      • 18.在iOS中,`主线程`的`栈空间大小`为:[单选题]
      • 19.在iOS中,`主线程`的`栈空间大小`是可以`修改`的?:[判断题]
      • 20.在iOS中,应用程序`子线程`的`默认栈空间大小`为?:[单选题]
      • 21.iOS应用程序`子线程`的栈`空间大小`,会在`线程`的`使用过程` `逐渐增加`?:[判断题]
      • 22.iOS`子线程`运行`分配的最小栈空间`是?:[单选题]
      • 23.`子线程`运行`分配的栈空间大小`,必须为`4KB的整数倍`?:[判断题]
      • 24.`线程`的`优先级`属于`threadPriority`是一个`0.0~1.0`之间的浮点数,那么`1.0`表示 `最高`的优先级?:[判断题]
      • 25.线程的`默认的优先级`是`0.5`?:[判断题]
      • 26.`优先级较高`的线程,`一定`比`优先级较低`的线程`先执行`?:[判断题]
      • 27.在`线程` `自创`至`消亡的`整个生命周期中包含多个状态,`各状态的顺序`是?:[单选题]
      • 28.iOS应用程序的每条`线程`,都`有唯一的RunLoop对象与之对应`?:[判断题]
      • 29.`子线程`的`RunLoop`需要`手动创建`?:[判断题]
      • 30.`主线程`的`RunLoop`是`自动创建并启动的`?:[判断题]
      • 31.`子线程`的`RunLoop`,当需要`手动创建`,调用以下哪个方法来`启动`:[单选题]
      • 32.`currentRunLoop`是`延迟加载`的,只`创建一次`?:[判断题]
      • 33.使用`Thread`创建的`线程`,将`共享`同一应用程序的`部分内存空间`,它们`拥有对数据相同的访问权限`?:[判断题]
      • 34.为了协调`多个线`程对`同一数据的访问`,通常的做法是访问之前`加锁`.加锁会导致一定的`性能开销`吗?:[判断题]
      • 35.`Thread`的创建分为`显式`和`隐式`两种类型,其中`显式方式`有哪两种:[多选题]
      • 36.当一个`Lock对象`成功调用`lock`方法后,在其调用`unlock`方法之前,任何线程都`不能`对此Lock对象加锁:[判断题]
      • 37.iOS提供了`哪些类型`的`线程锁`:[多选题]
      • 38.`ConditionLock`是一种`带条件的锁`,可以`根据条件对多线程进行加锁`?:[判断题]
      • 39.也就是说一个线程可以对一个`Recursive对象`多次`调用lock`,只要`解锁`时调用`相同的unlock`方法便可。以上是`RecursiveLock的特征`吗?:[判断题]
      • 40.因为`线程`是`消耗系统资源`的,所以需要`控制线程的并发数`,以避免`系统变慢`?:[判断题]
      • 41.`Cocoa operation` 相关的类有哪些:[多选题]
      • 42.为了在`同一个时间点`内只`执行一个线程`,且当前一个`线程结束后`才执行`第二个`线程,需要将队列的`maxConcurrentOperationCount`设置为:[单选题]
      • 43.`Grand Central Dispatch(GCD)`是由Apple公司在`哪个iOS版本`时,推出的一个`多核编程的解决方案`:[单选题]
      • 44.`GCD`的`API`很大程度上是和以下`哪种技术配合使用`的:[单选题]
      • 45.由于`GCD`基于`工作单元`而非像`Thread`那样基于`运算`,所以`GCD`可以`控制` `注入等待任务结束`、`监视文件描述符`、`周期执行代码以工作挂起`等任务?:[判断题]
      • 46.`GCD`的`dispatch queue` `调度队列`可以是`并发`的,也可以是`串行`的?:[判断题]
      • 47.以下关于`并发`、`串行`、`同步`和`异步`描述正确的是:[多选题]
      • 48.`GCD`的`dispatch queue`调度队列有以下`哪三种类型`?:[多选题]
      • 49.`Global queues` `全局队列`是`并发队列`,它包含哪些`优先级`?:[多选题]
      • 50.`Thead` `多线程技术`是基于什么来`实现多线程`的?:[单选题]
      • 51.`Operation` `多线程技术`是基于什么来`实现多线程`的?:[单选题]
      • 52.`Grand Cental Dispatch` `多线程技术`是基于什么来`实现多线程`的?:[单选题]
      • 53.`Timer` `定时器`有哪两种功能?:[多选题]
      • 54.以下`保持线程同步`的方式有哪些?:[多选题]
      • 55.`dispatch_semaphore`是`GCD`用来`同步`一种方式吗?:[判断题]
      • 56.`NSRecursiveLock`是一个`递归锁`,这个锁可以被`同一个线程多次请求`,而`不会引起死锁`吗?:[判断题]
      • 57.`OSSpinLock`是一种`自旋锁`,它有哪`三种方法`?:[多选题]
      • 58.`OSSpinLock` `请求加锁失败`的话,`OSSpinLock`会一直轮询,等待时会`消耗大量CPU资源`,所以OSSpinLock`不适合较长时间的任务`?:[判断题]
      • 59.`NSLock` `请求加锁失败`的话,`会先轮询`,但`一秒`过后便会使`线程进入 waiting状态`。`等待唤醒`。以上说法正确吗?:[判断题]
      • 60.`pthread_mutex` 是基于`OC语言`的`多线程` `加互斥锁的方式`吗?:[判断题]

笔试题 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.GCDAPI很大程度上是和以下哪种技术配合使用的:[单选题]

  • A、delegate
  • B、block
  • C、kvo
  • D、kvc

45.由于GCD基于工作单元而非像Thread那样基于运算,所以GCD可以控制 注入等待任务结束监视文件描述符周期执行代码以工作挂起等任务?:[判断题]

  • A、正确
  • B、错误

46.GCDdispatch queue 调度队列可以是并发的,也可以是串行的?:[判断题]

  • A、正确
  • B、错误

47.以下关于并发串行同步异步描述正确的是:[多选题]

  • A、并发:多个任务同时执行
  • B、串行:一个任务执行完成后,再执行下一个任务
  • C、 同步:在当前线程中执行任务,不会开启新线程
  • D、 异步:在新的线程执行任务

48.GCDdispatch 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_semaphoreGCD用来同步一种方式吗?:[判断题]

  • 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、不是

你可能感兴趣的:(#,iOS笔试题&面试题,ios,面试,objective-c)