【1】 下列叙述中正确的是()。
〖A〗 程序执行的效率与数据的存储结构密切相关
〖B〗 程序执行的效率只取决于程序的控制结构
〖C〗 程序执行的效率只取决于所处理的数据量
〖D〗 以上说法均错误
程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。
【2】 下列与队列结构有关联的是()。
〖A〗 函数的递归调用
〖B〗 数组元素的引用
〖C〗 多重循环的执行
〖D〗 先到先服务的作业调度
队列的修改是依先进先出的原则进行的, D正确。
【3】 对下列二叉树进行前序遍历的结果为()。
〖A〗 DYBEAFCZX
〖B〗 YDEBFZXCA
〖C〗 ABDYECFXZ
〖D〗 ABCDEFXYZ
前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中, 首先访问根结点, 然后遍历左子树, 最后遍历右子树; 并且, 在遍历左右子树时, 仍然先访问根结点, 然后遍历左子树, 最后遍历右子树。前序遍历描述为: 若二叉树为空, 则执行空操作。否则:①访问根结点; ②前序遍历左子树; ③前序遍历右子树, C正确。
【4】 一个栈的初始状态为空。现将元素1, 2, 3, A, B, C依次入栈, 然后再依次出栈, 则元素出栈的顺序是()。
〖A〗 1, 2, 3, A, B, C
〖B〗 C, B, A, 1, 2, 3
〖C〗 C, B, A, 3, 2, 1
〖D〗 1, 2, 3, C, B, A
栈的修改是按后进先出的原则进行的, 所以顺序应与入栈顺序相反, 故选C。
【5】 下面属于白盒测试方法的是()。
〖A〗 等价类划分法
〖B〗 逻辑覆盖
〖C〗 边界值分析法
〖D〗 错误推测法
白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断 - 条件覆盖, 选择B。其余为黑盒测试法。
【6】 下面对对象概念描述正确的是()。
〖A〗 对象间的通信靠消息传递
〖B〗 对象是名字和方法的封装体
〖C〗 任何对象必须有继承性
〖D〗 对象的多态性是指一个对象有多个操作
对象之间进行通信的构造叫做消息, A正确。多态性是指同一个操作可以是不同对象的行为, D错误。对象不一定必须有继承性, C错误。封装性是指从外面看只能看到对象的外部特征, 而不知道也无须知道数据的具体结构以及实现操作, B错误。
【7】 软件设计中模块划分应遵循的准则是()。
〖A〗 低内聚低耦合
〖B〗 高耦合高内聚
〖C〗 高内聚低耦合
〖D〗 以上说法均错误
根据软件设计原理提出如下优化准则:① 划分模块时, 尽量做到高内聚、低耦合, 保持模块相对独立性, 并以此原则优化初始的软件结构。② 一个模块的作用范围应在其控制范围之内, 且判定所在的模块应与受其影响的模块在层次上尽量靠近。③ 软件结构的深度、宽度、扇入、扇出应适当。④ 模块的大小要适中。C正确。
【8】 下面描述中不属于数据库系统特点的是()。
〖A〗 数据共享
〖B〗 数据完整性
〖C〗 数据冗余度高
〖D〗 数据独立性高
数据库系统的特点为高共享、低冗余、独立性高、具有完整性等, C错误。
【9】 数据库设计过程不包括()。
〖A〗 概念设计
〖B〗 逻辑设计
〖C〗 物理设计
〖D〗 算法设计
数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。
【10】 有三个关系R、S和T如下:
则关系R和关系S得到关系T的操作是()。
〖A〗 自然连接
〖B〗 交
〖C〗 投影
〖D〗 并
关系R和关系S有公共域, 关系T是通过公共域的等值进行连接的结果, 符合自然连接, 选A。
【11】 下列命令中, 可用于编译Java程序的是
〖A〗 java
〖B〗 javac
〖C〗 appletviewer
〖D〗 javadoc
本题考查java中JDK工具。javac是Java编译命令, 能将源代码编译成字节码, 以class扩展名存入java工作目录中。java是Java解释器, 执行字节码程序, 该程序是类名所指的类, 必须是一个完整定义的名字。javadoc是 Java文档生成器, 对Java源文件和包以MML格式生成AP文档。appletviewer是Java Applet浏览器。选项B正确。所以本题答案为B。
【12】 下列变量名中不合法的是
〖A〗 x
〖B〗 student_id
〖C〗 Sep2012
〖D〗 8apples
变量名以字母、下划线或者美元符(4上面的¥)开头, 不能以数字开头, 后面跟字母、下划线、美元符、数字, 变量名对大小写敏感, 无长度限制。选项D以数字开头不合法, 选项D正确。所以本题答案为D。
【13】 下列运算符中, 结合方向是从右往左的是
〖A〗 =
〖B〗 &&
〖C〗 +
〖D〗 >
从上表可以看出从右向左的运算符只有选项A正确。所以本题答案为A
【14】 下列数据类型中, 不能执行" + "运算的是
〖A〗 boolean
〖B〗 int
〖C〗 char
〖D〗 String
boolean不能直接使用运算符号, 只能使用逻辑运算符&& ||, 选项A正确, 本题答案为A。
【15】 用于从循环中跳出的语句是
〖A〗 continue
〖B〗 break
〖C〗 stop
〖D〗 throw
A选项continue是跳出当前循环, 执行后面语句的意思, B选项break在某种条件出现时强行终止循环, 用于完全结束一个循环, 跳出循环体, 不仅可以结束所在的循环, 还可以结束外层循环, 在break后加上标签, 可以结束用此标签修饰的循环, C选项stop不是用来控制循环结构的关键字, 而是用来结束线程, 但是不推荐使用, D选项throw语句抛出一个异常, 一般是在代码块的内部, 当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常, 选项B正确, 本题答案为B。
【16】 列代码段执行后, a 的值为
int num = 4; int a = 10; switch (num) { case 3: a++; case 4: a = a + 2; case 8: a = a + 3; default: a = a + 4; }
〖A〗 20
〖B〗 11
〖C〗 12
〖D〗 19
本题考验的是switch case里的break语句, 当语句里没有break时会继续往下执行, 直到结束, 因此a = 10, 按顺序执行从case(4)开始, a = 10 + 2 = 12, a = 12 + 3 = 15, a = 15 + 4 = 19.D选项正确, 本题答案为D。
【17】 下列代码段执行后, y 的值为
int x, y = 0, d; x = 123; while (x != 0) { d = x % 10; y = y * 10 + d; x = x / 10; }
〖A〗 4
〖B〗 11
〖C〗 15
〖D〗 321
本题考验的是while语句, 只有当while ()条件不符合以后才结束, 所以本题只有当x = 0的时候y才会有最终值, 通过计算, 可以得到y最终为321。选项D正确, 所以本题答案为D。
【18】 下列代码段执行后, count 的值为
int count = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < i; j++) { count++; } }
〖A〗 4
〖B〗 6
〖C〗 16
〖D〗 25
本题考验双层for循环, 只有j<i的时候, count才会自加, 所以当i = 1时才正式开始运算count, 此时count = 1, 当i = 2时, count = 3, 当i = 3时, count = 6, 选项B正确, 所以本题答案为B
【19】 下列代码段执行后的结果是
int i = 0; int x = 5; int[] num = { 1, 2, 3, 4, 5 }; x--; while (++i < 5) { System.out.print(" " + num[x--]); }
〖A〗 1 2 3 4 5
〖B〗 5 4 3 2 1
〖C〗 4 3 2 1
〖D〗 5 4 3 2
当++i<5的时候, while语句才会结束, i = 1 num[4] = 5, i = 2 num[3] = 4, i = 3 num[2] = 3, i = 4 num[1] = 2, 因此最后输出结果为5432, 选项D正确, 本题答案为D。
【20】 关于下列Point类的说法中, 正确的是
class Point { int x, y; Point() { } Point(int x, int y) { } void point(int x, int y, int color) { } }
〖A〗 Point类中定义了3个构造方法
〖B〗 Point类中定义了2个构造方法, 分别在第3行和第5行
〖C〗 Point类中定义了2个构造方法, 分别在第3行和第4行
〖D〗 Point类定义有错误
第3行是Point类的无参构造器, 第4行是Point类的有参构造器, 第5行是默认修饰的类方法, 因此选项C正确, 本题答案为C。
【21】 下列关于内部类的说法中, 错误的是
〖A〗 内部类可以使用外部类的静态成员变量
〖B〗 内部类可以使用外部类的实例成员变量
〖C〗 内部类不可以使用外部类的方法中的局部变量
〖D〗 内部类不可用abstract声明为抽象类
内部类可以使用外部类的静态成员变量; 内部类可以使用外部类的实例成员变量; 内部类不可以使用外部类的方法中的局部变量; 内部类可以声明为abstract抽象类。
【22】 关于下列代码的说法中, 正确的是
public class Person { static int arr[] = new int[10]; public static void main(String args[]) { System.out.println(arr[9]); } }
〖A〗 编译时将产生错误
〖B〗 编译时正确, 运行时将产生错误
〖C〗 输出0
〖D〗 输出空
因为int是java的基本数据类型, 它的默认值是0, 所以本题答案为C.
【23】 下列代码中的第10行语句将执行的语句是
class Person { public void printValue(int i, int j) { //... } public void printValue(int i) { //... } } public class Teacher extends Person { public void printValue() { //... } public void printValue(int i) { //... } public static void main(String args[]) { Person t = new Teacher(); t.printValue(10); } }
〖A〗 第2行
〖B〗 第3行
〖C〗 第6行
〖D〗 第7行
多态的体现, 父类的引用指向子类的对象, 又传入参数10, 说明调用了int参数的方法, 子类中重写了这个方法就在第7行, 所以会执行第7行的语句。D选项正确, 本题答案为D。
【24】 下列代码中构造方法的返回类型是
public class Crowle { Crowle() { System.out.println("Greetings from Crowle"); } public static void main(String args[]) { Crowle c = new Crowle(); } }
〖A〗 null
〖B〗 integer
〖C〗 String
〖D〗 无
构造方法时用来初始化一个对象的, 并为实例变量赋予合适的初始值, 因此构造方法不需要返回类型。所以D选项正确, 本题答案为D。
【25】 String、StringBuffer都不能被继承, 因为其修饰符是
〖A〗 static
〖B〗 abstract
〖C〗 final
〖D〗 private
Java中, 字符串是作为对象出现的, 由java.lang.String和java.lang.StringBuffer定义, 分别用来处理长度不变和长度可变的字符串, 这两种类都被定义为final, 即参考数据类型。选项C正确, 本题答案为C。
【26】 下列代码的运行结果是
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 int[4]; iArray[1] = 3; } } public static void main(String args[]) { try { proc(0); proc(1); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("catch "+e); } finally { System.out.println("in proc finally"); } } }
〖A〗 In Situation0 no Exception caught In Situation1
〖B〗 In Situation0 no Exception caught In Situation1 catch java.lang. ArrayIndexOutOfBoundsException: 4 in proc finally
〖C〗 In Situation0 no Exception caught in proc finally
〖D〗 In Situation0 no Exception caught In Situation1 in proc finally
把proc(int sel) sel = 0和1时分别代入相应的if语句中即可。由此可得选项D正确, 本题答案为D。
【27】 下列代码的运行结果是
public class PassTest { float ptValue; public static void main(String args[]) { int val; PassTest pt = new PassTest(); val = 11; System.out.println("Original Int Value is:" + val); pt.changeInt(val); System.out.println("Int Value after Change is:" + val); pt.ptValue = 101f; System.out.println("Original ptValue is:" + pt.ptValue); pt.changeObjValue(pt); System.out.println("ptValue after Change is:" + pt.ptValue); } public void changeInt(int value) { value = 55; } public void changeObjValue(PassTest ref) { ref.ptValue = 99f; } }
〖A〗 Original Int Value is: 11 Int Value after Change is: 55 Original ptValue is: 101.0 ptValue after Change is: 99.0
〖B〗 Original Int Value is: 11 Int Value after Change is: 11 Original ptValue is: 101.0 ptValue after Change is: 101.0
〖C〗 Original Int Value is: 11 Int Value after Change is: 11 Original ptValue is: 101.0 ptValue after Change is: 99.0
〖D〗 Original Int Value is: 11 Int Value after Change is: 55 Original ptValue is: 101.0 ptValue after Change is: 101.0
changeInt方法只是传值, 但是val并不变, 所以val仍然是11, 后面两个方法都是将int类型转成float类型, 所以C选项正确, 本题答案为C。
【28】 下列代码的运行结果是
public class StringTest { public static void main(String args[]) { char chars[] = { 'J', 'a', 'v', 'a', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e' }; String s = new String(chars); String s1 = s.substring(3, 8); System.out.println(s1); } }
〖A〗 alan
〖B〗 lang
〖C〗 alang
〖D〗 alangu
本题将一个char类型数组转成一个字符串, 然后考验字符串的sunstring方法, 从下标index1开始截取, 截取到下标为index2的地方, 即为alang, 所以选项C正确, 本题答案为C。
【29】 Java中带数据校验的输入流是
〖A〗 BufferedInputStream
〖B〗 PipedInputStream
〖C〗 ObjectInputStream
〖D〗 CheckedInputStream
java.util.zip包中另外一些比较重要的类是Adler32和CRC32, 它们实现了java.util.zip.Checksum接 口, 并估算了压缩数据的校验和(checksum), 求和校验一般用来校验文件和信息是否正确的传送, 两个类具有此功能, 一个是CheckedInputStream, 另一个是CheckedOutputStream, 选项D正确, 本题答案为D。
【30】 下列代码实现了从score.txt文件中读取字符数据的功能。下划线处应填入的代码是
import java.io.*; public class ObjectRead { public static void main(String[] arg) { try { FileReader in = new FileReader(new File("score.txt")); char[] str = new char[1024]; int len = in._______(str); in.close(); for (int i = 0; i < len; i++) System.out.print(str[i]); } catch (Exception ex) { ex.printStackTrace(); } } }
〖A〗 input
〖B〗 output
〖C〗 read
〖D〗 write
将文件里的字符数据读取出来, 需要用read方法, 选项C正确, 本题答案为C。
【31】 下列选项中属于字节过滤流的是
〖A〗 FilterReader和FilterWriter
〖B〗 FilterInputStream和FilterOutputStream
〖C〗 FilterReader和FilterOutputStream
〖D〗 FilterInputStream和FilterWriter
字节输入流 基类: InputStream FileInputStream、ByteArrayInputStream、PipedInputStream、BufferedInputStream、ObjectInputStream、FilterInputStream、PushbackInputStream、DataInputStream 字节输出流 基类: OutputStream FileOutputStream、ByteArrayOutputStream、PipedOutputStream、BufferedOutputStream、ObjectOutputStream、FilterOutputStream、PrintStream、DataOutputStream 选项B正确, 本题答案为B。
【32】 下列选项中不是JOptionPane类中消息类型的是
〖A〗 ERROR_MESSAGE
〖B〗 OK_MESSAGE
〖C〗 WARNING_MESSAGE
〖D〗 INFORMATION_MESSAGE
主要有五种消息类型, 类型不同, 图标不同: ? ERROR_MESSAGE ? INFORMATION_MESSAGE ? WARNING_MESSAGE ? QUESTION_MESSAGE ? PLAIN_MESSAGE 选项B正确, 本题答案为B。
【33】 下列选项中不属于中层容器的是
〖A〗 JWindow
〖B〗 JPanel
〖C〗 JScrollPane
〖D〗 JSplitPane
[解析] Swing顶层容器共四个: JWindow、JFrame、JDialog和JApplet、其他三个是中间容器。选项A正确本题, 本题答案为A
【34】 下列选项中不是根面板组成部分的是
〖A〗 玻璃面板
〖B〗 分层面板
〖C〗 内容面板
〖D〗 可选择的菜单条
根面板是由一个玻璃面板, 一个内容面板, 和一个可选的菜单条组成, 选项B正确, 本题答案为B。
【35】 当窗体被关闭时, 将调用的窗体事件接口方法是
〖A〗 void windowClosed(WindowEvent);
〖B〗 void windowClosing(WindowEvent);
〖C〗 void windowIconified(WindowEvent);
〖D〗 void windowDeactivated(WindowEvent);
WindowEvent是一个类, 它指示窗口状态改变的低级别事件。当打开、关闭、激活、停用、图标化或取消图标化 Window 对象时, 或者焦点转移到 Window 内或移出 Window 时, 由 Window 对象生成此低级别事件。该事件被传递给每一个使用窗口的 addWindowListener 方法注册以接收这种事件的 WindowListener 或 WindowAdapter 对(WindowAdapter 对象实现 WindowListener 接口。)发生事件时, 所有此类侦听器对象都将获取此 WindowEvent。WindowAdapter是接收窗口事件的抽象适配器类。扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现 WindowListener 接口, 则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null, 所以只需针对关心的事件定义方法。)选项B正确, 本题答案为B
【36】 为了使下列程序正常运行并且输出5个数字, 在下划线处应填入的是
class PrintInt ____________ { public void ___________() { for (int i = 0; i < 5; i++) { System.out.print(i + " "); try { Thread.sleep(500); } catch (Exception e) { } } } } public class Test6 { public static void main(String[] args) { Thread p = new PrintInt(); p.start(); } }
〖A〗 extends Thread, PrintInt
〖B〗 extends Thread, run
〖C〗 implements, run
〖D〗 extends Thread, init
本题考查的是线程启动, 需要继承Thread类, 启用线程使用run方法, 选项B正确, 本题答案为B。
【37】 下列方法在被调用后, 不会改变所在线程运行状态的是
〖A〗 stop()
〖B〗 yield()
〖C〗 sleep()
〖D〗 notifyAll()
该题考查线程的状态转换。由于notify()只是唤醒一个线程, 但我们由不能确定具体唤醒的是哪一个线程, 也许我们需要唤醒的线程不能够被唤醒, 所以线程不一定改变状态; 线程调用了yield()方法, 意思是放弃当前获得的CPU时间片, 回到可运行状态, 这时与其他进程处于同等竞争状态, OS有可能会接着又让这个进程进入运行状态, 所以线程状态不一定改变, 调用sleep()之后, 线程则一定进入阻塞状态, 调用stop()方法后终止线程。所以D选项正确, 本题答案是D。
【38】 在下列SynchronizedCounter类的定义中, 为了保证并发操作的正确性, 应在下划线处填入的代码自上而下分别是
public class SynchronizedCounter { private int c = 0; public ___________ void increment() { c++; } public ___________ void decrement() { c--; } public ___________ int value() { return c; } }
〖A〗 都可以不填
〖B〗 synchronized, synchronized , 可不填
〖C〗 可不填, 可不填, synchronized
〖D〗 synchronized, synchronized , synchronized
本题考查的是线程安全问题, 加锁synchronized可以保证并发操作的正确性, 选项D正确, 本题答案为D。
【39】 当浏览器首次加载运行一个Applet 时, 调用的第一个Applet方法是
〖A〗 start()
〖B〗 init()
〖C〗 void main()
〖D〗 stop()
Applet运行时, 首先由浏览器调用init()方法, 通知该Applet已被加载到浏览器中, 使Applet执行一些基本初始化。选项B正确, 本题答案为B。
【40】 下列程序定义了一个Applet, 为了使程序运行时在浏览器中显示字符串Hello!, 在下划线处应填入的是
import java.awt.*; import __________; public class SwingApplet extends ___________ { JLabel label; public void init() { Container contentPane = getContentPane(); label = new JLabel(); label.setText(" Hello!"); contentPane.add(label); } }
〖A〗 javax.swing.*, JApplet
〖B〗 java.applet.*, Applet
〖C〗 javax.swing, Applet
〖D〗 java.applet.*, JApplet
SwingApplet 是JApplet的子类, JApplet在javax.swing.JApplet包中, 所以A选项正确, 本题答案为A。