开头

被面试人是我的一位粉丝近期刚刚结束了蚂蚁金服的三轮技术面试,面完之后他跟我说很累,直言不想再体验了。

他的面试经历我仔细看了看,一面重点在基础知识的考查,二面重点在项目以及对框架的使用与理解上,三面压力面,是很熟悉的套路,考察的知识点也是经常问到的,具有一定的参考价值,接下来我们就来看看他的这几轮面试经历吧。

1 进程

进程与程序

操作系统之中最为通用的概念就是「进程」。与此相关的面试题以及各种技术优化策略也层出不穷,足以够证明它对于理解操作系统中举足轻重的地位。事实上,通过「进程」,程序员可以更为直观的理解自己所开发的软件,并且能够从中深刻的认识到操作系统在软件运行做了些什么。

简单来讲,进程就是正在执行的程序。每个进程都包含有属于自己的一段地址空间,可以看作是一部分内存空间。在这样的地址空间中,进程能够根据需要进行内存的读写。

地址空间里面一般包含可执行程序,以及对应程序的数据及其堆栈。与每个进程相关的还有一组资源,通常包括寄存器(包括程序计数器和堆栈指针)以及运行程序所需的所有其他信息。从这可以看出,程序本身只是指令、数据以及其组织形式的一种描述方式,而程序的实际的运行实例就是一个进程。

不过进程与程序也并不完全等同,他们不是简单的一一对应的关系,而是在不同层面的表现形式。他们的主要区别在于:

  • 程序是进程的静态文本,而进程是执行程序的动态过程;
  • 进程与程序不是一一对应,同一程序可在不同进程中运行,一个进程也可以执行多个程序;
  • 程序是一种长期可保存的文本,进程是暂时的一次执行过程;
  • 进程是操作系统分配调度的独立单位,而程序是操作系统层级之上的应用程序。

进程状态

从上面我们知道,进程可看作是程序运行的动态过程。那么为了更好的对进程进行描述,我们给运行中的进程定义了三种基本状态,包括就绪、执行和阻塞。

这就是所谓的三态模型,描述了进程在整个运行周期中状态变化。每个状态的转移过程可以通过下图来表示。

就绪状态 是指进程已经被分配到了所有必需的资源,除了CPU。在这个状态下,进程处于箭在弦上随时待发的状态,只要一获得CPU的执行权限,进程便会立刻执行,从而进入执行状态。

当有多个处于就绪状态的进程时,不同的进程会根据优先级被划分入不同的队列。一个因为时间片用完而进入就绪状态的进程会被划分入低优先级队列,而因为I/O操作完成而进入就绪状态的进程,则会被划分入高优先级队列。

执行状态 是指进程正常运行的状态。而当处于执行状态的进程由于需要等待某个事件发送(通常为等待I/O)时,就会放弃CPU,从而进入暂时的阻塞状态。CPU这时一旦空出,通过不同的调度算法,CPU又会被分配给另一个就绪进程。

阻塞状态 相当于就绪状态和执行状态的一个缓冲状态。当处于执行状态的进程无法正常执行时,会先进入阻塞状态,等待需要的请求执行完成,再回到就绪状态,等待下一次的CPU分配和执行。

三态模式是用来描述进程状态转移最为精简的模型,实际上光这三种状态是无法处理复杂的进程运行过程的。所以为了对进程进行更好的管理和调度,在三态模型的基础上引入了两种进程状态,即创建状态终止状态,这就有了五态模型。

java工厂模式类图,文末领取面试资料相关推荐

  1. 手机app安卓开发!字节跳动Android岗经典面试真题,文末领取面试资料

    阿里面试 自我介绍 首先要介绍自己的项目经验和个人的擅长点,因为面试官主要考察你的表达能力和语言精简能力. 简历的编写其实这里可能需要注意几点: 1.标题的直接按照姓名-几年工作经验-应聘岗位格式来填 ...

  2. HTML如何添加锚点,文末领取面试资料

    开始 我大学读的是大专,在学校学的是机电一体化.临近毕业的时候选择了学习web前端技术,因为做机电实在又累工资又低,而我更喜欢坐办公室的工作,有空调吹,我很现实,就是想多赚一点钱.到现在做了两年前端的 ...

  3. 还有人不知道什么是AndroidX的吗?文末领取面试资料

    谈起Android框架体系架构,我先提个问:什么是Android框架体系架构 ? Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从 ...

  4. Redis有几种数据类型?文末领取面试资料

    前言 其实前几篇文章已经写了好多有关于Spring源码的文章,事实上,很多同学虽然一直在跟着阅读.学习这些Spring的源码教程,但是一直都很迷茫,这些Spring的源码学习,似乎只是为了面试吹逼用, ...

  5. MySQL基础知识测试,文末领取面试资料

    6 . 通过SQL,您如何从 "Persons"表中选取 "FirstName" 列? SELECT Persons.FirstName SELECT Firs ...

  6. Android面试:Glide的缓存机制,文末领取面试资料

    程序员与别的专业有所不同,其他专业都是越老越香,而程序员却是一个例外,因为计算机技术更新太快,而且工作强度很大,因此大部分程序员只会写 3 年代码.3 年后要不晋升做项目经理,要么转行,个别研究所除外 ...

  7. java 外观模式类图_Java 设计模式——外观模式

    概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...

  8. java备忘录模式 类图,【java设计模式】备忘录模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式. 备忘录 ...

  9. java备忘录模式 类图,折腾Java设计模式之备忘录模式

    备忘录模式 Without violating encapsulation, capture and externalize an object's internal state allowing t ...

最新文章

  1. 关于生成漏洞信息属性代码备份
  2. hive practice 1
  3. CSS样式----文字样式
  4. Python:lambda表达式的两种应用场景
  5. nginx https配置
  6. Python 环境搭建,开发工具,基本语法
  7. 【VS开发】CString 转为 char *方法大全
  8. 矩阵加法(信息学奥赛一本通-T1124)
  9. html设计有项目的页面,HTML+CSS项目开发经验总结(推荐)
  10. 解二元一次方程组的c语言编程,如何利用C语言求二元一次方程的解
  11. 支持html签名的邮箱app,在iPhone和iPad上创建使用丰富的HTML电子邮件签名 | MOS86
  12. torch.manual_seed(args.seed) torch.cuda.manul_seed_all(args.seed)和numpy.random.seed()
  13. 日本企业给我们的启示
  14. 基于用户的协同过滤推荐算法的实现--以电影推荐为例
  15. Windows Workflow Foundation中实现人工活动的demo,按照XPDL规范的实现
  16. 微信推广二维码接口使用总结
  17. 解决鼠标滚轮每次滑动行数过多的办法
  18. 如何查看计算机tcp ip协议,如何测试TCP/IP协议是否正常?
  19. android三星定位闪退,三星手机闪退问题7种修复方法
  20. 记录一次Golang逃逸分析

热门文章

  1. 教授专栏59 | 刘佳:备受瞩目的瞬间营销,如何触发效用最大化?
  2. 记录PHP实现第三方支付接口实现方法(发起支付、支付结果回调)
  3. Apollo课程学习3——定位
  4. mac M1芯片安装vmware虚拟机及centos8详细教程
  5. 虚拟机上虚拟磁盘扩容
  6. 4月21日王者服务器为什么会维护中,王者荣耀:4.15-4.21王者新鲜事
  7. IMX头部详细解析之一 头部组成
  8. 微程序控制器和硬布线控制器的比较:
  9. ACS Catal:导向基和配体协同促进的炔烃高选择性反式氢化乙酰氧基化反应
  10. Ubuntu 无法运行 eclipse,提示 没有为可执行文件 文件类型安装应用程序。