1、国家二级( JAVA)笔试模拟试卷 173及答案与解析 1 算法分析的目的是 ( )。 ( A)找出数据结构的合理性 ( B)找出算法中输入和输出之间的关系 ( C)分析算法的易懂性和可靠性 ( D)分析算法的效率以求改进 2 在数据流图 (DFD)中,带有名字的箭头表示 ( )。 ( A)控制程序的执行顺序 ( B)模块之间的调用关系 ( C)数据的流向 ( D)程序的组成成分 3 阅读下面程序 class Test implements Runnable public static void main(String args) Test t=new Test(); t.start(): p
2、ublic void run() 下列关于上述程序的叙述正确的是 ( A)程序不能通过编译,因为 start()方法在 Test类中没有定义 ( B)程序编译通过,但运行时出错,提示 start()方法没有定义 ( C)程序不能通过编译,因为 run()方法没有定义方法体 ( D)程序编译通过,且运行正常 4 阅读下 面代码 public class Test implements Runnable public void run(Thread t) System.out.println(“Running“); public static void main(String args) Thre
3、ad tt=new Thread(new Test(); tt.start(); 代码运行的结果是 ( A)将抛出一个异常 ( B)没有输出并正常结束 ( C)输出 “Running”并正常结束 ( D)程序第 2行将出现一个编译错误 5 下列说法中,正确的是 ( )。 ( A)类是变量和方法的集合体 ( B)数组是无序数据的集合 ( C)抽象类可以实例化 ( D)类成员数据必须是共有的 6 对排序文件的初始状态不作任何要求的排序方法有 ( )。 ( A)直接插入和快速排序 ( B)直接插入和归并排序 ( C)归并和快速排序 ( D)归并和直接选择排序 7 二叉树是结点的有限集合,它 ( )根
4、 结点。 ( A)有 0个或 1个 ( B)有 0个或多个 ( C)有且只有 1个 ( D)有 1个或 1个以上 8 在七类内聚中具有最强内聚的一类是 ( )。 ( A)功能内聚 ( B)通讯内聚 ( C)偶然内聚 ( D)顺序内聚 9 在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的 ( A)安全性 ( B)一致性 ( C)可理解性 ( D)合理性 10 对下列二叉树进行中序遍历的结果是 ( A) ACBDFEG ( B) ACBDFGE ( C) ABDCGEF ( D) FCADBEG 11 若某链表最常用的操作是在最后一个结点之后插入一个结
5、点或删除最后一个结点,则采用 _存储方式最节省时间。 ( A)单链表 ( B)双链表 ( C)单循环链表 ( D)带头结点的双循环链表 12 在软件工程中, 白箱测试法可用于测试程序的内部结构。此方法将程序看做是 _。 ( A)循环的集合 ( B)地址的集合 ( C)路径的集合 ( D)目标的集合 13 在 Frame容器中使用 FlowLayout管理布局时,若要设定紧凑排列,则需要调用下列 _方法。 ( A) setLayout(newFlowLayout() ( B) add() ( C) setVisible(true) ( D) pack() 14 下面有关构造方法的说法中错误的是
6、( )。 ( A)构造方法名与类名必须相同。 ( B)构造方法往往是给对象赋初值,无返回值,所以构造方法的返回类型是void。 ( C)构造方法不能被程序调用 ( D)定义一个类时,若没有定义该类的构造方法,则 Java语言会提供默认的构造方法。 15 下列哪个包中含有压缩文件输入流 ZiplnputStream类 ?( ) ( A) iava.io ( B) java.util.zip ( C) java.util.jar ( D) java.awt 16 下列注释中,不正确的是 ( )。 ( A) /*注释文字 */ ( B) /*注释文字 */ ( C) /*注释文字 ( D) /注释文
7、字 17 下列关于线程组的说法中,错误的是 ( )。 ( A)一个线程只能在创建时设置其线程组 ( B)线程组使一组线程可以作为一个对象进行统一处理和维护 ( C)在应用程序中线程可以独立存在,不一定要属于某个线程组 ( D) 线程组由 java.lang包中的 ThreadGroup类来实现 18 下列不属于 FileInputStream输入流的 read()成员函数的是 ( )。 ( A) int read (byte b, int offset, int len) ( B) int read (int line) ( C) int read () ( D) int read (byte
8、 b) 19 执行下面程序后输出的正确结果是 public class Test public static void main(String args) byte x=3, y=4; long r=80L; System out print(r/y); System out print(“, “); System out print(x/y); ( A) 20.0,1 ( B) 20.0,1.0 ( C) 20,0 ( D) 20,1.0 20 假设 i是 int类型的变量,并初始化为 1,则下列 ( )是合法的条件语句。 ( A) if (i) ( B) if (i =3) ( C) if
9、 (i=2) ( D) if (true) 21 若数组 a定义为 inta=new int 34,则 a是 ( )。 ( A)一维数组 ( B)二维数组 ( C)三维数组 ( D)四维数组 22 不属于 Write 类子类的是 ( )。 ( A) PrintWrite 类 ( B) RcaderWrite 类 ( C) OutputStream Writer 类 ( D) FileWrite 类 23 关于以下代码段的说法中正确的是 ( )。 (1)String s=“abcde“; (2)StringBuffer s1=new StringBuffer(“abcde“); (3)if(s.
10、equals(s1) (4)s1=null; (5)if(sequals(s) (6)s=null: ( A)第 (1)行编译错误, String 的构造器必须明确调用 ( B)第 (3)行编译错误,因为 s与 s1有不同的类型 ( C) 编译成功,但执行时在第 (5)行有异常抛出 ( D)编译成功,执行过程中也没有异常抛出 24 当检索一个压缩文件时,首先要建立压缩文件输入流对象,该对象 ( )。 ( A)以 InputSmeamReader对象为参数 ( B)以 BufferedReader对象为参数 ( C)以选中的压缩文件为参数 ( D)以 FilelnputStream对象为参数 2
11、5 调用线程的下列方法,不会改变该线程在生命周期十状态的方法是 ()。 ( A) yeild() ( B) wait() ( C) sleep() ( D) isAlive() 26 阅读下面程序importjava.io.*;publicclassTypeTransitionpublicstaticvoidmain(Stringargs)chara=h;iNti=100;intj=97;intaa=a+i;System.out.println(“aa=“+aa);charbb=(char)j;System.out.println(“bb=“+bb);如果输出结果的第二行为 bb=a,奸么第一
12、行的输出是 ()。 ( A) aa=I ( B) aa=204 ( C) aa=v ( D) aa=156 27 线程组是一个 Java特有的概念,在 Java中,线程组是类 ThreadGronp的对象,每个线程都隶属于 ( )个线程组。 ( A) 0 ( B) 1 ( C) 2 ( D)可以多于 2 28 下面各选项中正确的是 ( )。 : long 1 = 4990 : int i = 4L : float f=1.1 : double d=4 ( A) 、 ( B) 、 、 ( C) 、 ( D) 、 29 当启动 Applet程序时,首先调用的方法是 ( )。 ( A) stop()
13、 ( B) init() ( C) start() ( D) destroy() 30 下列 Java布局管理器中,简单地将组件由左到右排列,排满一行,自动移到下一行的布局管理器是 ( )。 ( A) FlowLayout ( B) BorderLayout ( C) GfidLayout ( D) BoxLayout 31 给定下面的代码: int i=1,j=10; do if(i+ -j) continue; while(i 5) 执行完之后, i与 j的值分别是多少 ? ( ) ( A) i=6,j=5 ( B) i=5,j=5 ( C) i=6,j=4 ( D) i=5,j=6 32
14、 下面程序的输出结果是 ( )。 public class Sun public static void main(String args ) int n=4 ,sum=0; while(n 0) sum+=n; n-; System.out.println(“sum is “+sum); ( A) sum is 10 ( B) sum is 4 ( C) 10 ( D) 4 33 在压缩文件流中,下列哪个方法是用于缓冲阅读器阅读文本的方法 ? ( ) ( A) readLine() ( B) getNextEntry() ( C) bufferRead() ( D) loadZipFile(
15、) 34 下面程序段的输出结果为 package test; public class Class A int x=20; static int y=6; public static void main(String args) Class B b=new Class B(); b.go(10); System.out.println(“x“+b.x); class ClassB int x; void go(int y) ClassA a=new ClassA(); x=a.y; ( A) x=10 ( B) x-20 ( C) x=6 ( D)编译不通过 35 下列哪个类的对象负责表格大小
16、的确定、内容的填写、赋值、表格单元更新的检测等等与表格内容有关的属性及其操作 ? ( A) AbstractTableModel ( B) TableModel ( C) JTable ( D) TableModelable 36 问题处理方案的正确而完整的描述称为【 】。 37 在结构化分析使用的数据流图 (DFD)中,利用【 】对其中的图形元素进行确切解释。 38 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 39 数组、堆栈、 _和链表都是线性数据结构。 40 将代数式转换成程序设计中的表达式为【 】。 41 Java 语言中如果要使用某个包中的类时
17、,需要使用【 】导入。 42 Java语言中,移位运算符包括:、和【 】。 43 阅读下面代码: import java.awt.*; public class Exam11_1 private Frame f; private Button b1,b2,b3,b4; public static void main(String args Exam11_1 that = new Exam11 1 (); that.go(); public void go() _; f.setLayout(new FlowLayout() ; b1 = new Button (“Button 1“); b2 =
18、 new Button (“Button 2“); b3 = new Button (“Button 3“); b4 = new Button (“Button 4“); f.add (b1); f.add (b2); f.add (b3); f.add (b4); f.pack (); f.setVisible (true); 请在程序中画线处填写正确的语句【 】,以便编译运行程序后得到正确的结果。 44 传递给实现了 java awt event MouseMotionListener接口的类中 mouse Dragged()方法的事件对象是,【 】类。 45 请阅读下列程序代码,然后将程
19、序的执行结果补充完整。 程序代码: public class throwsException static void Proc(int sel) throws ArithmeticException, ArrayIndexOutOfBoundsException System.out.println(“In Situation“+sel); if(sel=0) System.out.println(“no Exception caught“); return; else if(sel=1) int iArray=new int4; iArray1=3; public static void m
20、ain(String args) try Proc(0); Proc(1); catch (ArrayIndexOutOfBoundsException e) System.out.println(“Catch“+e); finally System.out.println(“in Proc finally“); 执行结果 In Situation 0 no Exception caught 【 】 in Proc finally 46 _ 是 Java的特殊应用程序。它嵌入到 HTML中,发布到互联网上。 47 如果容器采用 _ 进行布局管理,在用 add()方法添加构件的时候,必须注明添加
21、到哪个位置。 48 Java语言中如果要 使用某个包中的类时,需要使用【 】导入。 49 在 Java中,字符串是作为【 】出现的。 50 Java语言的循环语句包括 for语句、 dowhile语句和【 】语句。 国家二级( JAVA)笔试模拟试卷 173答案与解析 1 【正确答案】 D 【试题解析】 算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。 2 【正确答案】 C 【试题解析 】 在数据流图中,用标有名字的箭头表示数据流,它相当于一条管道,并有一级
22、数据 (信息 )流经它。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。 3 【正确答案】 A 【试题解析】 创建线程有两种方法:实现 java.lang.Runnable 接口;继承Thread 类并重写 run()方法。 start()是 Thread 类中的方法,而本程序中的 Test类实现了 Runnable 接口, Runnable接口中只定义了一个抽象方法 run(),故 Test类不能调用 start()方法。编译时会出现 start()方法未定义的错误。 4 【正确答案】 D 5 【正确答案】 A 6 【正确答案】
23、 A 【试题解析】 只有归并排序要求待排序文件 “部分排序 ”(把待排序的文件分成若干个子文件,每个子文件内的记录是已排序的 )。 7 【正确答案】 A 【试题解析】 二叉树是一种特殊的树,它要求非空二叉树只有一个根节点,所以它可以是空树。答案为 A。 8 【正确答案】 A 9 【正确答案】 C 【试题解析】 结构化程序设计方法设计出的程 序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。 10 【正确答案】 A 【试题解析】 二叉树的中序遍历递归算法为:如果根不空,则 (1)按中序次序访问左子树: (2)访问跟结点; (3
24、)按中序次序访问右子树。否则返回。本题中,根据中序遍历算法,应首先按照中序次序访问以 C为根结点的左子树,然后再访问根结点 F,最后才访问以 E 为根结点的右子树。遍历以 C为根结点的左子树同样要遵循中序遍历算法,因此中序遍历结果为 ACBD;然后遍历根结点 F; 遍历以 E为根结点的右子树,同样要遵循中序遍历算法,因此中序遍历结果为 EG。最后把这三部分的遍历结果按顺序连接起来,中序遍历结果为 ACBDFEG。因此,本题的正确答案是 A。 11 【正确答案】 D 【知识模块】 数据结构与算法 12 【正确答案】 C 【知识模块】 软件工程基础 13 【正确答案】 D 【知识模块】 编写用户界
25、面程序 14 【正确答案】 B 【试题解析】 构造方法是给对象赋初值,所以没有返回值,但不需要用 void来声明。 15 【正确答案】 B 【试题解析】 ZipInputStream类虽然继承了 java.io包中的 InflaterInputStream类,但是它本身属于 java.util.zip 包。 16 【正确答案】 C 【试题解析】 Java中可以采用三种注释方式: /用于单行注释。 /* */用于多行注释。 /* */是 Java所特有的 doc注释。只有 C是不正确的注释形式。 17 【正确答案】 C 【试题解析】 Java语言中,每个线程都必须归属于一个线程组。线程组可以把一
26、组线程作为单个对象进行统一的处理或 维护。线程在创建时必须显示确定其归属的线程组,其他任何时候都不允许更改线程所属的线程组。线程创建时默认继承父进程的线程组,线程组由 java.lang 包中的 ThreadGroup 类来实现。 18 【正确答案】 B 【试题解析】 打开 FileInputStream输入流,就可以从里面读取信息。 read()成员函数有以下几种: int read();int read (byte b)和 int read (byte b, int offset,int len)。 19 【正确答案】 C 【 试题解析】 本题考查 Java语言的二元运算符的使用。 Jav
27、a中的二元运算符适用于所有数值型数据类型,包括整型和浮点型。但考生需要注意,如果两个操作数全为整型,那么,只要其中一个为 long 型,则表达式结果为 long型;其他情况下,即使两个操作数全是 byte或 short型,表达式结果也是 int型;如果操作数为浮点型,那么只要其中一个为 double型,表达式结果就是 double型;只有两个操作数全是 float型或其中一个是 float型而另外一个是整型时,表达式结果是 float型。所以选项 C为正确答案。考生如果理 解了 L 的含义,就能很容易回答。考生务必注意操作数类型不同时,运算结果的类型,同时注意当 “/”和 “%” 运算中除数为
28、 0时会产生异常。 20 【正确答案】 D 【试题解析】 条件语句的 “条件 ”值应该是布尔类型,选项 A中, 1不是布尔类型的值;选项 B 中, i =3值为 int类型;选项 C中, i=2的值不是布尔类型;选项 D正确,该语句的含义是无论何种情况下都执行。 21 【正确答案】 B 22 【正确答案】 B 23 【正确答案】 D 24 【正确答案】 D 25 【正确答案】 D 26 【正确答案】 B 27 【正确答案】 B 【试题解析】 本题是对线程组概念的考查。线程组是一个 Java特有的概念,在Java中,线程组是类 ThreadGroup 的对象,每个线程都隶属于唯一一个线程组,这个
29、线程组在线程创建时指定并在线程的整个生命期内都不能更改。可以通过调用包含 ThreadGroup 类型参数的 Thread 类构造函数来指定线程所属的线程组,若没有指定,则线程默认地隶属于名为 system的系统线程组。在 Java中,除了预建的系统线程组外,所有线程组都必须显式创建。在 Java中,除系 统线程组外的每个线程组又隶属于另一个线程组,可以在创建线程组时指定其所隶属的线程组,若没有指定,则默认地隶属于系统线程组。这样,所有线程组组成了一棵以系统线程组为根的树。 Java允许对一个线程组中的所有线程同时进行操作,比如可以通过调用线程组的相应方法来设置其中所有线程的优先级,也可以启动
30、或阻塞其中的所有线程。 Java的线程组机制的另一个重要作用足线程安全。线程组机制允许通过分组来区分有不同安全特性的线程,对不同组的线程进行不同的处理,还可以通过线程组的分层结构来支持不对等安全措施的采用。 Java的 ThreadGroup 类提供了大量的方法来方便我们对线程组树中的每一个线程组以及线程组中的每一个线程进行操作。 28 【正确答案】 C 【试题解析】 此题的考点是数字的表示方法和基本数据类型间的自动转换。没有小数点的数字被认为是 int型数,带有小数点的数被认为是 double型的数,其他的使用在数字后面加一个字母表示数据类型,加 l或者 L是 long 型,加 d 或者 D
31、是 double,加 f或者 F是 float。可以将低精度的数字赋值给高精度的变量,反之,则需要进行强制类犁转换。例如,将 int、 short、 byte型 数字赋值给 long型变量时不需要显式的类型转换,反之,将 long型数字赋值给 byte、 short、 int型变量时需要强制转换 (int a=(int)123L)。 Int I=4L不对,应该去掉后面的 L,doubled-34.4需要在后面加 do 29 【正确答案】 B 【试题解析】 本题考查 Applet程序的运行方式。在 Applet运行时,首先由浏览器调用 init()方法,所以选项 B 正确。初始化完成后,将调用
32、start()方法时 Applet成为激活状态。当 Applet被覆盖时,可用 stop()方法 停止线程。关闭浏览器时调用 destroy(),彻底终止 Applet,从内存中卸载并释放该 Applet的所有资源。Applet的生命周期及其运行方式是考试重点,应该牢记。 30 【正确答案】 A 【试题解析】 本题考查 Java中布局管理器的知识。布局管理器中流式布局管理器 (FlowLayout)的布局方式简单地将组件由左到右排列,排满一行,自动移到下一行。故本题答案是 A。 31 【正确答案】 D 【试题解析】 该题考查对自增自减运算符的理解。假如 op是操作数,自增自减运算符有下面几种形
33、式。 +op、 op+,表示对操作数 op加 1,其中, +op表示先对 op加 1然后再取其值,而。 op+表示先取其值,然后再对 op进行加 1。 -op、 op-,表示对操作数 op 进行减 1操作,其中, -op 表示先对 op 减 1然后再取其值,而 op-表示先取其值,然后再对 op进行减 1。在本题中,当进行到 i=5时退出循环,此时 j为 6。故本题答案是 D。 32 【正确答案】 A 【试题解析】 该题考查对 while语句的理解。该程序是从 1 4的累加并输出结果。 C、 D显然是错的,没有 sum is, B 没有累加。故本题答 案是 A。 33 【正确答案】 A 34
34、【正确答案】 C 【试题解析】 本题考查在 Java中静态变量 (类变量 )的用法。在题目程序段中生成了一个 static int y=6类变量,在 ClassA中调用的 b.go (10),只不过是在ClassB 中的一个局部变量,通过调用 ClassB中的 go方法可以生成一个 ClassA对象,并给这个新生成的对象赋以 ClassA中的类变量 y的值。从 main()方法作为入口执行程序,首先生成一个 ClassB的对象,然后 b.go(10)会调用 ClassA,会给 x和 y赋值 , x=a.y后, x值为 6,再返回去执行 System.out.println(“x=“+b.x)语
35、句,输出为 x=6,可见,正确答案为逸项 C。 35 【正确答案】 A 36 【正确答案】 算法 【试题解析】 算法是指解题方案的准确而完整的描述。 37 【正确答案】 数据字典 或 DD 【试题解析】 数据字典是结构化分析方法的核心。数据字典把不同的需求文档和分析模型紧密地结合在一起,与各模型的图形表示配合,能清楚地表达数据处理的要求。概括地说,数据字典的作用是对 DFD中出现的被命名的图 形元素的确切解释。 38 【正确答案】 可重用性 【试题解析】 本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高了软件的可重用性。 39 【正确答案】 队列 4
36、0 【听力原文】 ct_ctjbm_blankf_05755(20092) 40 【正确答案】 【 】 SQRT(x2+y2)/(a+B) 41 【正确答案】 import 42 【正确答案】 43 【正确答案】 f=new Frame(“GUI example“) 【试题解析】 本题考查容器和布局管理器的基本知识,属于综合题。在本程序里,缺少建立 Frame 的语句,而且该 Frame的名字为 GUI example,而 4个按钮的布局方式被压缩至最小,因此是 FlowLayou 布局方式。 44 【正确答案】 MouseEvent 【试题解析】 MouseEvent鼠标事件实现鼠标单击、释
37、放、拖动、移动等。 45 【正确答案】 In Situationl 【试题解析】 本题考查考生阅读 Java程序的能力。题目程序看似复杂,但流程非常简单。程序的 public类是 throwsException,类中定义了 Proc(int sel)方法。程序入口是 main()方法,使用 try-catch-fmally来捕获 ArithmeticException 和ArrayIndexOutOfBounds Exception 异常,这两个异常是关于算术异常或数组索引越界的异常。执行 Proc(0)时,输出 In Situation0 和 no Exception caught 两条信息
38、;执行 Proc(1)时,输出 In Situation1 和 in Proc finally 两条信息。 整个程序并未发生异常。 46 【正确答案】 Applet 47 【正确答案】 BorderLayout 48 【正确答案】 import 【试题解析】 本题考查包的导入和使用。首先用 package语句说明一个包,该包的层次结构必须与文件目录的层次相同,否则,在编译时可能出现找不到包的问题。 Java语言中 java.lang包是编译器自动导入,其他包中的类必须用 import导入。 49 【正确答案】 对象 【试题解析】 本题考查考生对 Java中字符串的理解。 Java中的字符串和 C语言中的字符串是有区别的,在 C语言中,并没有真正意义上的字符串, C语言中的字符串就是字符数组,使用起来非常的灵活。而在 Java中,字符串常量是一个类String类,它和字符数组是不同的,字符串是作为对象出现的。 50 【正确答案】 while 【试题解析】 本题考查 Java语言的循环结构。 Java语言的循环结构包括 while循环,又称为 “当型 ”循环; do-while循环,又称为 “直到循环 ”; for循环,需要首先知道循环会执行多少次。循环结构是 Java流程控制中非常重要的结构,务必掌握,不仅要知道其 概念,更要灵活运用。