2008年9月国家二级(JAVA)笔试真题试卷(题后含答案及解析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2008年9月国家二级(JA V A)笔试真题试卷(题后含答案及解析) 题型有:1. 选择题 2. 填空题
选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。

1.一个栈的初始状态为空。

现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是
A.12345ABCDE
B.EDCBA54321
C.ABCDEl2345
D.54321EDCBA
正确答案:B
解析:栈的特点是先进后出,所以全部入栈后再全部出栈所得的序列顺序必然与入栈序列的顺序相反。

2.下列叙述中正确的是
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定
正确答案:D
解析:循环队列是线性表的一种,所以选项A)错误。

循环队列的入队和出队需要队尾指针和队头指针完成,所以选项B)和C)错误。

3.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是
A.O(n)
B.O(n2)
C.O(log2n)
D.O(nlog2n)
正确答案:C
解析:二分查找法也称为折半查找法。

它的基本思想是:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列);如果x>a[n/2],则只要在数组a的右半部继续搜索x。

每次余下n/(2i)个元素待比较,当最后剩下一个时,即n/(2i)=1。

故n=2i;所以i=log2n。

4.下列叙述中正确的是
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C.顺序存储结构能存储有序表,链式存储结构不能存储有序表
D.链式存储结构比顺序存储结构节省存储空间
正确答案:A
解析:顺序存储方式是把逻辑上相邻的结点存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。

其优点是占用最少的存储空间。

所以选项D错误。

顺序存储结构可以存储如二叉树这样的非线性结构,所以选项B)错误。

链式存储结构也可以存储线性表,所以选项C)错误。

5.数据流图中带有箭头的线段表示的是
A.控制流
B.事件驱动
C.模块调用
D.数据流
正确答案:D
解析:在数据流图中,矩形表示数据的外部实体,圆角的矩形表示变换数据的处理逻辑,双横线表示数据的存储,箭头表示数据流。

6.在软件开发中,需求分析阶段可以使用的工具是
A.N-S图
B.DFD图
C.PAD图
D.程序流程图
正确答案:B
解析:数据流图简称DFD,是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

所以DFD图可以用于需求分析阶段。

7.在面向对象方法中,不属于“对象”基本特点的是
A.一致性
B.分类性
C.多态性
D.标识唯一性
正确答案:A
解析:对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、多态性、封装性、模块独立性。

故本题答案为A)。

8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是
A.一对一
B.一对多
C.多对一
D.多对多
正确答案:B
解析:一个实体宿舍可以对应多个学生,而一个学生只能对应一个宿舍,所以宿舍和学生之间是一对多关系。

9.在数据管理技术发展的三个阶段中,数据共享最好的是
A.人工管理阶段
B.文件系统阶段
C.数据库系统阶段
D.三个阶段相同
正确答案:C
解析:人工管理阶段:计算机出现的初期,主要用于科学计算,没有大容量的存储设备。

处理方式只能是批处理,数据不共享,不同程序不能交换数据。

文件系统阶段:即把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理。

但是,数据文件仍高度依赖于其对应的程序,不能被多个程序所通用。

数据库系统阶段:即对所有的数据实行统一规划管理,形成一个数据中心,构成一个数据仓库,数据库中的数据能够满足所有用户的不同要求,供不同用户共享。

数据共享性显著增强。

故本题答案为C)。

10.有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为
A.笛卡尔积
B.交
C.并
D.自然连接
正确答案:D
解析:自然连接是一种特殊的等值连接。

当关系R和S有相同的属性组,且该属性组的值相等时的连接称为自然连接。

11.下列对Java语言的叙述中,错误的是
A.Java虚拟机解释执行字节码
B.JDK的库文件目录是bin
C.Java的类是对具有相同行为对象的一种抽象
D.Java中的垃圾回收机制是一个系统级的线程
正确答案:B
解析:JDK库文件目录是lib,lib文件夹下的.jar文件为JDK库,程序员利用此库开发Java应用程序。

12.下列Java源程序结构中前三种语句的次序,正确的是
A.import, package, public class
B.import必为首,其他不限
C.public class, import, package
D.package, import, public class
正确答案:D
解析:Java源程序中,首先在程序的最开始用关键字package指明此程序属于哪个包,接着通过import导入外部包中的类或JDK中的类,然后定义类,如public class。

13.阅读下列代码public class { public static void main(String args[]){ double d=12.3; Decrementer dec=new Decrementer( ); dec. decrement(D) ; System. out. println(D) ; } } class Decrementer{ public void decrement(double decMe){ decMe=decMe-1.0; } } 代码执行后输出结果是
A.12.3
B.11.3
C.13.3
D.-1.0
正确答案:A
解析:此题考查方法的参数传递方式。

题目中用的是传值引用,传值引用不能改变基本类型的参数,所以d的值没有变化,依然是12.3。

14.给一个short类型变量赋值的范围是
A.-128~+127
B.-2147483648~+2147483647
C.-32768~+32767
D.-1000~+1000
正确答案:C
解析:Java中short类型长度为两个字节,16位,1位符号位,故最大值为0111 1111 1111 1111,十进制值为“32 767”,计算机中负值采用补码形式表示,故最小值为1000 0000 0000 0000,其真值的十进制值为“-32 768”,绝对值比最大正值大1。

15.Reader类所处理的是
A.字符流
B.字节流
C.文件流
D.管道流
正确答案:A
解析:Reader类是用于读取字符流的抽象类。

子类必须实现的方法只有read(char[],int,int)和close( )。

但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。

16.阅读下列代码段ByteArrayOutputStream bout=new ByteArrayOutputStream( ); ObjectOutputStream out=new ObjectOutputStream(bout); out. writeObject(this); out. close( ); 以上代码段的作用是
A.将对象写入内存
B.将对象写入硬盘
C.将对象写入光盘
D.将对象写入文件
正确答案:D
解析:ObjectOutputStream将Java对象的基本数据类型和图形写入OutputStream。

writeObject方法用于将对象写入流中。

通过使用流中的文件可以实现对象的持久存储。

所以程序片段是将对象写入文件。

17.下列不属于Swing构件的是
A.JMenu
B.JApplet
C.JOptionPane
D.Panel
正确答案:D
解析:Swing组件都继承自Jcomponent类,所有组件基本都以“J”开头。

Panel是awt中的组件。

18.下列不是AWT的布局管理器的是
A.FlowLayout
B.BorderLayout
C.BoxLayout
D.GridLayout
正确答案:C
解析:AWT的布局管理器有FlowLayout、GridLayout、BorderLayout、CardLayout和GridBagLayout。

BoxLayout是Swing新增加的布局管理器。

19.子类继承了父类的方法和状态,在子类中可以进行的操作是
A.更换父类方法
B.减少父类方法
C.减少父类变量
D.增添方法
正确答案:D
解析:子类继承父类也就继承了父类的非私有数据、方法,子类能操作这些数据或调用这些方法,但不能对数据类型或方法本身进行修改,子类能新增方法,此方法将只属于子类。

另外子类可重载父类方法,当在子类对象中调用此方法时将会调用子类自己新定义的同名方法,但这并不改变父类被重载的方法及对父类此方法的调用。

20.下列能表示字符串s1长度的是
A.s1. length( )
B.s1. length
C.s1. size
D.s1. size( )
正确答案:A
解析:length( )方法用于返回字符串的长度,返回类型为int。

21.阅读下列代码段abstract class Person{ public Person(String n){ name=n; } public______String getDescription( ); public String getName( ){ } private String name; } 在下画线处应填入的修饰符是
A.static
B.abstract
C.protected
D.final
正确答案:B
解析:抽象类中的方法没有方法体只有方法声明,那么这个方法必定是抽象的。

含有抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法,可以是具体实现了的方法,这个方法可作为继承此抽象类的子类的公共方法。

22.阅读下列代码public class Jixiangwu{ public static void main(String[]args){ String[]stars={“贝贝”,”晶晶”,”欢欢”,”迎迎”,”妮妮”}; System. out. println(“你抽取的奥运吉祥物是”+”““+stars[(int)(stars. ______* Math. random( ))]+””“+”!”); } } 为保证程序能正确执行,程序中下画线处应填写的是
A.long
B.width
C.wide
D.length
正确答案:D
解析:数组只有对其求长度有意义,其他long、width和wide不属于Java 中的关键字或数组类型的方法。

本题程序中Math. random( )生成一个0~1的double型的随机数,乘以数组长度取整将会得到大于等于0而小于等于4的整数,再作为数组下标对数组取值。

23.下列方法中可用于定义线程体的是
A.start( )
B.init( )
C.run( )
D.main( )
正确答案:C
解析:创新线程有两种方法,继承Thread类和实现Runnable接口,无论哪一种都得重写run( )方法。

24.下列方法中与Applet显示无关的是
A.update( )
B.draw( )
C.repaint( )
D.paint( )
正确答案:A
解析:paint( )方法继承自Container类,用于绘制容器;repaint( )方法继承自Component类,用于重绘组建组件。

25.下列语句中错误的是
A.String s[]={“how”,”are”};
B.byte b=255;
C.String s=“one”+”two”;
D.int i=2+2000;
正确答案:B
解析:类型不匹配,int类型不能默认转换为byte类型。

26.下列可用作switch(expression)语句参数的是
A.String s
B.Integer i
C.boolean b
D.int i
正确答案:D
解析:switch多分支选项运算的判别对象必须是byte、int、short和char这几种类型的原始类型。

27.当浏览器重新返回到包含Applet的页面时调用的方法是
A.start( )
B.init( )
C.stop( )
D.destroy( )
正确答案:A
解析:Applet的生命周期中有四个状态:初始态、运行态、停止态和消亡态。

当程序执行完init( )方法以后,Applet程序就进入了初始态;然后马上执行start( )方法,Applet程序进入运行态;当Applet程序所在浏览器图标化或者是转入其他页面时,该Applet程序马上执行stop( )方法,Applet程序进入停止态;在停止态中,如果浏览器又重新装载该Applet程序所在的页面,或者是浏览器从图标中复原,则Applet程序马上调用start( )方法,进入运行态;当然,在停止态时。

如果浏览器关闭,则Applet程序调用destroy( )方法,进入消亡态。

28.阅读下列代码public class Test{ public static void main(String args[]){System. out. println((2<0)? 10:8); } } 其运行结果是A.2
B.0
C.10
D.8
正确答案:D
解析:“?:”是三元运算符,首先判断“?”前面的布尔表达式,若为true,则执行“:”左边的表达式,而为false则执行“:”右边的表达式。

本题中“2<O? 10:8”,首先“2<0”返回false,故执行“:”右边的表达式,将8返回。

29.阅读下列代码public class Arrays{ public static void main(String[]args){ int[]a=new int[5]; for(int i=0;i<a. length; i=i+1){ a[i]=10+i; } for(int i=0; i< a. length; i=i+1){ System. out. println(a[i]); } String[]s={“Frank”,”Bob”,”Jim”}; for(int i=0; i<s. length; i=i+1){ System. out. println(s[i]); } S[2]=“Mike”; System. out. println(s[2]); } } 代码运行结果正确的是
A.10 11 12 13 14 Mike Bob Frank Jim
B.11 12 13 14 15 Frank Bob Mike Jim
C.10 11 12 13 14 Frank Bob Jim Mike
D.11 12 13 14 15 Mike Jim Bob Frank
正确答案:C
解析:每一个for循环对整型数组a赋值时从“10+0”开始,直到“10+4”为止共5个数。

第二个for循环直接将字符串数组内容依次打印出来,循环结束后对s[2]重新赋值为“Mike”,故再次打印s[2]时输出“Mike”。

30.下列方法能够用来实现线程之间通信的是
A.notify( )
B.run( )
C.sleep( )
D.join( )
正确答案:A
解析:Java中用notify( )、notifyAll( )函数进行进程间的通信,当等待此同步锁的线程接到此消息,将重新获得对象锁,线程重新启动运行。

Run( )方法是线程执行入口,sleep( )为线程休眠函数,join函数用来将一个线程加入某个线程组。

31.下列关于线程的说法中,正确的是
A.一个线程一旦被创建,就立即开始运行
B.使用start( )方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C.当运行状态的线程因为调用了yield( )方法而停止运行,它一定被放在可运行线程队列的前面
D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态
正确答案:B
解析:线程被创建后,如果调用start( )方法,线程便处于就绪状态,即可执行状态,但并不一定立即得到执行。

当调用了yield( )方法之后,线程放在处于同一个优先级的可执行的线程队列的后面。

当阻塞的线程获得锁后,将进入就绪状态,并不一定立即执行。

32.下列概念中不包括任何实现,与存储空间没有任何关系的是
A.类
B.接口
C.抽象类
D.对象
正确答案:B
解析:类中的静态方法、数据和程序块需要分配内存,抽象类中也可有静态数据,对象中的数据也需要在堆中分配内存。

接口中只有抽象方法,不能实例化,不需要考虑为其分配内存。

33.阅读下列一个支持多线程并发操作的堆栈类代码段public class MyStack{ private int idx=0; private int[]data=new int[8]; public______void push(int i){ data[idx]=i; idx + +; } ……} 在下画线处应填入的是
A.synchronized
B.wait
C.blocked
D.interrupt
正确答案:A
解析:synchronized修饰方法,表示此方法的执行需同步,其同步锁对应的对象为本对象。

程序实现一个简单的压栈操作,因压栈过程不能同时出栈或读取栈信息,故操作需要同步。

34.阅读下列代码public class Test implements Runnable{ public void run(Thread t){ System. out. println(“Running. “); } public static void main(String[]args){ Thread tt=new Thread(new Test( )); tt. start( ); } } 代码运行结果是
A.将抛出一个异常
B.没有输出并正常结束
C.输出“Running”并正常结束
D.程序第2行将出现一个编译错误
正确答案:C
解析:类Test实现Runnable接口,main函数中实例化了一个新的以Test 对象为执行任务的线程对象,然后调用start( )方法启动子线程,程序正常执行,子线程进入入口run( )方法,输出字符串“Running”。

35.阅读下列代码public class Test{ String s=“One World One Dream”; public static void main(String args[]){ System. out. println(s); } } 其运行结果是
A.args
B.One World One Dream
C.s
D.编译时出错
正确答案:D
解析:字符串s没有被声明成静态的,题中当主函数调用打印函数输出s的内容时,Test类还没有被实例化,也就没有字符串常量s了。

可将字符串s声明为static类型的,或者在打印字符前先实例化Test类,再打印这个对象中的字符串。

填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。

注意:以命令关键字填空的必须拼写完整。

36.对下列二叉树进行中序遍历的结果是【】。

正确答案:【】DBXEAYFZC
解析:二叉树中序遍历的顺序为先遍历左子树,然后访问根结点,最后遍历
右子树。

37.按照软件测试的一般步骤,集成测试应在【】测试之后进行。

正确答案:【】单元
解析:软件测试过程按4个步骤进行,即:单元测试、集成测试、确认测试和系统测试。

38.软件工程三要素包括方法、工具和过程,其中,【】支持软件开发的各个环节的控制和管理。

正确答案:【】过程
解析:软件工程包括三个要素:方法、工具和过程。

软件工程方法为软件开发提供了“如何做”的技术。

它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试及维护等。

39.数据库设计包括概念设计、【】和物理设计。

正确答案:【】逻辑设计
解析:数据库的设计过程大致分为5个步骤:需求分析、概念设计、逻辑设计、物理设计和验证设计。

40.在二维表中,元组的【】不能再分成更小的数据项。

正确答案:【】分量
解析:一张二维表对应一个关系,代表一个实体集。

表中的一行称为一个元组。

41.Java语言中的浮点数默认类型是【】。

正确答案:【】double类型
解析:Java语言中的浮点数默认类型是double类型的。

42.7.【】是类中的一种特殊方法,是为对象初始化操作编写的方法。

正确答案:【】构造方法
解析:构造方法是类中的一种特殊方法,方法名必须与类名一致。

新建对象时将自动调用构造方法完成对象的初始化。

而编程时也一般将初始化操作置于构造方法中。

43.文件类File是【】包中的一个重要的非流类。

正确答案:【】java. io
解析:File类是java. io包中的一个非流类,是文件和目录路径名的抽象表示形式。

44.已知Java语句double[][]balances=new double[NYEARS][NRA TES]; 数组balances是【】维数组。

正确答案:【】二
解析:douse[][]balances=new double[NYEARS][NRATES]定义的数组是一个NYEARS行NRATES列的二维数组,NYEARS和NRATES一定是两个整型常量。

45.对二进制数进行算术右移的运算符是【】。

正确答案:【】>>
解析:Java中符号“>>”为算术右移运算符,有符号。

右边超出截掉,左边补上符号位;运算符“>>>”为逻辑右移运算符,无符号,左边高位补0。

算术右移,顾名思义,右移时须要带符号,而逻辑右移直接在高位补0即可。

46.MouseMotionListener中的方法包括【】( )。

正确答案:【】mouseDragged( ) mouseMoved( )
解析:接口MouseMotionListener中包括两个方法,分别为:mouseDragged( ),鼠标按键在组件上按下并拖动时调用;mouseMoved( ),鼠标光标移动到组件上但无按键按下时调用。

47.任何运行在Web页面中的小应用程序都必须是Java中【】类的子类。

正确答案:Applet
解析:一个Applet可以定义多个类,但必须继承Applet类,同时可以有多个其他自定义的类。

48.Swing中的内部框架类是【】。

正确答案:JFrame
解析:顶层窗口被称为框架frame,AWT中有Frame类,Swing版本为JFrame。

JFrame是极少数不绘制在画布上的Swing组件之一。

JFrame类是一个容器,允许您把其他组件添加到它里面,把它们组织起来,并呈现给用户。

49.下列代码包括一个Html文件和一个Applet类。

在hello. html文件的横线处填入相应内容,把HelloApplet嵌入在hello. html中。

hello. html文件内容:<HTML><HEAD><TITLE>Hello</TITLE ></HEAD><BODY><APPLET CODE=“【】”WIDTH=150 HEIGHT=25></APPLET></BODY></HTML>HelloApplet. java文件内容:import java.
awt. *; import java. applet. *; public class HelloApplet extends Applet{ public void paint(Graphics g){ g. drawString(“Hello!” ,25,25); } }
正确答案:HelloApplet. class
解析:CODE属性给出包含applet的类文件名,并且必须包括扩展名“. class”。

50.线程是程序运行时的一个执行流,是由CPU运行程序代码并操作【】所形成的。

正确答案:数据
解析:线程是比进程更小的能独立运行的基本单位。

执行一个线程就是执行给定的指令序列并操作属于此线程的栈中的数据,以及一些共享数据。

线程也可以从全局类中访问静态数据。

相关文档
最新文档