本试卷分三部分,公共部分、C++部分和JAVA部分,其中公共部分为必考部分,C++与JAV
部分,两者选一完成。试卷满分100分。
公共部分(50分)
1:从资源管理(分配)的角度出发,I/O设备可分为______ _、 _______和_ _ _____三种类型。(6分)
独享,共享,虚拟 (顺序可交换)
2:文件的物理组织有顺序、 _______和索引。(2分)
链接
3:影响局域网络的三种主要技术是____ 、 和 。(6分)
传输介质、拓扑结构,访问控制方式 (顺序可交换)
4:在TCP/IP层次模型中与OSI参考模型第四层相对应的主要协议有____________ 和 ,其中后者提供无连接的不可靠传输服。(4分)
TCP(传输控制协议)和UDP(用户数据报协议) (顺序可交换)
5:恢复和并发控制的基本单位是_______ 事务(2分)
6:什么是分布式数据库? (6分)
答:数据库分布在计算机网络的不同计算机上,
网络中的每个节点具有独立处理的能力(场地自治),可以执行局部应用,
同时,每个节点也能通过网络通信子系统执行全局应用。
7:TCP为何采用三次握手来建立连接,若采用二次握手可以吗?(10分)
答案:三次握手是为了防止已失效的连接请求再次传送到服务器端。 (2分)
二次握手不可行,(2分)
因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。(6分)
8:有一个“职工”表,表结构如下:(14分)
问题:
假设在“职工”表中的“年龄”和“月工资”字段上创建了索引,下列的查询语句可能不会促使查询优化器使用索引,从而降低了效率,请写出可以完成相同功能又可以提高查询效率的SQL语句
SELECT 姓名,年龄,月工资 FROM 职工
WHERE 年龄 > 45 OR 月工资 < 1000;
SELECT 姓名,年龄,月工资 FROM 职工
WHERE 年龄 > 45
UNION
SELECT 姓名,年龄,月工资 FROM 职工
WHERE月工资 < 1000;
C++部分(50分)
1.以下程序段,(4分)
int c1=1,c2=2,c3;
c3=1/c2*c1;
则执行后,c3中的值是 A
A) 0 B)0.5 C) 1 D) 2
2.有如下程序(4分)
main0
{ int x=1,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
该程序的输出结果是 A
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
3. 有如下程序(4分)
main0
{ int x=23;
do
{ printf(“%d”,x–);}
while(!x);
}
该程序的执行结果是 B
A) 321 B)23 C) 不输出任何内容 D) 陷入死循环
4. 请找出下面代码中的所有错误(14分)
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。
#include”string.h”
main()
{
char*src=”hello,world”;
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len–!=0)
d++=s–;
printf(“%s”,dest);
return 0;
}
#include”string.h”
#include “malloc.h” //加一行这个
main()
{
char*src=”hello,world”;
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];//改成char* s=&src[len-1];
while(len–!=0)
{ //加入大括号
*d = *s;
d++;
s–;
}//前面三行改成这样
printf(“%s”,dest);
return 0;
}
5. static 有什么用途?(请至少说明两种)(9分,每点3分)
(1)使得变量或对象的存储形式变成静态存储;
(2)它会把变量的可见范围限制在编译单元中,使它成为一个内部连接;
(3)类中的static成员。
6. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?(10分)
C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字与C 语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C 编译器编译后在库中的名字为_foo , 而C++ 编译器则会产生像_foo_int_int 之类的名字。C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。
(考察点:c细节)
7. 头文件中的 ifndef/define/endif 干什么用(5分)
防止该头文件被重复引用。
JAVA部分(50分)
1. 在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占
用 字节内存空间,这样,无论是中文字符还是英文字符,都是占
用 字节内存空间。(4分)
2 、2
2. 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 方法是不能被当前类的子类重新定义的方法。(4分)
抽象(abstract)方法、最终(final)方法
3. 设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是 。 120(4分)
int s = 0 ;
for ( int i = 0 ; i < MyIntArray.length ; i + + )
if ( i % 2 = = 1 ) s += MyIntArray[i] ;
System.out.println( s );
4、下列哪些关键字既能够被用于局部变量的修饰,也可以用做类变量的修饰()C(4分)
A. public
B. transient
C. static
D. finally
5. 下面的哪些叙述为真( )D(4分)
D. 类File重写方法equals()在两个不同的对象的内容和类型一致时返回true。
6 . Java有没有goto &和&&的区别。(8分)
Goto 是java中的保留字,现在没有在java中使用。
&是位运算符。&&是布尔逻辑运算符。
7. 按照下图写出代码。(22分)
Public class JCheckbocDemo{
Public static void main(String agrs[]){
Container con = new JFrame(“JCheckBox演示窗口”);
Panel panel1= new P