二级JAVA真题.docx
《二级JAVA真题.docx》由会员分享,可在线阅读,更多相关《二级JAVA真题.docx(30页珍藏版)》请在冰点文库上搜索。
二级JAVA真题
二级JAVA真题2013年09月
(总分:
100.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
40,分数:
40.00)
1.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是。
∙A.12345ABCDE
∙B.EDCBA54321
∙C.ABCDE12345
∙D.54321EDCBA
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]栈是按照“先进后出”的原则组织数据的,入栈的顺序为12345ABCDE,1为栈底元素最后出栈,E为栈顶元素最先出栈,因此出栈的顺序为EDCBA54321。
2.下列叙述中正确的是______。
∙A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
∙B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
∙C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
∙D.循环队列中元素的个数是由队头指针和队尾指针共同决定
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环形空间。
循环队列仍然是顺序存储结构,是队列常采用的形式,因此选项A错误。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队列排头元素的前一个位置。
循环队列中的元素是动态变化的,每进行一次入队运算,队尾指针就进一;每进行一次出队运算,队头指针就进一。
可见由队头指针和队尾指针一起反映队列中元素的动态变化情况,因此选项B、C是错误的。
从队头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,因此选项D是正确的。
3.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是______。
∙A.O(n)
∙B.O(n2)
∙C.O(log2n)
∙D.O(nlog2n)
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]最糟糕的情况应该是比较到线性表最后一个值,也没有查找到所需要的值,那么从线性表的第0个值开始比较,每次取出一个值比较,不符合,再取下一个值,依次比较,一直到最后一个,那么长度为N,就需要比较n次。
4.下列叙述中正确的是______。
∙A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
∙B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
∙C.顺序存储结构能存储有续表,链式存储结构不能存储有序表
∙D.链式存储结构比顺序存储结构节省存储空间
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]在顺序存储结构中所有元素所占的存储空间是连续的,而在链式存储结构中,存储数据结构的存储空间可以不连续,因此选项A是正确的。
线性表在计算机中的存放可以采用顺序存储结构,也可采用链式存储结构,顺序存储结构和链式存储结构都是既可用于线性结构,也可以用于非线性结构,因此选项B、C是错误的。
采用链式存储结构,不仅要存储元素的值,元素间的逻辑关系还需要通过附设的指针字段来表示,因此,链式存储结构需要更多的存储空间。
5.数据流图中带有箭头的线段表示的是______。
∙A.控制流
∙B.事件驱动
∙C.模块调用
∙D.数据流
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]数据流图的基本符号的意思:
①矩形表示数据的外部实体;②圆角的矩形表示变换数据的处理逻辑;③少右面的矩形表示数据的存储;④箭头表示数据流。
6.在软件开发中,需求分析阶段可以使用的图是______。
∙A.N-S图
∙B.DFD图
∙C.PAD图
∙D.程序流程图
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]结构化解析方法是常见的需求分析方法之一,它是结构化程序设计理论在软件需求解析阶段的运用,DFD(DataFlowDiagram,数据流图)是结构化解析常用的工具之一。
数据字典、判定树和判定表也是常用的结构化分析工具。
程序流程图、N-S图、PAD图是详细设计过程中常用的图形工具。
7.在面向对象方法中,不属于“对象”基本特点的是______。
∙A.一致性
∙B.分类性
∙C.多态性
∙D.标识唯一性
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]对象的基本特点有:
标识唯一性、分类性、多态性、封装性和模块独立性好。
标识唯一性是指对象是可区分的;分类性是指可将具有相同属性和操作的对象抽象成类;多态性是指同一个操作可以是不同对象的行为;封装性是指对象的内部对外不可见,在外面不可直接使用对象的处理能力,也不能直接修改其内部状态。
8.一间宿舍可以住多个学生,则实体宿舍和学生之间的联系是______。
∙A.一对一
∙B.一对多
∙C.多对一
∙D.多对多
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]一间宿舍对应多个学生,则宿舍和学生之间的联系是一对多,学生和宿舍的联系是多对一。
9.在数据管理技术发展的三个阶段中,数据共享最好的是______。
∙A.人工管理阶段
∙B.文件系统阶段
∙C.数据库系统阶段
∙D.三个阶段相同
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]在人工管理阶段,数据不保存,没有对数据进行管理的软件,数据不能共享;文件系统是数据库系统发展的初级阶段,提供了简单的数据共享与数据管理能力,但它不能提供完整的、统一的、管理和数据共享的能力。
数据库系统阶段实现了数据共享,具有数据的集成性,这使得数据可为多个应用所共享,数据的共享自身又可极大地减少数据冗余性。
10.有三个关系R、S和T如下:
R
A
B
m
1
n
2
S
B
C
1
3
3
5
T
A
B
C
m
1
3
由关系R和S通过运算得到关系T,则所使用的运算为______。
∙A.笛卡儿积
∙B.交
∙C.并
∙D.自然连接
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]交和并运算要求关系R和S具有相同的属性,因此可以排除选项B、C。
R与S的笛卡儿积是一个4元关系,有4个元素,因此A错误。
R与S有公共的属性B,可通过公共属性的相等值进行链接,这就是自然连接,可见选项D是正确的。
11.下列对Java语言的叙述中,错误的是______。
∙A.Java虚拟机解释执行字节码
∙B.JDK的库文件目录是bin
∙C.Java的类是对具有相同行为对象的一种抽象
∙D.Java中的垃圾回收机制是一个系统级的线程
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]Java语言的执行模式是半编译和半解释型。
Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。
所以选项A是正确的。
运行Java的JDK一共包含五个目录,分别是:
bin目录、lib目录、jre目录、demo目录、include目录。
所以选项B是错误的。
在Java语言中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合。
Java的类是对具有相同行为对象的一种抽象。
所以选项C是正确的。
Java有一个系统级的线程,对内存的使用进行跟踪,使程序员从繁忙的内存管理中解放出来。
所以选项D是正确的。
因此,本题的正确答案是B。
12.下列Java源程序结构中前三种语句的次序,正确的是______。
∙A.import,package,publicclass
∙B.import必为首,其他不限
∙C.publicclass,package,import
∙D.package,import,publicclass
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]Java程序中源代码结构:
(1)package语句,0或1个,用于指定文件存入所指定的包中,该语句必须在文件之首。
(2)import语句,0或多个,必须在所有类定义之前引入标准类。
(3)publicclassDefinition(公共类定义),0或1个,指定应用程序类名,与源文件名一致。
(4)classDefiniton,0或多个,类定义。
(5)interfaceDefinition,0或多个,接口定义。
因此,本题的正确答案是D。
13.阅读下列代码:
publicclass
{
publicstaticvoidmain(Stringargs[])
{
doubled=12.3;
Decrementerdec=newDecrementer();
dec.decrement(d);
System.out.println(d);
}
classDecrementer{
publicvoiddecrement(doubledecMe){
decMe=decMe-1.0;
}
}
}
代码执行后输出的结果是______。
∙A.12.3
∙B.11.3
∙C.13.3
∙D.-1.0
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]本题参数传递采用的是传值引用,函数中不会改变实参d的值,因此d的值不变。
14.给一个short类型变量赋值的范围是______。
∙A.-128~+127
∙B.-2147483648~+2147483647
∙C.-32768~+32767
∙D.-1000~+1000
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]在java语言中short型变量的存储顺序是先高后低,占16bit,能表示的数据范围是:
-32768~+32767。
因此,本题的正确答案是C。
15.Reader类所处理的是______。
∙A.字符流
∙B.字节流
∙C.文件流
∙D.管道流
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]Reader是一个抽象类,字符输入流都是抽象类Reader类的子类,它是用来读取字符文件的类。
字符输出流都是Writer抽象类的子类。
所以,Reader类所处理的是字符流。
因此,本题的正确答案是A。
16.阅读下列代码段:
ByteArrayOutputStreambout=newByteArrayOutputStream();
ObjectOutputStreamout=newObjectOutputStream(hout);
out.writeObject(this);
out.close();
以上代码段的作用是______。
∙A.将对象写入内存
∙B.将对象写入硬盘
∙C.将对象写入光盘
∙D.将对象写入文件
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]在java.io中,提供了ByteArrayInputStream、BytcArrayOutputStream和StringBufferInputStream类可直接访问内存,它们是Inputstream和OutputStream的子类。
用ByteArrayOutputStream可以向字节数组(缓冲区)写入数据。
在ObjectInputStream中用readObject()方法可以直接读取一个对象,ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中。
因此,本题的正确答案是A。
17.下列不属于Swing构件的是______。
∙A.JMenu
∙B.JApplet
∙C.JOptionPane
∙D.Panel
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]Swing中的大多数构件名称都在AWT构件名前加了一个“J”。
因此,很容易判断D项不是Swing中的构件。
Jmenu和JOptionPane是Swing的轻量级组件;JAppiet是Swing的顶层容器。
因此,本题的正确答案是D。
18.下列不是AWT的布局管理器的是______。
∙A.FlowLayout
∙B.BorderLayout
∙C.BoxLayout
∙D.GridLayout
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]布局管理器的相关类主要包括:
FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout等。
BoxLayout不是AWT的布局管理器。
因此,本题的正确答案是C。
19.子类继承了父类的方法和状态,在子类中可以进行的操作是______。
∙A.更换父类方法
∙B.减少父类方法
∙C.减少父类变量
∙D.添加方法
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]对一个类的继承是指在现有类(父类)的基础上构建一个新类(子类),子类重用(继承)了父类的方法和属性,同时还可以向新类中增添新的方法的状态。
所以,在子类中可以进行的操作是添加方法。
因此,本题的正确答案是D。
20.下列能表示字符串s1长度的是______。
∙A.s1.length()
∙B.s1.length
∙C.s1.size
∙D.s1.size()
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]在Java语言中,用s1.length()提取字符串s1的长度,所以用s1.length()表示字符串s1长度。
因此,本题的正确答案是A。
21.阅读下列代码段:
abstractclassPerson
{
publicPerson(Stringn){
name=n;
}
public______StringgetDescription();
publicStringgetName(){
returnname;
}
privateStringname;
}
在下画线处应填入的修饰符是______。
∙A.static
∙B.abstract
∙C.protected
∙D.final
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]抽象类没有实现的方法,不能实例化。
程序中Person是一个抽象类,因此StringgetDescrtption方法也是抽象的,所以用abstract修饰。
因此,本题的正确答案是B。
22.阅读下列代码:
publicclassJixiangwu{
publicstaticvoidmain(String[]args){
String[]stars={"贝贝","晶晶","欢欢","迎迎","妮妮"};
System.out.println("你抽取的奥运吉祥物是"+"""
+starsr(int)(stars.______*Math.random())]+~"""+"!
";
}
}
为保证程序能正确执行,程序中下画线处应填写的是______。
∙A.long
∙B.width
∙C.wide
∙D.length
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]程序中的下画线处需要填入字符数组starts的长度才能确定范围以便能够随机抽取到字符数组starts的各个元素。
因此,本题的正确答案是D。
23.下列方法中可用于定义线程休的是______。
∙A.start()
∙B.ink()
∙C.run()
∙D.main()
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]Java中的线程体是由线程类的run()方法定义,该方法定义线程的具体行为。
因此,本题的正确答案是C。
24.下列方法中与Applet显示无关的是______。
∙A.update()
∙B.draw()
∙C.repaint()
∙D.paint()
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]和Applet显示相关有3个方法:
(1)paret()方法,具体执行Applet的绘制。
(2)update()方法,用于更新Applet的显示,该方法将首先清除背景,再调用paint()方法完成Applet的具体绘制。
(3)repaint()方法,主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。
因此,本题的正确答案是B。
25.下列语句中错误的是______。
∙A.Strings[]={"how","are");
∙B.byteb=255;
∙C.Strings="one"+"two";
∙D.inti=2+2000;
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]选项A是定义并初始化一个一维数组,选项C是定义并初始化一个字符串,选项D是定义并初始化一个整型变量。
选项A、C、D是正确的。
byte型变量占8bit,能表示的数据范围是:
-128~+127,所以选项B是错误的。
因此,本题的正确答案是B。
26.下列可用作switch(expression)语句参数的是______。
∙A.Strings
∙B.Integeri
∙C.booleanb
∙D.inti
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]表达式expression最终值的类型必须是int型或者是能自动转换成int型的类型,如short、byte、char。
否则,必须进行强制类型转换。
case子句中的值valueI必须是常量,而且所有case子句中的值是不同的。
选项A是一个字符串常量,选项B中的Integer是一个类。
因此,本题的正确答案为D。
27.当浏览器重新返回到包含Applet的页面时调用的方法是______。
∙A.start()
∙B.init()
∙C.stop()
∙D.destroy()
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]Applet生命周期包括Applet的创建、运行与消亡几个状态。
Applet类提供了在生命周期不同阶段响应主要事件的4种方法,这4种方法的调用次序如下图所示:
[*]当浏览器重新返回到包含Applet的页面时调用的方法是start()。
因此,本题的正确答案是A。
28.阅读下列代码:
publicclassTest{
publicstaticvoidmain(Stringargs[]){
System.out.println((2<0)?
10:
8);
}
}
其运行结果是______。
∙A.2
∙B.0
∙C.10
∙D.8
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]因为2<0为flase,所以条件表达式的值为8。
因此,本题的正确答案是D。
29.阅读下列代码:
publicclassArrays{
publicstaticvoidmain(string[]args){
int[]a=newint[5];
for(inti=0;i<a.length;i=i+1){
a[i]=10+i;
}
for(inti=0;i<a.length;i++){
System.out.println(a[i]);
}
String[]s={"Frank","Bob","Jim"};
for(inti=0;i<s.length;i=i+1){
System.out.println(s[i]);
}
s[2]="Mike";
System.out.println(s[2]);
}
}
代码运行结果正确的是______。
∙A.1011121314MikeBobFrankJim
∙B.1112131415FrankBobMikeJim
∙C.1011121314FrankBobJimMike
∙D.1112131415MikeJimBobFrank
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]for循环执行时,首先执行初始化操作,其次判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分的。
完成一次循环后重新判断终止条件。
在本题的程序段中第一个for循环功能是定义一个一维数组a,第二个for循环的功能是输出一维数组a的各个元素,第三个for循环功能是输出~维数组s的各个元素。
因此,本题的正确答案是C。
30.下列方法能够用来实现线程之间通信的是______。
∙A.notify()
∙B.run()
∙C.sleep()
∙D.join()
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]wait()和notify()是java.lang.object类的方法,是实现线程通信的方法。
wait()和notify()可以实现线程的同步:
当某线程需要在synchronized块中等待共享数据状态改变时调用wait(),这样该线程等待并释放共享数据对象的锁,其他线程可以获得该对象的锁,并进入synchronized块对共享数据进行操作。
当其操作结束后,只要调用notify()方法就可以通知正在等待的线程重新占有锁并运行。
所以,notify()能够实现线程之间的通信。
因此,本题的正确答案是A。
31.下列关于线程的说法中,正确的是______。
∙A.一个线程一旦被创建,就立即开始运行
∙B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
∙C.当运行状态的线程因为调用了yield()方法而停止运行,它一定被放在可运行线程队列的前面
∙D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]在Java中,调用一个线程类的构造方法,便创建了一个线程,新建的线程调用start()方法将使线程的状态从New转换为Runnable。
Runnable表示系统处于运行就绪状态,此时线程仅仅是可以运行,但不一定在运行中。
所以选项A是错误的,选项B是正确的。
yield()方法使具有与当前线