1、二级JAVA真题2007年9月答案真题 120一、选择题(每小题2分,共70分) 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。 第1题:参考答案:D答案解析:本题考查软件的定义。软件是计算机系统中与硬件相互依存得另一部分,它包括程序、相关数据及其说明文档得总和。因此,本题得正确答案是选项D。第2题:参考答案:B答案解析:本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软件中的错
2、误。本题的正确答案是选项B。第3题:参考答案:C答案解析:通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中(对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。 多态性
3、:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,在面向对象方法中,实现信息隐蔽是依靠对象的封装。正确答案是选项C。第4题:参考答案:A答案解析:本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不能只为了追求效率而使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。 人们在软件生存期要经常阅读程序,特别是在软件测
4、试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。 正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。 所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。 I/O信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入/输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类和取值范围。经过上述分析可知,选项A是不符合良好程序设计风格要求的。第5题:参考答案:A答案解析:本题考查程序效率。程序效率是指程序运行速度和程序占用的存储空间。影响程序效率的因素是多方面的,包括程序的设计
5、、使用的算法、数据的存储结构等。在确定数据逻辑结构的基础上,选择一种合适的存储结构,可以使得数据操作所花费的时间少,占用的存储空间少,即提高程序的效率。因此,本题选项A的说法是正确的。第6题:参考答案:D答案解析:本题考查数据结构的基本知识。数据之间的相互关系称为逻辑结构。通常分为凹类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中;链式存储结构是使用指针把相互直接关联的节点链接起来。因此,这两种存储结
6、构都是线性的。可见,逻辑结构和存储结构不是一一对应的。因此,选项A和选项B的说法都是错误的。 无论数据的逻辑结构是线性的还是非线性的,只能选择顺序存储结构或链式存储结构来实现存储。程序设计语言中,数组是内存中一段连续的地址空间,可看作是顺序存储结构。可以用数组来实现树型逻辑结构的存储,比如二叉树。因此,选项C的说法是错误的。第7题:参考答案:C答案解析:冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其它值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从1到n-
7、i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第1趟比较n-1次,第2趟比较n-2次,依此类推,最后一趟比较 1次,一共进行n-1趟排序。因此,冒泡排序在最坏情况下的比较次数是 (n-1)+(n-2)+.+1,结果为n(n-1)/2。本题的正确答案是选项C。第8题:参考答案:A答案解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为 n2,则n0=n2+1。 根据这条性质可知,若二叉树中有70个叶子结点,则其度为2的结点数为70-1,即 69个。二叉树的总结点数是度为2、度为1和叶子结点的总和
8、,因此,题目中的二叉树总结点数为69+80+70,即219。因此,本题的正确答案是选项A。第9题:参考答案:B答案解析:本题考查数据库系统的基本概念和知识。数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。 数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要
9、解决数据的共享问题。因此,选项B的说法是正确的。 通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。因此,选项C的说法是错误的。因此,本题的正确答案是选项B。第10题:参考答案:C答案解析:本题考查数据库的关系模犁。关系模型的数据结构是一个“二维表”,每个二维表可称为一个关系,每个关系有一个关系名。表中的一行称为一个元组:表中的列称为属性,每一列有一个属性名。表中的每一个元组是属性值的集合,属性是关系二维表中最小的单位,它不能再被划分。关系模式是指一个关系的属性名表,即二维表的表框架。因此,选项C
10、的说法是正确的。第11题:参考答案:C答案解析:本题考查System类的基本知识。System类是一个特殊类,它是一个final类,所有的方法都用类变量来调用,即对System类不可能实例化。System类主要用来提供标准输入/输出和系统环境信息的访问、设置。System类的属性有: public static final InputSbem in,标准输入 public static final OutputStream out,标准输出 public static final PrintStream err,标准错误输出 因此,本题中选项A、B和D的说法都是正确的。因此,本题的正确答案是选
11、项C。第12题:参考答案:B答案解析:本题考查Java的简单数据类型的变量定义及Java的命名约定。Java中的命名规则中包含如下几条: (1)变量名、方法名首单词小写,其余单词只有首字母大写; (2)常量完全大写; (3)变量命名采用完整的英文描述符,第一个字母小写,任何中间单词的首字母大写。 Java语言区分大小写。简单数据类型布尔型用boolean表示。布尔型数据只有两个值: true(真)和false(假)。 经过上述分析可知,选项B和选项C都能正确的定义一个布尔型变量,但是选项C的变量名CANCELED不符合Java中的命名规则,而选项B的变量名符合变量名的命名规则。因此,选项B是符
12、合规范的布尔变量定义语句。 本题的正确答案是选项B。第13题:参考答案:A答案解析:本题考查Java中的数组。数组是一种复合数据类型,在Java中数据是作为对象来处理的。数组是有限元素的有序集合,数组中的元素具有相同的数据类型,并可以用统一的数据名和下标来唯一确定其元素。 经过上述分析可知,本题的正确答案是选项A。第14题:参考答案:D答案解析:第15题:参考答案:答案解析:本题考查Java的表达式运算。 程序中包含四条输出语句,运行时首先计算表达式的结果,然后将结果进行输出。 第一个表达式34+56-6,运算结果为84,然后输出。因此,运行结果的第一行显示“84”。 第二个表达式26*2-3
13、,*号代表乘法,运算结果为49,然后输出。因此,运行结果的 第二行显示“49”。到此,可以判断,本题的正确答案是选项A。第16题:参考答案:D答案解析:本题考查JDK目录结构。JDK包含如下目录: (1)bin目录,包含有编译器、解释器和许多工具 (2)demo目录,包含各种演示例子 (3)include目录,包含Win子目录,都是本地方法文件 (4)jre目录,是Java程序运行环境的根目录 (5)lib目录,包含Java库文件 经过上述分析可知,本题的正确答案是选项D。第17题:参考答案:C答案解析:本题考查字符串的使用。String类提供concat(str)方法,该方法将当前字符串对象
14、与指定str字符串相连。题目程序中生成两个字符串变量str1和str2,并为其赋值,然后生成一个字符串变量str3,该字符串变量的值为表达式str1.concat(str2)的结果。表达式str1.concat(str3)是把字符串str1与字符串str2相连,结果为“abcABC”。 因此,程序的运行结果是“abcABC”。本题的正确答案是选项C。第18题:参考答案:A答案解析:第19题:参考答案:C答案解析:本题考查Java流程控制语句。for浯句和while语句是循环语句,swithch语句是多分支语句,而continue语句是跳转语句。continue语句跳过循环体中下面尚未执行的语句
15、,回到循环体的开始继续下一轮的循环。跳转语句除了continue之外,还有break语句和return语句。 本题的正确答案是选项C。第20题:参考答案:D答案解析:本题考查java.awt.event包中定义的适配器类。该包中定义的适配器类包括以下几个: (1)ComponentAdapter,构件适配器 (2)ContainerAdapter,容器适配器 (3)FocusAdapter,焦点适配器 (4)MouseAdapter,鼠标适配器 (5)KeyAdapter,键盘适配2S (6)MouseMotionAdapter,鼠标运动适配器 (7)WindowAdapter,窗口适配器 显
16、然,选项D中的FrameAdapter不属于事件适配器类。本题的正确答案是选项D。第21题:参考答案:D答案解析:第22题:参考答案:C答案解析:本题考查Java的一元算术运算符。一元运算符中包含如下两个: (1)增量运算符+,将操作数加1。 (2)减量运算符-,将操作数减1。 这两个运算符在使用过程中,如果将增量运算和减量运算表达式再作为其他表达式的操作数使用时,i+与+i是有区别的:i+在使用i之后,使i的值加1,因此执行完 i+后,整个表达式的值为i,而i的值变为i+1;+i在使用i之前,使i的值加1,因此执行完+i后,整个表达式的值和i的值都为i+1。i-与-i的区别和i+与+i的区别
17、类似。 本题程序中,首先声明a、b、c、d四个变量,并为其赋值。然后计算表达式a+*b+c*-d的结果,根据上述运算规则,在计算表达式时,a的值为10,d的值为5。把值带入表达式,即计算10*4+20*5,结果为140。计算完表达式后,a的值为11,d的值为5。 因此,本题的正确答案是选项C。第23题:参考答案:B答案解析:本题考查运算符的用法。Java对“+”运算符进行了扩展,使得它能进行字符串的连接。不仅如此,通过“+”运算符还能够将字符串和其他类型的数据进行连接,其结果是字符串,例如“abc”+23得到字符串“abc23”。一般说来,如果“+”运算符的第个操作数是字符串,则Java系统会
18、自动将后续的操作数类型转换为字符串类型,然后再进行连接;如果“+”运算符的第一个操作数不是字符串,则运算结果由后续的操作数决定。题目中生成了x、y、z三个整型变量和一个字符串变量s,然后输出表达式s+x+y+z的结果。由于第一个操作数是字符串,因此自动将后续整型数x、y、z转换为字符串,然后进行连接,结果为xyz345。 因此,本题的正确答案是选项B。第24题:参考答案:D答案解析:本题考查Java的I/0流。java.io包中处理字节流的抽象类有InputStream和 OutputStream。InputStream用于输入,它包含7个子类:Output用于输出,它包含5个子类。 因此,本
19、题的正确答案是选项D。第25题:参考答案:C答案解析:本题考查Java的内存读写。在java.io中,还提供了ByteArrayOutputStrem、 ByteArrayInputStrem 和 StringBufferInputStream类可直接访问内存,它们是 InputStream 和 OutputStream的子类。用ByteArrayOutputStrem可向字节数组写入数据;ByteArrayInputStrem可从字节数组中读取数据。因此,本题的正确答案是选项C。第26题:参考答案:B答案解析:本题考查对象的串行化。Java中,如果想保存程序中的对象,以便在该程序的后运行中使
20、用,可以使用对象的串行化。一个类只有实现了Serialiazable接口,它的独享才是可串行化的。因此,如果要串行化某些类的对象,这些类就必须实现 Serialiazable接口。因此,本题的正确答案是选项B。第27题:参考答案:B答案解析:本题考查算术运算符%。运算符“%”是取模运算符,也叫求余运算符,用来求两个数的余数。在Java语言中,取模运算符%,其操作数可以是整型也可以是浮点型。如果操作数是整型,则结果为整型;如果操作数是浮点型,其结果也为浮点型数据。 题目中第一个输出语句是输出表达式i%j的结果,其中i和j都是整型,值分别为10和3,10除以3的余数是1。所以,第一个输出语句输出的
21、结果是1。 题目中第一个输出语句是输出表达式m%n的结果,其中m和n都是float型,值分别为213.5和4.0,213.5除以4.0的余数是1.5,第二个输出语句输出的值为1.5。 因此,本题的正确答案是选项B。第28题:参考答案:A答案解析:本题考查Java的输入/输出。DataOutputStream是字节输出流,字节数据是以文件输出流FileOutputStream对象的形式作为DataOutputStream的构造方法的参数出现。因此,划线处应填入FileOutputStream。本题的正确答案是选项A。第29题:参考答案:D答案解析:本题考查Applet的使用。将Applet嵌入在
22、htm1文件中,必须使用特殊的 htm1标记Applet,实现Applet的运行。该标记中必须定义CODE、WIDTH和 HEIGHT三个属性。CODE属性指定包含Applet字节码的文件名;WIDTH和 HEIGHT属性定义了Applet显示区以像素为单位ide高度和宽度。因此,本题的正确答案是选项D。第30题:参考答案:A答案解析:本题考查Applet的显示。和Applet显示相关的有三个方法: (1)paint()方法。Applet的paint()方法具体执行Applet的绘制。该方法的参数是一个Graphics类的对象,该对象相当于Applet的画笔,通过它向Applet中显示信息。
23、在调用paint()方法时,由浏览器将该对象传递给paint()方法。 (2)update()方法,该方法用于更新Applet的显示。执行时,该方法首先清除背景,再调用paint()方法完成Applet的具体绘制。用户定义的Applet一般不用重写该方法。 (3)repaint()方法,该方法用于Applet的重新显示,它调用update方法实现对Applet的更新。Applet程序可以在需要显示更新时调用该方法,通知系统刷新显示。 因此,如果要在Applet中显示特定的文字、图形等信息,可以在用户定义的Applet类中重写paint()方法。本题的正确答案是选项A。第31题:参考答案:D答案
24、解析:本题考查Applet。Applet运行时,首先由浏览器调用init()方法,通知该Applet已经被加载到浏览器中,使Applet执行一些基本的初始化。该方法不是必须的,可以没有,Applet可以正常编译和运行。因此,本题的正确答案是选项D。第32题:参考答案:A答案解析:本题考查线程的使用。Java中可以通过实现Runnable接口来创建线程。通过这种方式创建线程是把Runnable的一个对象作为参数传递给Thread类的一个构造方法,该对象提供线程体run()。而题目中的程序只是实现了Runnable接口,而并没有调用Thread类的构造方法创建线程对象。程序只是生成一个Test类对
25、象t,不是线程对象。然后调用该对象的start()方法,而在Test类中没有定义start()方法。因此,题目中的程序不能通过编译,因为start()方法在Test类中没有定义。 本题的正确答案是选项A。第33题:参考答案:B答案解析:本题考查线程的使用。Java中可以通过实现Runnable接口来创建线程。通过这种方式创建线程是把Runnable的一个对象作为参数传递给Thread类的一个构造方法,该对象提供线程体run()。如果题目中Test实现Runnable接口,则创建线程的方法是Thread t=new Thread(new Test()。Java中另一种创建线程的方法是通过继承 T
26、hread类,重写其中的run()方法定义线程体,然后直接创建该子类的对象即可创建线程。题目中使用Thread t=new Test()语句创建线程,其中直接创建Test类对象,可知该类一定是继承Thread类。 因此,本题的正确答案是选项B。第34题:参考答案:C答案解析:本题考查线程的基本操作。Java中提供了interrupt方法用来中断一个线程,当调用一个线程的interrupt方法时,即向该线程发送一个中断请求。需要注意的是,在调用线程的interrupt方法时,如果该线程由于调用了sleep方法或wait方法而正在处于阻塞状态,那么线程会抛出一个InterrupterExcepti
27、on异常。因此,本题的正确答案是选项C。第35题:参考答案:C答案解析:本题考查线程的生命周期。线程的生命周期主要分为以下几个状态:新建状态、可运行状态、运行状态、阻塞状态和终止状态。各周期之间的转换关系及控制方法如下图所示: 二、填空题(每空2分,共30分)第36题:参考答案:正确性详细解答:本题考查软件工程中需求规格说明书的评审。衡量需求规格说明书好坏的标准按重要性次序排列为:正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性和可追踪性。因此,划线处应填入“正确性”。第37题:参考答案:白盒详细解答:本题考查软件工程的测试。测试一般有两种方法;黑盒测试和白盒测试。黑盒测试不考虑
28、程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒 (箱)”或“White Box”。第38题:参考答案:顺序详细解答:本题考查数据结构的队列。队列是一种特殊的线性表,即限定在表的一端进行删除,在表的另一端进行插入操作的线性表。允许删除的一端叫做队头,允许插入的一端叫做队尾。线性表的存储结构主要分为顺序存储结构和链式存储结构。当队列用链式存储结构实现时,就称为链队列;当队
29、列用顺序存储结构实现时,就称为循环表。因此,本题划线处应填入“顺序”。第39题:参考答案:ACBDFEHGP详细解答:本题考查数据结构中二叉树的遍历。根据对二叉树根的访问先后顺序不同,分别称为前序遍历、中序遍历和后序遍历。这三种遍历都是递归定义的,即在其子树中也按照同样的规律进行遍历。下面就是中序遍历方法的递归定义。 当二叉树的根不为空时,依次执行如下3个操作: (1)按中序遍历左子树 (2)访问根结点 (3)按中序遍历右子树 根据如上前序遍历规则,来遍历本题中的二叉树。首先遍历F的左子树,同样按中序遍历。先遍历C的左子树,即结点A,然后访问C,接着访问C的右子树,同样按中序遍历C的右子树,先
30、访问结点B,然后访问结点D,因为结点D没有右子树,因此遍历完C的右子树,以上就遍历完根结点F的左子树。然后访问根结点F,接下来遍历F的右子树;同样按中序遍历。首先访问E的左子树,E的左子树为空,则访问结点E,然后访问结点E的右子树,同样按中序遍历。首先访问G的左子树,即H,然后访问结点G,最后访问G的右子树P。以上就把整个二叉树遍历一遍,中序遍历的结果为ACBDFEHGP。因此,划线处应填入“ACBDFEHGP”。第40题:参考答案:实体型详细解答:本题考查数据库的E-R图。E-R模型中,有三个基本的抽象概念:实体、联系和属性。E-R图是E-R模型的图形表示法,在E-R图中,用矩形框表示实体,
31、菱形框表示联系,椭圆形框表示属性。因此,划线处应填入“实体”或“实体集”或“Entity”。第41题:参考答案:sizeof详细解答:C语言中sizeof是一种单目操作符,如C语言的其他操作符+、-等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。在Java中,所有数据类型的长度都固定,不需要sizeof保留字。因此,本题的正确答案是sizeof。第42题:参考答案:|详细解答:本题考查布尔逻辑运算符。Java中,布尔逻辑运算符共有三种,即逻辑与 (&)、逻辑或()、逻辑非(!)。因此,划线处应填入“”。第43题:参考答案:br
32、eak详细解答:本题考查switch多分支语句。switch语句的一般格式为: switch(expression) case value1: statement1; break; case value2: statement2; break; case valueN: sataementN; break; default: defaultStatement; switch语句中,break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因此,划线处应填入break。第44题:参考答案:new详细解答:本题考查构造方法。构造方法是为对象初始化操作编
33、写的方法,用来定义对象的初始状态。构造方法必须和类名相同,用户不能直接调用它,只能通过new关键字自动调用。因此,划线处应填入“new”。第45题:参考答案:编译器详细解答:本题考查Java的Class类。Class类是由编译器自动生成对象的一个特殊类,它伴随每个类。因此,划线处应填入“编译器”或“Compiler”。第46题:参考答案:myDir详细解答:本题考查File类的使用。在Java中,目录也当作文件,因此File对象可以表示一个磁盘文件,也可以表示某个目录。程序中创建一个名为myDir的File对象,对应“C:/Program Files”这个目录。File类提供了一些文件信息测试
34、方法,其中 isDirectory()方法用于测试File对象表示的是否为目录。因此,划线处应填入“myDir”。第47题:参考答案:start详细解答:本题考查Applet的运行。Applet运行的生命周期中,首先由浏览器调用init()方法,通知该Applet已经被加载到浏览器中,使Applet执行一些基本初始化操作。 在init()方法完成后,将调用start()方法,使Applet成为激活状态。因此,划线处应填入“start”。第48题:参考答案:run详细解答:本题考查线程。Java中的线程是由线程类的run()方法定义,该方法中定义线程的具体行为。线程开始执行时,也是从它的run(
35、)方法开始执行,就像Java Application从main()开始一样。因此,本题的划线处应填入“run”。第49题:参考答案:FlowLayout详细解答:本题考查AWT的布局管理器。AWT中布局管理器相关的类包括: FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。因此,划线处应填入“FlowLayout”第50题:参考答案:Thread详细解答:本题考查线程模型。Java中的线程模型包含三部分:一个虚拟的CPU、该 CPU执行的代码、代码所操作的数据。该线程模型在Java中是由java.lang.Thread类进行定义和描述的。程序中的线程都是Thread类的实例。因此,划线处应填入“Thread”。更多试卷请见麦多课文库