ios多线程面试题有哪些?ios多线程常见面试题

阳光 2022-08-22 16:07:03 java常见问答 9295

Java是薪资待遇比较好的一个行业,因此很多人都会去学习java,可是真正要想进入到java行业,不仅要有过硬的技术,还需要通过面试官的考核,那ios多线程面试题有哪些?下面来我们就来给大家讲解一下。

ios多线程面试题.jpg

1、ios当中都有哪些锁?

基本的锁:自旋锁、互斥锁、读写锁,其他的比如条件锁、递归锁、信号量都是上层的封装和实现。

2、iOS中实现多线程的几种方案,各自有什么特点?

NSThread 面向对象的,需要程序员手动创建线程,但不需要手动销毁。子线程间通信很难。

GCD c语言,充分利用了设备的多核,自动管理线程生命周期。比NSOperation效率更高。

NSOperation 基于gcd封装,更加面向对象,比gcd多了一些功能。

3、多线程的 并行 和 并发 有什么区别?

并行:充分利用计算机的多核,在多个线程上同步进行;

并发:在一条线程上通过快速切换,让人感觉在同步进行;

4、GCD的任务能取消吗?

(1)iOS8以后,使用dispatch_block_create创建的block任务,可以通过dispatch_block_cancel来取消。

(2)一般我们会直接使用dispatch_async这种函数直接添加任务,面对这种没有使用dispatch_block_create创建block任务的场景,则可以自定义一个全局的BOOL值变量,然后在block中通过该值来判断是否要继续执行当前任务。

5、线程间怎么通信?

线程间的通信体现: 一个线程传递数据给另一个线程,

在一个线程中执行完特定的任务后,转到另一个线程继续执行任务。

6、GCD 的队列类型?

GCD的队列可以分为2大类型:

(1)并发队列(Concurrent Dispatch Queue)

可以让多个任务并发(同时)执行(自动开启多个线程同时执行任务)

并发功能只有在异步(dispatch_async)函数下才有效

(2)串行队列(Serial Dispatch Queue)

让任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务),按照FIFO顺序执行。

Java面试中肯定需要考核java很多知识点,因此建议大家在面试之前,可以多刷一些面试题,提高知识点的印象!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

java非运行时异常会自动抛出吗?Java常见的异常有哪些?

json格式可以读取图片吗?json格式打不开怎么办?

java浪漫的程序代码怎么写?java浪漫程序代码实例