java测试题及详解.docx
《java测试题及详解.docx》由会员分享,可在线阅读,更多相关《java测试题及详解.docx(20页珍藏版)》请在冰豆网上搜索。
java测试题及详解
1,在一棵二叉树上第6层的结点数最多是______。
A、8
B、16
C、32
D、15
答案解析:
根据二叉树的性质:
二叉树第i(i≥1)层上至多有2i-1个结点。
得到第5层的结点数最多是16。
本题答案为C。
2,下面叙述正确的是______。
A、算法的执行效率与数据的存储结构无关
B、算法的空间复杂度是指算法程序中指令(或语句)的条数
C、算法的有穷性是指算法必须能在执行有限个步骤之后终止
D、以上三种描述都不对
答案解析:
但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
数据结构和算法是计算机科学的两个重要支柱。
它们是一个不可分割的整体。
算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。
算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
本题答案为C。
3,关系数据库管理系统能实现的专门关系运算包括( )。
A.排序、索引、统计
B.选择、投影、连接
C.关联、更新、排序
D.显示、打印、制表
[正确答案]B
关系数据库管理系统能实现的专门关系运算包括选择、投影、连接
4,在软件开发中,下面任务不属于设计阶段的是______。
A、数据结构设计
B、给出系统模块结构
C、定义模块算法
D、定义需求并建立系统模型
答案解析:
软件设计一般分为总体设计和详细设计两个阶段,总体设计的任务是确定软件的总体结构,子系统和模块的划分,并确定模块间的接口和评价模块划分质量,以及进行数据分析。
详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。
本题答案为D。
5,在匹配器(Matcher)类中,用于输入字符串与模式串比较的方法是。
A、staticbooleanmatches()
B、booleanmatcher.find()
C、intmatcher.start()
D、intmatcher.end()
答案解析:
本题考查的是Matcher类。
在J2SE1.4中的正则表达式包中存在一个匹配器类。
该类用于将一个输入字符串与模式串进行比较,在这个类中通过matches方法用来对输入字符串与模式串的比较,如果匹配成功则返回true否则返回false;matcher.find()方法用来寻找下一模式匹配串;matcher.start()用来返回匹配串的一个起始索引整数值;matcher.end()用来返回匹配串的终止索引整数值。
故本题答案为A。
6,下列关于栈的描述中错误的是( )。
A.栈是先进后出的线性表
B.栈只能顺序存储
C.栈具有记忆作用
D.对栈的插入与删除操作中,不需要改变栈底指针
答案:
B
栈也可以链式存储
栈也是线性表,
因此线性表的存储结构对栈也适用
线性表可以链式存储
7,,为了使模块尽可能独立,要求( )。
A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
答案:
B
解析:
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。
它描述的是模块内的功能联系;
耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。
8,用树形结构表示实体之间联系的模型是( )。
A.关系模型
B.网状模型
C.层次模型
D.以上三个都是
答案:
C
解析:
树形结构用层次模型表示实体之间联系
9,下列属于合法的Java标识符是
A._cat
B.5books
C.+static
D.-3.14159
答案:
A
解析:
不能以数字或+-作为标识符的开头。
10,在Java中,表示换行符的转义字符是
A.\n
B.\f
C.'n'
D.\dd
答案:
A
解析:
表示换行符的转义字符是:
\n
11十进制数16的16进制表示格式是
A.0x10
B.0x16
C.0xA
D.16
答案:
A
16进制以Ox开头,A选项表示:
1X16的一次方+0X16d的0次方。
12,按照Java的标识符命名规范,下列表示一个类的标识符正确的是
A.Helloworld
B.HelloWorld
C.helloworld
D.helloWorld
答案:
B
类标示符:
每个单词的的首字母都大写。
13,按照“后进先出”原则组织数据的数据结构是(B)
A.队列
B.栈
C.双向链表
D.二叉树
解析:
栈“后进先出”队列“先进先出”。
14,在深度为7的满二叉树中,叶子结点的个数为(C)
A.32
B.31
C.64
D.63
解析:
2的7-1次方。
15,阅读下列代码
publicclassTest{
publicstaticvoidmain(Stringargs[]){
System.out.println(89>>1);
}
}
其运行结果是(A)
A)44
B.45
C.88
D.90
解析:
89>>1相当于89X(1/2)取整。
16,线程生命周期中正确的状态是(C)
A.新建状态、运行状态和终止状态
B.新建状态、运行状态、阻塞状态和终止状态
C.新建状态、可运行状态、运行状态、阻塞状态和终止状态
D.新建状态、可运行状态、运行状态、恢复状态和终止状态
解析:
线程生命周期:
新建状态、可运行状态、运行状态、阻塞状态和终止状态
17,Java语言使用的字符码集是(D)
A.ASCII
B.BCD
C.DCB
D.Unicode
解析:
ava语言使用的字符码集是Unicode。
18,下列数组a中,能在程序运行时动态调整大小的是。
A、inta[]
B、String[]a
C、a=newArrayList()
D、a=newArray()
本题考查的是数组大小的调整。
Java语言中用一种特殊的类-java.util.ArrayList(数组列表)在运行时动态调整数组的大小。
ArrayList类在定义数组时,不必限定数组的大小。
故本题答案为C。
19已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为
A.GEDHFBCA
B.DGEBHFCA
C.ABCDEFGH
D.ACBFEDHG
答案:
B
解析:
前序遍历第一个字母为A,中序遍历DBGEACHF在A前面的都属于左子树及(DBGE是左子树)且A是根节点。
A右边的是有字数。
依次递归类推。
20,树是结点的集合,它的根结点数目是
A.有且只有1
B.1或多于1
C.0或1
D.至少2
答案:
A
树是结点的集合,它的根结点数目是有且只有1。
21,如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
A.e3,e1,e4,e2
B.e2,e4,e3,e1
C.e3,e4,e1,e2
D.任意顺序
答案:
B
解析:
栈先进后出。
A选项e3先出所以e1不会出现在e2前面,C项同理。
22,在设计程序时,应采纳的原则之一是
A.不限制goto语句的使用
B.减少或取消注解行
C.程序越短越好
D.程序结构应有助于读者理解
答案:
D
23,程序设计语言的基本成分是数据成分、运算成分、控制成分和
A.对象成分
B.变量成分
C.语句成分
D.传输成分
答案:
D
24,解析:
程序设计语言的基本成分是数据成分、运算成分、控制成分和传输成分。
25,下列叙述中,不属于软件需求规格说明书的作用的是
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
答案:
D
26,下列不属于软件工程的3个要素的是
A)工具
B.过程
C.方法
D.环境
答案:
D
软件工程的3个要素的是:
工具,过程,方法。
27,单个用户使用的数据视图的描述称为
A.外模式
B.概念模式
C.内模式
D.存储模式
答案:
A
解析:
外模式也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
概念模式(ConceptualSchema)也称为模式或逻辑模式,对应于概念级数据库。
概念模式是数据库中全体数据的整体逻辑结构和特征的描述,是所有用户的公共数据视图,用以描述现实世界中的实体及其性质与联系,定义记录、数据项、数据的完整性约束条件及记录之间的联系。
内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,
28,将E-R图转换到关系模式时,实体与联系都可以表示成
A.属性
B.关系
C.键
D.域
答案:
B
解析:
E-R图转换到关系模式时,实体与联系都可以表示成关系
29,SQL语言又称为
A.结构化定义语言
B.结构化控制语言
C.结构化查询语言
D.结构化操纵语言
答案:
C
解析:
sQL语言又称为结构化查询语言
30,“商品”与“顾客”两个实体集之间的联系一般是(D)
A.一对一
B.一对多
C.多对一
D.多对多
解析:
一个顾客可以购买多个商品,一种商品也可以由锁个顾客购买。
(9)在E—R图中,用来表示实体的图形是(A)
A.矩形
B.椭圆形
C.菱形
D.三角形
解析:
在E—R图中,用来表示实体的图形是矩形菱形表示关系,椭圆形表示属性。
31,数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(C)
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.没有任何关系
解析:
数据库系统DBS包括数据库DB和数据库管理系统DBMS
32,Java语言中,负责并发管理的机制是(D)
A.垃圾回收
B.虚拟机
C.代码安全
D.多线程
解析:
Java语言中,负责并发管理的机制是多线程
33,按运算符操作数的数目划分,运算符?
:
的类型是。
A、B、二元
C、四元
D、一元
本题考的是运算符。
"?
:
"是条件运算符,条件运算符是三元运算符。
三元条件表达式的一般形式为:
expressinon1?
expression2:
expression3
其中表达式expression1应该是关系或布尔表达式,其计算结果为布尔值。
如果该值为true,则计算表达式expression2,并将计算结果作为整个表达式的结果;如果为false,则计算表达式expression3,将计算结果作为条件表达式的结果。
故本题答案为A。
34,当检索一个压缩文件时,首先要建立压缩文件输入流对象。
该对象。
A、以选中的压缩文件为参数
B、以FileInputStream对象为参数
C、以InputStreamReader对象为参数
D、以BufferedReader对象为参数
在java.io包中提供了对压缩文件进行操作的能力。
它是通过压缩文件输入流与压缩文件输出流来实现的,其分别继承自InflaterInputStream与DeflaterOutputStream。
在创建压缩文件输入流时,其初始化参数是一个FileInputStream类的实例。
计算机中的流是。
35,以下表达式是不合法的。
A、Stringx="Hello";inty=9;x+=y;
B、Stringx="Hello";inty=9;if(x==y){}
C、Stringx="Hello";inty=9;x=x+y;
D、Stringx=null;inty=(x!
=null)&&(x.length()>0)?
x.length():
0
本题考查的是表达式。
Java对"+"进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。
若"+"的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。
例如本题选项A中,x+=y即x=x+y,则计算结果x的值为字符串Hello9;选项C与此类似,故此选项也是正确的;选项D主要考查的是条件运算符"?
:
",即把表达式(x!
=null)&&(x.length()>0)?
x.length():
0的值赋给整型变量y,运行结果y的值是0;而选项B是因为"=="两边的类型不匹配,无法比较,所以此表达式是错误的。
故本题答案为B。
36,下列是反斜杠字符的正确表示。
A、\\
B、*\\
C、\
D、\'\'
本题考查的是转义字符。
Unicode字符集中对一些字符必须用转义字符。
转义字符以反斜杠(\)开头,如"\n"表示换行符,"\\"表示反斜杠。
故本题答案为A。
37,假设有以下代码
Strings="hello";
Stringt="hello";
charc[]={'h','e','l','l','o'};
下列选项中返回false的语句是。
A、s.equals(t);
B、t.equals(c);
C、s==t;
D、t.equals(newString("hello"));
本题考查的是比较方法的使用。
==操作符比较的是操作符两端的操作数是否是同一个对象,而String的equals()方法比较的是两个String对象的内容是否一样,其参数是一个String对象时才有可能返回true,其它对象都返回假。
需要指出的是由于s和t并非使用new创建的,他们指向内存池中的同一个字符串常量,因此其地址实际上是相同的(这个可以从反编译一个简单的测试程序的结果得到,限于篇幅不列出测试代码和反编译的分析),因此答案C也是正确的。
故本题答案为B。
38,paint()方法使用______类型的参数。
A、Graphics
B、Graphics2D
C、String
D、Color
本题考查的是Applet中paint方法的参数。
paint()方法:
Applet的paint()方法具体执行Applet的绘制,该方法定义如下:
publicvoidpaint(Graphicsg)
paint()方法只有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。
在调用paint()方法时,由浏览器将该对象传递给paint()方法。
故本题答案为A。
39,下列程序运行的结果是______。
publicclassExample{
Stringstr=newString("good");
char[]ch={'a','b','c'};
publicstaticvoidmain(Stringargs[]){
Exampleex=newExample();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+"and");
System.out.print(ex.ch);
}
publicvoidchange(Stringstr,charch[]){
str="testok";
ch[0]='g';
}
}
A、goodandabc
B、goodandgbc
C、testokandabc
D、testokandgbc
本题考查的是条件语句的使用。
Java语言中,原始数据类型变量是按值传递的,引用类型变量是按地址传递的。
故本题答案为B。
40,给出下面代码:
publicclassPerson{
staticintarr[]=newint[10];
publicstaticvoidmain(Stringa[])
{
System.out.println(arr[1]);
}
}
______语句是正确的。
A、编译时将产生错误
B、编译时正确,运行时将产生错误
C、输出0
D、输出空
本题考查的是数组的初始化问题。
Java中对于整数数组如果没有指点数组的值会自动的用0填充整个数组。
故本题答案为C。
一、基本操作题
在下画线上补充代码。
本题的功能是输出字符串"welcome!
"和表达式"a/b=
c",以及输出"\\do something"。
Public class javal{
Pubhc static void main(string[]args){
System.out.println( );
System.out.println( );
System.out.println( );
}
一、基本操作题
第1处:
"\"Welcome!
\""
第2处:
"a/b=C"
第3处:
"\\\\do something"
【解析】本题考查的是不同的数据类型的输出方式,以及转义字符的使用。
第l处与第3处含有特殊字符,输出时要使用转义字符。
二:
由于n!
=1*2*3*…*n,所以可用循环来求得阶乘的结果。
在本题已出现do,故用do-while循环,又因为本题在定义变量时用f来保存阶乘的结果,i表示循环变量。
故本题所填循环体为:
f=f*i和判断条件为:
while(n>=i)。
具体程序如下:
importjava.util.Random;
publicclassJava_2
{
publicstaticvoidmain(Stringargs[]){
Randomrandom=newRandom();
floatp=random.nextFloat();//产生0.0与1.0之间的一个浮点数
intn=Math.round(10*p);//构造10以内的一个整数
longf=1;//保存阶乘的结果
inti=1;//循环变量
//*********Found********
do{f=f*i;//在每次i满足条件的情况下累计求积,此空还可以以f*=i形式填写(第一次执行此语句时并不判断条件)
i++;
//*********Found********
}while(n>=i);//判断条件,直到n
System.out.println(n+"!
="+f);
}
}
三,本题的要求是:
下面是整数除法计算的程序,要求在出现异常时,能抛出异常信息。
考虑两种异常:
1)输入非数字除数
2)输入除法分母为零
该程序运行的三种结果状态如下:
1)输入两个合法整数:
2)输入非数字除数:
3)输入除数为零:
具体程序及其语句解释如下:
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
importjava.text.*;
//*********Found********
publicclassJava_3extendsJFrameimplementsActionListener{
privateJTextFieldinput1,input2,output;
privateintnumber1,number2;
privatedoubleresult;
//初始化
publicJava_3()
{
//*********Found********
super("示范异常");//调用父类JFrame的构造函数
Containerc=getContentPane();//调用父类JFrame的方法getContentPane()
c.setLayout(newGridLayout(3,2));//设置布局管理器,其布局为3行2列
c.add(newJLabel("输入分子",SwingConstants.RIGHT));//在容器c中加入标签"输入分子"
input1=newJTextField(10);//创建一个长度为10个字符的文本框的对象input1
c.add(input1);//将文本框的对象input1放入c容器中
c.add(newJLabel("输入分母和回车",SwingConstants.RIGHT));//在容器c中加入标签"输入分母和回车"
input2=newJTextField(10);//创建一个长度为10个字符的文本框的对象input2
c.add(input2);//将文本框的对象input2放入c容器中
input2.addActionListener(this);//注册监听器
c.add(newJLabel("计算结果",SwingConstants.RIGHT));//在容器c中加入标签"计算结果"
output=newJTextField();//创建文本框对象output
c.add(output);//将文本框的对象output放入c容器中
setSize(300,100);//设置所显示的对话的框的大小
show();
}
//处理GUI事件
publicvoidactionPerformed(ActionEvente)
{
DecimalFormatprecision3=newDecimalFormat("0.000");//创建DecimalFormat对象precision3,使得double型的数据转换成为保留3位小数位数输出
output.setText("");//空的JTextField输出
try{
number1=Integer.parseInt(input1.getText());
number2=Integer.parseInt(input2.getText());
result=quotient(number1,number2);
//*********Found********
output.setText(precision3.format(result));//将保留3位小数位数的除