alibaba——研发/算法笔试题2

3、进程阻塞的原因不包括(A)

A、时间片切换

B、等待I/O

C、进程sleep

D、等待解锁

答:linux基础知识。

解析:只要理解进程的概念就OK。A

知识补充

进程是一个可并发执行的程序,在一个数据集合上的一次运行过程。它是系统进行资源分配和调度的一个独立单位。

进程的特征:动态性、并发性、独立性、异步性,系统为每一个进程设立一个进程控制块——PCB。

进程与程序的区别:1)、程序是进程的静态文本,进程是执行程序的动态过程;2)、一个进程可以执行一个或多个程序,几个进程可以同时执行一个程序;3)、程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的;4)、进程是系统分配调度的独立单位,能与其他进程并发执行。

进程状态及其演变:进程执行的间断性,决定了进程可能具有多种状态。事实上,运行的进程可能具有就绪状态、执行状态、阻塞状态三种基本状态。

进程的三种基本状态演变图如下图所示:


当进程已分配到除CPU以外的所有必要资源时,它便处于就绪状态,一旦获得CPU,便立即执行。已获得CPU的进程进入执行状态。正在执行的进程,由于发生某个事件而暂时无法执行时,便放弃处理机而进入阻塞状态。由于执行的进程变为阻塞状态后,调度程序立即把处理机分配给另一个就绪进程;因此,阻塞进程的事件消失后,进程不会立即恢复到执行状态,而转变为就绪状态,重新等待处理机。

在实际系统中,进程还有其它几个状态。有的系统有时希望能人为地把进程挂起,使之处于静止状态,以便研究其执行情况或对它进行修改。下图示出了具有挂起状态的进程状态演变图。


进程控制块PCB:(Process Control Block)这是为使多个程序能并发执行而为每个程序所配置的一个数据结构,其中存放了用于描述该进程情况和控制进程运行所需的全部信息。


4、设只含根结点的二叉树高度为1,现有一颗高度为h(h>1)的二叉树上只有出度为0和出度为2的结点,则此二叉树中所包含的结点数至少为(B)个。

A、2^h-1

B、2h-1

C、2h

D、2h+1

答:数据结构基础知识。

解析:如果每个节点出度要么为0要么为2,那么也就是要么自己为叶子,要么自己拥有左右儿子。那么什么情况下节点最少呢?直接沿着一条路下去保持出度为2,直到高度达到h,那么此时节点总数:2h-1。故选B。

知识补充

二叉树是每个节点最多有两个子树的有序树。深度是对于二叉树整体来说的,二叉树的深度就是距离根节点最大的层数。结点指二叉树中一个个的点。

指父结点下面有几个孩子结点。度分为入度出度,一般都是对于单个结点来说的;入度 (in-degree) :以某顶点为弧头,终止于该顶点的弧的数目称为该顶点的入度。出度 (out-degree) :以某顶点为弧尾,起始于该顶点的弧的数目称为该顶点的出度。

前序:根结点第一个访问,然后访问左、右孩子;后序:根结点最后访问,开始先访问左、右孩子;中序:根结点第二个访问,最先访问左孩子,最后访问右孩子。

举例说明:如下图所示


图中的0、1、2、3、4、5、6就是结点;针对结点1,他下面有两个孩子3、4,所以说结点1的度为2;针对结点4,他下面一个孩子都没有,所以说结点4的度为0;前序序列:0134256,后序序列:3415620,中序序列:3140526。

下面给出数据结构中的入度和出度算法(C语言)

Status Get_Degree(ALGraph &G)//计算入度和出度
{ 
	int i;
	ArcNode *t;
	for(i=0; i<G.vexnum;i++)
	{
  		G.vertices[i].InDegree=0;
  		_______(G.vertices[i].OutDegree=0)_______;
 	}
 	for(i=0; _______(i<G.vexnum)_______;i++)
	{
  		t=G.vertices[i].firstarc;
  		if (t!=NULL)
		{
   			G.vertices[i].OutDegree++;
   			G.vertices[t->adjvex].InDegree++;
   			while (t->nextarc!= _______(NULL)_______) 
			{
    				t= t->nextarc;
    				G.vertices[i].OutDegree++;
    				G.vertices[t->adjvex].InDegree++;
   			}
  		}
 	}
 	return OK;
}//Get_Degree





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值