公共部分(50分) 1:作业调度程序从处于(B)状态的队列中选择适当的作业的作业投入运行。(3分) A 运行 B 提交 C 完成 D后备 2:SQL语言中,删除一个表的命令是(B)(3分) A CLEAR TABLE B DROP TABLE C DELETE TABLE D REMOVE TABLE 3:ATM采用的线路复用方式为(C)(3分) A 频分多路复用 B 同步时分多路复用 C 异步时分多路复用 D 独占信道 4:数据库中只存放视图的(C)(3分) A操作 B 对应的数据 C 定义 D 限制 5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10分) SPOOLing是Simultaneous Peripheral Operation On-Line (即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。 6:TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16分) 三次握手是为了防止已失效的连接请求再次传送到服务器端。 二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。 7:什么是分布式数据库?(12分) 分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据独立性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。 (1)数据独立性。数据独立性是数据库方法追求的主要目标之一。在集中式数据库中,数据独立性包括两方面:数据的逻辑独立性和物理独立性。其意义在于程序和数据的逻辑结构和数据的存储结构无关。在分布式系统中,数据库独立性除了上面所说之外,还有数据分布独立性亦称分布透明性,即用户不必关心数据的逻辑分片,不必关心数据的物理位置分布的细节,也不必关心重复副本(冗余数据)的一致性问题。有了分布透明性,用户的应用程序书写起来就如同数据没有分布一样。在集中式数据库中,数据的独立性是通过系统的三级模式和它们之间的二级映象得到的。分布式数据库,分布透明性是由于引入新的模式和模式之间的映象得到的。 (2)集中与自治相结合的控制结构。数据库是供用户共享的,在集中式数据库中,为保证数据的安全性和完整性,对数据库的控制是集中的。由数据库管理员(DBA)负责监督和维护系统的正常运行。 在分布式数据库中,数据的共享有两个层次:一是局部共享,即在局部场地上存储局部用户的共享数据。二是全局共享,即在分布式数据库的各个场地也存储可供网络中其他场地的用户共享的数据,支持全局引用。因此,相应的控制结构也具有两个层次:集中和自治。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。 (3)适当增加数据冗余度。在集中式数据库中,尽量减少冗余度是系统目标之一。其原因是,冗余数据浪费存储空间,而且容易造成个副本之间的不一致性。减少冗余度的目标是用数据共享来达到的。而在分布式系统中却希望增加冗余数据,在不同的场地存储同一数据的多个副本。其原因是提高系统的可靠性和性能,当某一场地出现故障,系统可以对另一场地上的相同副本进行操作,不会造成系统的瘫痪。系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价。但是增加冗余会碰到集中式数据库同样的问题,即不利于更新,增加了系统维护代价,需要在这些方面作出权衡。 (4)全局的一致性、可串行性和可恢复性。分布式数据库中各局部数据库应满足集中式数据库的一致性、可串行性和可恢复性。除此以外,还要保证数据库的全局一致性、可串行性和可恢复性。例如,在前面提到的银行转帐事务中,包括两个节点上的更新操作,当其中一个节点出现故障,应使全局事务回滚,在一个节点撤销已经执行的操作等。 C++部分(50分) 1:设有“int w[3][4];”,pw是与数组名w等价的数组指针,则pw的初始化语句为int (*pw)[4] = w;(3分) 2:要使引用pr代表变量“char *p”,则pr的初始化语句为char * &pr = p;(3分) 3:“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”比较的if语句为:if(n==0),则BOOL flag与“零值”比较的if语句为 if(!a) ;float x与“零值”比较的if语句为:const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x int data; struct listtype * next; }; typedef struct listtype * list; /* Check that whether there is loop in the singly linked list sll or not. */ int find_circle(list sll) { list fast = sll; list slow = sll; if (NULL == fast) { return -1; } while (fast && fast->next) { fast = fast->next->next; slow = slow->next; if (fast == slow) { return 1; } } return 0; } JAVA部分(50分) 1:判断下列对的是哪个(B)(3分) A short s1=1;s1=s1+1 B short s1=1;s1+=1 C short s1=1;s1=s1-1 D short s1=1;s1=s1*1 2:main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的(C)(3分) A public static void main () B public static void main (String args) C public static int main (String []arg) D public void main (String args) 3:设float x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)(3分) A 3.5 B 3 C 4 D 5 4:Math.round(11.5)=12 Math.round(-11.5)=-11(4分) 5:假设x=10,y=20,z=30;计算下列表达式的值(6分) A x10_________false B !(x return y; } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } } 数据结构和算法 1. 假设执行语句S的时间为O(1),则执行下列程序短的时间为(B) for(i=1;i char *str = NULL; str = RetMemory(); printf(str); } 7. 引用与指针有什么区别? 8. 描述实时系统的基本特性 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 10. 什么是平衡二叉树? 11. 堆栈溢出一般是由什么原因导致的? 递归调用深度过深(栈) 12. 什么函数不能声明为虚函数? 一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。 设置虚函数须注意: 1:只有类的成员函数才能说明为虚函数; 2:静态成员函数不能是虚函数; 3:内联函数不能为虚函数; 4:构造函数不能是虚函数; 5:析构函数可以是虚函数,而且通常声明为虚函数。 13. 冒泡排序算法的时间复杂度是什么? n*n 14. #include 和 #include “filename.h” 有什么区别? 用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。 用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。 15. 写出float x 与“零值”比较的if语句。 const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x |