1.下面主程序中,实参a与形参x以引用调用(call by reference)的方式传递信息,实参 b与形参y以值调用(call by value)的方式传递信息,那么,从过程”compute”返回主程序后a和b的值分别为(A)
Main program |
procedure compute(x,y) |
a:=1; |
x:=x+2*y |
B:=2 |
y:=2*x+y |
Compute(a,b) |
Return; |
A.5和 2
B.5和12
C.1和2
D.1和12
【解析】实际上,引用调用时,实参向形参传递的参数的地址,因此在子程序可以修改实参变量的值。相反,值调用时,子程序将不修改实参变量的值。子程序compute()的执行语句对x的修改结果就是a的值,即x=1+2*2=5。y值的修改不影响b的值,因此b=2。
2.Java语言具有许多优点和特点,下列选项中( )反映了Java程序并行机制的特点。(B)
A.安全性
B.多线程
C.跨平台
D.可移值
3.下列关于数据库系统基于日志的恢复的叙述中,( B)是正确的。
A.利用更新日志记录中的改前值可以进行UNDO,利用更新日志记录中的改前值可以进行REDO
B.利用更新日志记录中的改前值可以进行UNDO,利用更新日志记录中的改后值可以进行REDO
C.利用更新日志记录中的改后值可以进行UNDO,利用更新日志记录中的改前值可以进行REDO
D.利用更新日志记录中的改后值可以进行UNDO,利用更新日志记录中的改后值可以进行REDO
4.在视图上不能完成的操作是 (D)
A.更新视图数据
B.查询
C.在视图上定义新视图
D. 在视图上定义新的基本表
5.抽象类A及类B的定义如下: ()
Abstract class A
{Abstract int getinfo(){ }
}public class B extendsA
{private int a=0 ;
public int getinfo()
{
returna;
}
public static void main(Stringargs [ ])
{
B b=new B()
System out printIn(b.getinfo() );
}
{
关于上述程序代码描述的说明正确的是 ()
A. 第1行不能通过编译
B. 第3行不能通过编译
C. 程序通过编译,输出结果为: 0
D. 程序通过编译,但没有输出任何结果
6 、正则表达式([0-9]{3})-([a-z]{3})-([a-z]*?ab)与下列哪个字符串相匹配(D)
A、123-abc{3}-cab
B、123{3}-abc-cab
C、123-abc-cb
D、123-abc-ccab
7.以下语句输出的结果是:
Stringstr="1234";
intx=4,y=5;
str=str+(x+y);
System.out.println(str);
A.12349
B.123445
C.会产生编译错误
D.123+4+5
8.在Java中,关于final关键字的说法,正确的有(AC)。
A)如果修饰变量,则一旦赋了值,就等同一个常量
B)如果修饰类,则该类只能被一个子类继承
C)如果修饰方法,则该方法不能在子类中被覆盖
D)如果修饰方法,则该方法所在的类不能被继承
9. 下列创建了几个对象(A)
StringA,B,C
A='a';
B='b';
A=A+B;
StringBufferD=new StringBuffer(“abc”);
D=D.append(“567”);
A.4
B.6
C.5
D.3
10.定义字符串:String str=”abcdefg”;则str.substring(2,5).indexOf(‘d’)的结果是(A)
A.1
B.3
C.4
D.2
11.以下哪一行代码会进行垃圾回收(D)
1.public class MyClass{
2.public StringBuffer aMethod(){
3.StringBuffer sf = new 4.StringBuffer("Hello");
5.StringBuffer[] sf_arr = new StringBuffer[1];
6.sf_arr[0] = sf;
7.sf = null;
8.sf_arr[0] = null;
9.return sf;
} }
A.第3行
B.第8行
C.第5行
D.第7行
12.类Teacher和Student是类Person的子类最后一句语句的结果是(C)
Person p;
Teacher t;
Student s;
//p, t and s are all non-null.
if(t instanceof Person) { s = (Student)t;}
A、将构造一个Student对象;
B、表达式是合法的;
C、表达式是错误的;
D、编译时正确,但运行时错误。
13.在数据库设计中,符E-R图转换成关系数据模型的过程属于(C)
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
14.采用面向对象技术开发的应用系统的特点是(A)
A.重用性更强
B.运行速度更快
C.占用存储量小
D.维护更复杂
15.下面是关于子类调用父类构造函数的描述正确的是(B)
A.子类定义了自己的构造函数,就不会调用父类的构造函数.
B.子类必须通过super关键字调用父类没有参数的构造函数.
C.如果子类的构造函数没有通过super调用父类构造函数,那么子类会先调用父类不含参数的构造函数,再调用子类自己的构造函数.
D.创建子类对象时,先调用子类自己的构造函数,然后电泳父类的构造函数
16.评估下面的一组SQL语句,关于该组语句的哪个描述是正确的(A)
CREATETABLE dept
( deptno NUMBER(2),
dname VARCHAR2(14),
1oc VARCNAR2(13)
);
ROLLBACK;
DESCRIBEDEPT
A.DESCRIBE DEPT语句将显示DEPT表的结构描述内容
B. ROLLBACK语句将释放DEPT占用的存储空间
C. DESCRIBE DEPT语句将只有在ROLLBACK之前引入一个COMMIT语句时,才会显示DEPT表的结构描述内容
D. DESCRIBE DEPT语句将返回一个错误ORA-04043: object DEPT does not exist.
17.关于线程的哪些叙述是对的(B)
A.一旦一个线程被创建,它就立即开始运行.
B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C.当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面
D.一个线程可能因为不同的原因停止(cease)并进入就绪状态
18.设i,j为类X中定义的int型变量名,下列X类的构造方法中不正确的是(A)
A.void X(intk){i=k;}
B.X(int k){i+k;}
C.X(int m,int n){i=m;j=n}
D.X( ){i=0;j=0;}
19.下列方法定义中,正确的是(D)
A.int x(inta,b){return (a-b);}
B.doublex(int a,int b) {int w; w=a-b;}
C.doublex(a,b) {return b;}
D.int x(int a, int b) {return a-b;}
20.下面的语句的作用是(D)
Vector My Vector =new Vector(100,50);
A. 创建一个数组类对象MyVector,有100个元素的空间,每个元素的初值为50。
B. 创建一个向量类对象MyVector,有100个元素的空间,每个元素的初值为50。
C. 创建一个数组类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。
D. 创建一个向量类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。
二,多选题;请将正确选项填在写在答题纸上.
1. 下关于主键和唯一索引的却别有哪些是正确的(BD)
A. 主键顺序为数据的物理顺序
B. 主键不能空,唯一索引可以为空
C. 主键:默认将是聚簇索引唯一索引: 默认将是非聚簇索引
D. 主键每个表只能有一个,唯一索引可以多个
2. 执行下列代码后,哪个结论是正确的(CD)
String[] s =new String[10];
A. s[10]为””
B. s[9] 为0
C. s.length 为10
D. s[9] 为 null;
3. 多线程技术具有哪些优越性(ABC)
A. 创建速度快、系统开销小
B. 并行性高
C. 通信简洁、信息传送速度快
D. 安全性高
4. List接口有哪些实现类(ABC)
A. LinkedList
B. ArrayList
C. Vector
D. HashMap
5. 下面那条语句编译不会出现错误(ABCD)
A. Boolean b = new Boolean(“abcd”);
B. int x = (int)(1.23);
C. byt b = 127;
D. float f = 123;
三、填空题
1、请输出E类中[代码1]~[代码2]的输出结果: (98.0 ~12)
classA{
double f(double x,double y){
return x+y;
}
staticint g(int n){
return n*n;
}
}
classBextendsA{
double f(double x,double y){
double m = super.f(x,y);
return m+x*y;
}
staticint g(int n ){
int m = A.g(n);
return m+n;
}
}
publicclassE{
publicstaticvoid main(String args[]){
B b = new B();
System.out.println(b.f(10.0,8.0)); //【代码1】
System.out.println(b.g(3)); //【代码2】
A a = new B();
System.out.println(a.f(10.0,8.0)); //【代码3】
System.out.println(a.g(3)); //【代码4】
}
}
【代码1】:98.0 。【代码2】:12 。【代码3】:98.0 。【代码4】:9
代码1调用b对象的f方法,b对象是B类实例化的,调用的是B类自己的f方法,传入10.0和8.0后,用super关键字调用了父类的f方法,得到18.0赋值给m,最后返回18.0+10.0*8.0也就是98.0。
【代码2】调用B类中的静态方法g传入3,方法内又去调用父类中的g方法传入3,得到9赋值给m后,输出9+3也就是12。
【代码3】a对象是上转型对象,上转型对象可以调用重写父类的方法以及父类派生的方法,所以a调用的f方法是它重写的方法,那么具体过程就跟【代码1】相同,答案为98.0
【代码4】在于g方法是静态方法,静态方法是不允许被重写的,所以B类中的g方法相当于该类特有的方法,那么a调用的g方法实际上是父类的,输出结果为9 。
2.有一表EMPLOYEE_DEPARTMENT和他的样例数据如下
EMPNO FIRSTNAME LASTNAME WORKDEPT DEPTNAME
=========================================
000290 John Parker E11 Operations
000320 Ramlal Mehta E21 SoftwareSupport
000310 Maude Setright E11 Operations
其中:EMPNO为主关键字,表示雇员号,FIRSTNAME为雇员名,LAST为雇员性,WORKDEPT为雇员所在部门号,DEPTNAME为雇员所在部门名称。该表是否符合第三范式的要求?如果你认为不符合,请按本题中描述表和样例数据的格式给
出你认为符合第三范式的设计
第三范式:若每个非键列都独立于其他非键列,且只依赖于键,则表使用的是第三范式.
以下的示例中第一个表包含了EMPNO列和WORKDEPT列,假定添加了DEPTNAME列.这个新列依赖于WORKDEPT,但主键是EMPNO.该表违反了第三范式
EMPNO(PK) FIRSTNAME LASTNAME WORKDEPT DEPTNAME
000290 John Parker E11 InstallationMgmt
000320 Ramlal Mehta E21 SoftwareSupport
000310 Maude Setright E11 Operations
更改雇员JohnParke的DEPTNAME不会更改该部门的其他雇员的部门名称,注意,改后部门E11中有两个不同的部门名称
下面的表被定义为规范化的结果
EMPLOYEE表
EMPNO(PK) FIRSTNAME LASTNAME WORKDEPT
000290 John Parker E11
000320 Ramlal Mehta E21
000310 Maude Setright E11
DEPARTMENT表
DEPTNO(PK) DEPTNAME
E11 Operations
E21 Software Support
3.编程实现如下场景:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数 程序分析:利用循环,使用Map储存数据.
例如输入V&Viewvell001 vellBibi;
输出如下:
英文字母:17
空格:2
数字:3
其他字符:2