前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试独门技巧,手刃"面试官"

面试独门技巧,手刃"面试官"

作者头像
CC老师
发布2019-01-23 14:59:33
3720
发布2019-01-23 14:59:33
举报

秋招在即,开发者可以开始着手准备利用碎片的时间累积更多的面试题.厚积薄发!

第一个面试题:线程和进程的关系和区别

1:线程定义

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

2:进程定义

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

3:进程与线程的区别

  • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
  • 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
  • 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
  • 进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程
  • 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  • 线程是处理器调度的基本单位,但是进程不是。

第二个面试题:多线程的意义

这个代码主要放在主线程,就会严重影响程序的性能,造成堵塞,影响用户体验.这个时候我们的多线程就发挥它的作用了

把我们的耗时操作放到我们的子线程,这样主线程继续执行他们的任务(尤其UI)

第三个面试题:多线程的原理

  • 3.1 单核: CPU(Central Processing Unit)中央处理器 主频越高越好
  • 3.2 多线程:同一时刻,一个CPU只能处理一条线程,但CPU可以在多条线程之间快速的切换,只要切换的足够快,就造成了多线程并发执行的现象。多线程是通过提高资源使用率来提高系统总体的效率。我们运用多线程,是为了将耗时操作放在后台执行。 (这里有一个误区:多线程就是同一时间多个任务同时进行)
  • 3.3 时间片的概念:CPU在多个任务直接进行快速的切换,这个时间间隔就是时间片
    • 每个线程被调度的次数会降低,线程的执行效率降低
    • CPU 调度线程的时间足够快,就造成了多线程的“同时”执行的效果
    • 单核CPU)同一时间,CPU 只能处理 1 个线程 ( 换言之,同一时间只有 1 个线程在执行)
    • 多线程同时执行:
    • 是 CPU 快速的在多个线程之间的切换
    • 如果线程数非常多 CPU 会在 N 个线程之间切换,消耗大量的 CPU 资源

6.多线程优/缺点

  • 优点
    • 能适当提高程序的执行效率
    • 能适当提高资源的利用率(CPU,内存)
    • 线程上的任务执行完成后,线程会自动销毁
  • 缺点
    • 开启线程需要占用一定的内存空间(默认情况下,每一个线程都占 512 KB)
    • 如果开启大量的线程,会占用大量的内存空间,降低程序的性能
    • 线程越多,CPU 在调用线程上的开销就越大
    • 程序设计更加复杂,比如线程间的通信、多线程的数据共享
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloCode开发者学习平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档