IOS面试题(多线程) --- 多线程基础

OC面试题目合集地址

问题1:ios系统多线程当中为我们提供了哪几种技术方案? / 接触过的多线程有哪些?

答案:

问题1

一般回答上来这三个即可, pthread选答即可

多线程技术方案


问题2: 线程与进程之间关系? / 你怎么了解线程与进程?

进程

  • 进程是指在系统中正在运行的一个应用程序
  • 每个进程之间都是独立的, 每个进程均运行在其受保护的内存空间中
  • 通过活动监控器可查看mac系统中所开启的线程

线程

  • 线程是进程的基本单元, 一个进程的所有任务都在线程中执行
  • 进程想要执行任务, 必须有线程, 进程至少要有一条线程
  • 程序启动会默认开启一条线程, 这条线程被称为主线程


问题3: 多线程优缺点

优点:
  1. 提高程序执行效率
  2. 提高资源利用率
  3. 线程执行完任务后会自动销毁
缺点:
  1. 开启线程需要占用额外内存空间。大量线程的开启, 降低程序性能
  2. 线程越多CPU开销越大
  3. 线程越多, 设计越复杂, 线程间通信越复杂


问题4: NSThread / NSOperation / GCD 优缺点

NSThread:

优点:
  • 轻量级低, 使用简单
  • 面向对象, 可直接操作线程对象
缺点
  • 需要自己管理线程生命周期, 线程同步


GCD

GCD底层C语言实现

优点:
  • 自动管理线程线程的生命周期(线程创建、线程调度、线程销毁)
  • 充分使用设备多核CPU并行运算
缺点
  • 无法取消加入队列中的任务
  • 队列任务执行顺序先进先出, 随意调配比较繁琐
  • 不支持KVO监听
  • 不能设置最大并发数


NSOperation

NSOperration基于cocoa框架实现, 相当于基于GCD上面封装的, NSOperationQueue是高级的dispatch_queue_t

优点:
  • 实现多线程更加面向对象, 代码简洁
  • NSOperration可以通过KVO监控操作进行的状态 (准备、执行中、完成、被取消)
  • NSOperationQueue可以设置最大并发数量 (setMaxConcurrentOperationCount:)
  • NSOperration可以很容易管理各个操作之间的依赖关系
  • NSOperration可以取消未运行任务
缺点
  • 多核CPU上线程切换的时间比较长 效率较GCD偏低一些,

你可能感兴趣的:(IOS面试题(多线程) --- 多线程基础)