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