自练题20170726

1.一范式二范式三范式BC范式四范式五范式的定义

答:
第一范式:指表中的属性都是原子属性,不能再拆分了
第二范式:在第一范式的基础上,要求非主属性都完全函数依赖于主键
第三范式:在第二范式的基础上,要求要求没有非主属性传递依赖于主键
BC范式:在第三范式基础上,要求所有非主键属性都必须依赖于主键
第四范式:在BC范式基础上,要求表中存在的多值依赖都必须是对主键函数依赖
第五范式:在第四范式的基础上,继续拆分表格,消除多值依赖

2.关系模式R中的属性全部是主属性,则R的最高范式必定是

答案是BCNF
因为我觉得都没有非主属性了,所以就满足各种条件,然后别人的解释是这样的:对3NF关系进行投影,将消除原关系中主属性对键的部分与传递依赖,得到一组BCNF关系

3.分配内存、进程调度以及将高级语言程序翻译成机器语言这些工作都是由 操作系统完成的,这样的说法正确吗?

答案是错误的
解答:高级语言程序翻译成机器语言?编译器?

4.哈希函数越复杂越好,因为这样随机性好,冲突概率小正确吗

答:错误
哈希函数越复杂,则时间就会越多,因此不是哈希函数越复杂越好,还需要考虑下时间方面

5.深度优先遍历和广度优先遍历如何找点

    答:深度优先遍历:
  (1)访问顶点v;

(2)从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历;
(3)重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。
其中第三步的点是找还没有遍历过的点,作为新的源点
广度优先遍历:
(1)顶点v入队列。
(2)当队列非空时则继续执行,否则算法结束。
(3)出队列取得队头顶点v;访问顶点v并标记顶点v已被访问。
(4)查找顶点v的第一个邻接顶点col。
(5)若v的邻接顶点col未被访问过的,则col入队列。
(6)继续查找顶点v的另一个新的邻接顶点col,转到步骤(5)。
直到顶点v的所有未被访问过的邻接点处理完。转到步骤(2)。
广度优先遍历图是以顶点v为起始点,由近至远,依次访问和v有路径相通而且路径长度为1,2,……的顶点。为了使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问,需设置队列存储访问的顶点。

6.无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是
a,b,e,c,d,f
a,c,f,e,b,d
a,e,b,c,f,d
a,e,d,f,c,b

答:选最后一个

7.两段锁协议的含义

答:
两段锁协议:
a. 对任何数据读取、修改之前,事务先获得锁
b. 释放一个封锁,事务不再获得其他锁。
简而言之,所以事件的锁都要一次性锁好了,不能在释放某个事件后再次加锁

8.虚拟机需要硬件支持吗?

答:不支持,需要硬件支持的,虚拟机需要从原主机上分配一些资源,作为自己独立资源。

9.二分查找法事先要记得什么

答:
将原序列从小到大排序

10.稀疏矩阵一般是用来做什么的

答:
存储图

11.设内存的分配情况如表所示。若要申请一块40KB字节的内存空间,采用最佳适应算法,则所得到的分区首址为( )。
分区表
分区首址/KB 状态
000K 占用
100K
180K 占用
190K
280K 占用
330k
390k 占用
410K

选项:
100KB
190KB
330KB
410KB

答案:选330kb,
最佳适应算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区。
所以 空闲容量 首地址
60KB 330KB
80KB 100KB
90KB 190KB
而容量需要是40KB, 因此选择首地址是330

12.操作系统对进程的管理和控制主要是通过控制原语言实现的,正确吗

答案:正确,进程控制原语包括:进程创建,进程阻塞,唤醒进程和进程终止四个原语。

13.定义学生、教师和课程的关系模式: S (S#,Sn,Sd, SA )(属性分别为学号、姓名、所在系、年龄); C ( C#,Cn,P# )(属性分别为课程号、课程名、先修课); SC ( S#,C#,G) (属性分别为学号、课程号和成绩)。则该关系为( )

     答案:3nf
     因为p#对这个表 C   (   C#,Cn,P#   ) 三个属性中,Cn是主属性,而第二范式是一个表必须有一个主键,非主属性必须完全依赖于主码。所以符合第二范式。

而存在主属性 P#对 候选码(C#,P#)的部分函数依赖,所以不符合BCNF。

14.关于 int a[10]; 问下面哪些不可以表示 a[1] 的地址?
a+sizeof(int)
&a[0]+1
(int*)&a+1
(int*)((char*)&a+sizeof(int))

答:
选1,因为相当于a+4
A. a+sizeof(int)
// 不正确, 在32位机器上相当于指针运算 a + 4
B. &a[0]+1
// 正确,数组首元素地址加1,根据指针运算就是a[1]的地址
C. (int*)&a+1
// 正确,数组地址被强制类型转换为int*,然后加1,这样和B表示的一个意思
D. (int*)((char*)&a+sizeof(int))
// 正确,数据地址先被转换为char*,然后加4,根据指针运算公式,向前移动4 * sizeof(char),之后被转换为int*,显然是a[1]的地址

15.在下面的I/O控制方式中,需要CPU干预最少的方式是()。
程序I/O方式
中断驱动I/O控制方式
直接存储器访问DMA控制方式
I/O通道控制方式

答案:
选最后一个,
程序IO方式,是采用busy-waiting的方式,即CPU会采用轮询的方式来询问数据 ——-效果最差
中断IO方式,是设备控制器当取出一个数据之后向CPU发送一个中断,然后CPU将 数据从控制器中取到CPU寄存器,再然后转移到内存中。这种方式,CPU是以字节的 方式来响应数据的。
DMA方式,是CPU通过向DMA控制器设定若干参数,然后DMA打开了一条内存到设备 的通道,这样,设备(内存)中的数据可以不通过CPUl来进行数据交互。缺点是, DMA是多少设备就需要多少DMA,而且,DMA方式下,CPU的访问设备是以数据块为 周期的。
到了IO通道方式,IO通道相当于一个简单的处理机,有自己的指令,也可以执行指 令。指令存储在内存。
IO通道相当于一条PCI总线,一条IO通道可以连接所有的设备控制器。然后CPU向 IO通道发出指令,IO通道将会自动进行获取数据。
另外,IO通道是以一组块为单位进行获取的。

所以,IO通道方式需要最少的CPU干预

16.一棵左子树为空的二叉树在前序线索化后,其中空的链域的个数是

 答案:两个
     一棵左子树为空的二叉树,形态为右单支树,这样前序序列为根、右根... 

因为根结点在前序序列第一个,没有前序的前驱,这样根结点的左指针链域就是空的
最下边的叶子(也就是最右边结点)是前序序列最后一个,没有前序的后继,因此该结点的右指针链域也是空的
因此,空的链域合计2个
线索化后,空域的就是没有前驱和没有后继的这两个。不仅是左子树为空的二叉树,其他二叉树也是如此

17.C++将父类的析构函数定义为虚函数,下列正确的是哪个?
释放父类指针时能正确释放子类对象
释放子类指针时能正确释放父类对象
这样做是错误的
以上全错

答案:选第一个,C++的多态肯定是使用父类的指针指向子类的对象,所以肯定是释放子类的对象,如果不使用虚函数的话, 父类的指针就只能够释放父类的对象

18.下列叙述中正确的是( )。
循环队列是队列的一种链式存储结构
循环队列是队列的一种顺序存储结构
循环队列是非线性结构
循环队列是一种逻辑结构

答案:选最后一个,循环队列是一种逻辑结构,除了顺序存储,完全可以用链表来实现

19.在C++中,为了让某个类只能通过new来创建(即如果直接创建对象,编译器将报错),应该()
将构造函数设为私有
将析构函数设为私有
将构造函数和析构函数均设为私有
没有办法能做到

答案:选B。[ 编 译器在为类对象分配栈空间时,会先检查类的析构函数的访问性,其实不光是析构函数,只要是非静态的函数,编译器都会进行检查。如果类的析构函数是私有的,则编译器不会在栈空间上为类对象分配内存。 因此, 将析构函数设为私有,类对象就无法建立在栈(静态)上了,只能在堆上(动态new)分配类对象 。]

20.下列哪些命令可以看到文件的大小?
ls
df
du
find

答案:选ABC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值