前言
大白话讲面试题,每天更新三题,提倡每日积累而不是临阵磨枪,我的目的不是为了背题,而是通过这种方式来更好的巩固自身所掌握的知识。
题目的星星代表难度等级,五星为满,并且我会列出需要掌握的前置知识。
大家一起,冲鸭!
什么是进程,什么是线程?⭐
目的:多线程与并发编程基础考察
前置知识:无
按照概念来说:
- 进程:是系统分配资源的最小单位,一个程序运行起来,就是一个进程。
- 线程:是CPU调度的最小单位,一个进程可以包含多个线程,但自始至终都有一个主线程。
举个例子:
当我们打开微信,便是启动了一个进程,操作系统会分配各种资源给进程。
我们点开产品经理的头像,分享了一个我们刚保存的视频《产品可能不懂产品》,此时,微信会在后台创建一个线程,由这个线程负责去做视频的压缩、发送工作,这个发送并不会影响我们使用微信的其他逻辑。
进程和线程之间的区别都有什么?⭐
目的:多线程与并发编程基础考察
前置知识:进程和线程的概念
总的来说:
- 线程是进程划分出来更小的运行单位,并且一个进程可以包含多个线程。
- 线程执行开销小,但不利于资源的管理和保护。
- 进程之间相互独立,而线程则不一定,比如在 JVM 中,堆空间和方法区是线程共享的区域。
什么是并行,什么是并发?⭐
目的:多线程与并发编程基础考察
前置知识:无
并发指的是,你有处理多个任务的能力,不一定要同时。
并行指的是,你有同时处理多个任务的能力。
引用
在这里我会放上所有我参考的资料链接