概述
1.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有多少条有向边?
前面队列的开头是表头结点,后面跟着的都是表节点。
所以是m条
2.把对关系SPJ的属性QTY的修改权授予用户李勇的T-SQL语句是( )
①GRANT QTY ON SPJ TO ‘李勇’
②GRANT UPDATE(QTY) ON SPJ TO ‘李勇’
③GRANT UPDATE (QTY) ON SPJ TO 李勇
④GRANT UPDATE ON SPJ (QTY) TO 李勇
答: 选③,因为李勇是一个用户而不是一个字符串
Grant的语法为:grant 权限 on 数据库对象 to 用户
grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’
所以①的错误不仅是引号,还有权限update没有加
3.数据库管理系统的工作不包括?
①定义数据库
②对已定义的数据库进行管理
③为定义的数据库提供操作系统
④数据通信
答:这一题选③
数据库管理系统所提供的功能有以下几项:
(1)数据定义功能。
(2)数据存取功能
(3)数据库运行管理功能。
(4)数据库的建立和维护功能。
(5)数据库的传输。提供数据间的通信。
4.冒泡排序的算法
冒泡排序算法的运作如下:(从后往前)
①比较相邻的元素。如果第一个比第二个大,就交换他们两个。
②对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
③针对所有的元素重复以上的步骤,除了最后一个。
④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
5.将树转变为二叉树如何转换?得到的二叉树是唯一的吗?
①树中所有相同双亲结点的兄弟节点之间加一条连线
②对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线
③整理所有保留和添加的的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置:
例子如图:
所以树转变为二叉树是唯一的
6.设有两个事务 T1、T2,其并发操作如图所示,下面评价正确的是
①该操作不存在问题
②该操作丢失修改
③该操作不能重复读
④该操作读‚脏‛数据
答:选④
A不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:
①事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到 与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。
②事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。
③事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)
B幻读:事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。
C读”脏”数据
读”脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为”脏”数据,即不正确的数据。
产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性
7.若一棵二叉树的前序遍历序列为a, e, b, d, c,后序遍历序列为 b, c, d, e, a,则根结点的孩子结点为?
答: 前序遍历是遍历树,先根序列是遍历二叉树
孩子节点为e,因为先序是先根再孩子,后序是先孩子再根,又俩孩子都是e,所以是只有一个孩子。
8.在int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) =
答: 首先是 一个 4 行的数组,又由于 b[][3],故是 3 列,又由于每个 int 占 4 个字节内存,故为4*3*4 = 48
9.c++不能重载的运算符有?
答: .(点号),::(域解析符),?:(条件语句运算符),sizeof(求字节运算符),typeid,static_cast,dynamic_cast,interpret_cast(三类类型转换符)
10.请问下面的程序最后会产生多少个进程:
int main( ){
int i;
for(i = 0; i<5;i++){
int pid = fork();
if(pid == 0){
//do something
} else {
//do something
}
}
// do somthing,sleep
return 0;
}
答:
i=0时,共有两个进程: 主进程和主进程创建的第一个进程
i=1时,以上两个进程分别创建新的进程,此时共有四个进程
i=2时,以上四个进程分别创建新的进程,此时共有8个进程
….
依次类推, 当i=n时,共创建2^(n+1)个进程
共32个
11.下列关于银行家算法的叙述中,正确的是
答: ①银行家算法可以预防死锁
②当系统处于安全状态时, 系统中一定无死锁进程
③当系统处于不安全状态时, 系统中一定会出现死锁进程
④银行家算法破坏了死锁必要条件中的“ 请求和保持” 条件
选②,银行家算法是著名的死锁避免算法,避免死锁并不是事先采取某种限制措施破坏死锁的必要条件,而是再资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁
12.能同时执行多个程序的OS是?
①多道批处理
②单道批处理
③分时系统
④实时系统
答: 选①③④
分时操作系统特点:
多路性 交互性 独立性 及时性
实时操作系统特点:
多路性 交互性 独立性 及时性 可靠性
13.内存管理中的 LRU 方法是用来管理什么的?
①虚拟内存的分配
②虚拟内存的释放
③物理内存的分配
④物理内存的释放
答:选①④,题目中物理内存是指实际的内存,而虚拟内存是指磁盘交换区,并不是真正的虚拟内存的意思。
所以对于页面置换算法来讲,当发生缺页中断时,都是要从内存中找到一个不需要的块换出去(对应物理内存的释放),然后将需要页面从磁盘的交换区中换进来(虚拟内存的分配)。
最后
以上就是谨慎草莓为你收集整理的自练题20170719的全部内容,希望文章能够帮你解决自练题20170719所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复