【1】 下列链表中, 其逻辑结构属于非线性结构的是()。
〖A〗 二叉链表
〖B〗 循环链表
〖C〗 双向链表
〖D〗 带链的栈
在定义的链表中, 若只含有一个指针域来存放下一个元素地址, 称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点, 是线性表。在单链表中的结点中增加一个指针域指向它的直接前件, 这样的链表, 就称为双向链表(一个结点中含有两个指针), 也是线性链表。循环链表具有单链表的特征, 但又不需要增加额外的存贮空间, 仅对表的链接方式稍做改变, 使得对表的处理更加方便灵活, 属于线性链表。二叉链表是二叉树的物理实现, 是一种存储结构, 不属于线性结构。答案为A选项。
【2】 设循环队列的存储空间为Q(1: 35), 初始状态为front = rear = 35。现经过一系列入队与退队运算后, front = 15, rear = 15, 则循环队列中的元素个数为()。
〖A〗 15
〖B〗 16
〖C〗 20
〖D〗 0或35
在循环队列中, 用队尾指针rear指向队列中的队尾元素, 用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时, 头尾指针仍要加1, 朝前移动。只不过当头尾指针指向向量上界时, 其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针, 出队时头指针向前追赶尾指针, 故队空和队满时, 头尾指针均相等。答案为D选项。
【3】 下列关于栈的叙述中, 正确的是()。
〖A〗 栈底元素一定是最后入栈的元素
〖B〗 栈顶元素一定是最先入栈的元素
〖C〗 栈操作遵循先进后出的原则
〖D〗 以上说法均错误
栈顶元素总是后被插入的元素, 从而也是最先被删除的元素; 栈底元素总是最先被插入的元素, 从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此, 栈称为先进后出表, 或“后进先出”表, 所以选择C。
【4】 如果在关系数据库中, 用来表示实体间联系的是()。
〖A〗 属性
〖B〗 二维表
〖C〗 网状结构
〖D〗 树状结构
关系模型实体间的联系采用二维表来表示, 简称表。选项C为网状模型实体间的联系, 选项D为层次模型实体间的联系, 选项A属性刻画了实体。
【5】 公司中有多个部门和多名职员, 每个职员只能属于一个部门, 一个部门可以有多名职员。则实体部门和职员间的联系是()。
〖A〗 1: 1联系
〖B〗 m: 1联系
〖C〗 1: m联系
〖D〗 m: n联系
两个实体集间的联系实际上是实体集间的函数关系, 主要有一对一联系(1: 1)、一对多联系(1: m)、多对一联系(m: 1)、多对多联系(m: n)。对于每一个实体部门, 都有多名职员, 则其对应的联系为一对多联系(1: m), 答案选C。
【6】 有两个关系R和S如下:
则由关系R得到关系S的操作是()。
〖A〗 选择
〖B〗 投影
〖C〗 自然连接
〖D〗 并
由关系R到关系S为一元运算, 排除C和D。关系S是关系R的一部分, 是通过选择之后的结果, 因此选A。
【7】 数据字典(DD)所定义的对象都包含于()。
〖A〗 数据流图(DFD图)
〖B〗 程序流程图
〖C〗 软件结构图
〖D〗 方框图
在数据流图中, 对所有元素都进行了命名, 所有名字的定义集中起来就构成了数据字典。因此选A, 而B, C, D都不符合。
【8】 软件需求规格说明书的作用不包括()。
〖A〗 软件验收的依据
〖B〗 用户与开发人员对软件要做什么的共同理解
〖C〗 软件设计的依据
〖D〗 软件可行性研究的依据
软件需求规格说明书是需求分析阶段的最后成果, 是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流, B正确; ②反映出用户问题的结构, 可以作为软件开发工作的基础和依据, C正确; ③作为确认测试和验收的依据, A正确。
【9】 下面属于黑盒测试方法的是()。
〖A〗 语句覆盖
〖B〗 逻辑覆盖
〖C〗 边界值分析
〖D〗 路径覆盖
黑盒测试不关心程序内部的逻辑, 只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时, 手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法, 答案为C。而A、B、D均为白盒测试方法。
【10】 下面不属于软件设计阶段任务的是()。
〖A〗 软件总体设计
〖B〗 算法设计
〖C〗 制定软件确认测试计划
〖D〗 数据库设计
从技术观点上看, 软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确, C为软件测试阶段的任务。
【11】 Java虚拟机在运行Java代码时, 首先进行的操作是
〖A〗 加载代码
〖B〗 校验代码
〖C〗 编译代码
〖D〗 连接代码
编译是把java文件编译为class文件, 由编译器完成, 选项C错误; jvm执行的是class文件, 执行顺序为加载, 校验, 执行; 本题答案为A。
【12】 下列语句中, 能够在屏幕上显示字符串的正确语句是
〖A〗 System.out.println("Hello!");
〖B〗 system.out.println("Hello!");
〖C〗 System.Out.Println("Hello!");
〖D〗 System.out.println(‘Hello!’);
Java语句执行时, 区分大小写。System.out.println()为正确的输出语句; 且字符串必须用双引号引起来。本题答案为A。
【13】 下列选项中不符合Java标识符规定的是
〖A〗 2ab
〖B〗 a_b
〖C〗 a123
〖D〗 $xy
标识符由大小写字母, 下划线, 数字, $符号组成; 开头可以是大小写字母, 下划线, 和$符号.(数字不能开头); 标识符长度没有限制; 标识符不能是关键子和保留字。本题答案为A。
【14】 下列运算符中优先级最高的是
〖A〗 --
〖B〗 >>
〖C〗 !=
〖D〗 /
参考下表运算符优先级排序表, 可知答案为选项A正确, 本题答案为A
【15】 执行下列语句后, x, y的值分别是
int x = 3, y; y = x++;
〖A〗 3 3
〖B〗 3 4
〖C〗 4 4
〖D〗 4 3
++符号在变量前面表示先自身加1再参与运算, ++符号在变量后面表示先参与运算再自身加1, 故x先赋值给y, 再自身加1, 可知选项D正确, 本题答案为D。
【16】 执行下列语句后, x的值是
int x = 0; x = 'a' > 'b' ? 1 : 2;
〖A〗 0
〖B〗 1
〖C〗 2
〖D〗 有错误, 不能执行
'a' 与 'b'字符在比较大小时分别表示数值65与66, 可知选项C正确, 本题答案为C。
【17】 下列代码段执行后的结果是
int x = 3, y = -3; if (x >= 0) { if (y >= 0) { System.out.println("a"); } else { System.out.println("b"); } } else if (y >= 0) { System.out.println("c"); } else { System.out.println("d"); }
〖A〗 a
〖B〗 b
〖C〗 c
〖D〗 d
根据if判断条件x = 3, 3 > 0, 执行if中的语句, y = -3, y<0执行else中的语句, 选项B正确, 本题答案为B。
【18】 下列代码段执行后的结果是
int x = 1; while (x < 11) { x = x + 3; System.out.print(" " + x); }
〖A〗 1 3 5 7 9
〖B〗 4 7 10 13
〖C〗 3 5 7 9 11
〖D〗 1 4 7 10
x的值进入循环后值依次是4, 7, 10, 13当x = 13时条件不成立跳出循环。 选项B正确, 本题答案为B。
【19】 下列代码段执行后, a[4] 的值为
int []a = { 1, 2, 3, 4, 5, 6 }; for (int i = 0 ; i < 6 ; i++) if (i % 2 == 0) a[i] += a[i + 1];
〖A〗 4
〖B〗 11
〖C〗 15
〖D〗 21
第一次c0满足if条件执行if语句a[0] = a[0] + a[1] = 3。 第二次i = 1不满足if条件 第三次i = 2满足if条件执行if语句a[2] = a[2] + a[3] = 7 第四次i = 3不满足if条件 第五次i = 4满足if条件执行if语句a[4] = a[4] + a[5] = 11 第六次i = 5不满足if条件 第七次i = 6不满足for循环条件, 跳出循环 选项B正确, 本题答案为B。
【20】 下列代码段执行后的结果是
int x = 10; while (true) { x /= 2; System.out.println(x); if (x > 0) break; }
〖A〗 10 5 2
〖B〗 0
〖C〗 5
〖D〗 2
x的值进入循环后值是5, 满足if条件执行跳出循环语句。选项C正确, 本题答案为C。
【21】 构造方法名的特点是
〖A〗 与类名相同
〖B〗 与对象名相同
〖C〗 与包名相同
〖D〗 与变量名相同
构造方法必须与所在的类具有相同的名字。 构造方法没有返回类型, 也不需用void修饰。选项A正确, 本题答案为A。
【22】 下列概念中不包括任何实现并且与存储空间没有任何关系的是
〖A〗 类
〖B〗 接口
〖C〗 抽象类
〖D〗 对象
只有抽象方法没有方法体, 而接口中定义的只能是抽象方法, 抽象方法存储在方法区, 不占用存储空间, 选项B正确, 本题答案为B。
【23】 在当前目录下存在文件"record.txt", 则下列代码的运行结果是
public void test() { double [] d = new double[10]; try { FileInputStream fis = new FileInputStream("record.txt"); d[9] = 9999.99; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Out of Bounds"); } catch (IOException e) { System.out.println("IO exception"); } finally { System.out.println("finish"); } }
〖A〗 exception
〖B〗 Out of Bounds
〖C〗 IO exception
〖D〗 finish
finally语句块只有jvm关闭才不会运行, 即使出现异常也会执行。选项D正确, 本题答案为D。
【24】 下列能正确定义二维字符型数组的是
〖A〗 char c[][] = new char[8, 8];
〖B〗 char c[8][8] = new char[][];
〖C〗 char c[][] = new char[8][8];
〖D〗 char c[8, 8] = new char[][];
二维字符型数组正确定义有 char c[][] = new char[][] char [][]c = new char[][] char c[][] = { { }, { }, { }, .... { } } 。选项C正确, 本题答案为C。
【25】 对于catch子句的排列, 下列说法中正确的是
〖A〗 父类在先, 子类在后
〖B〗 子类在先, 父类在后
〖C〗 有继承关系的异常不能在同一个try程序段内
〖D〗 任意顺序
catch语句排序应子类在先, 父类在后, 否则当捕捉到父类时将不会再捕捉子类, 选项B正确, 本题答案为B。
【26】 下列给浮点数二维数组进行赋值的语句中, 错误的是
〖A〗 float f[][] = { { 1.1, 2.2 }, { 3.3, 4.4 } };
〖B〗 float f[2][2] = { { 1.1, 2.2 }, { 3.3, 4. 4 } };
〖C〗 float f[][] = { { 0.0 }, { 1.1, 2.2 }, { 3.3, 4.4 } };
〖D〗 float f[][] = { { 0.0 }, { 1.1, 2.2, 3.3, 4.4 } };
二维字符型数组正确定义有 char c[][] = new char[][] char [][]c = new char[][] char c[][] = { { }, { }, { }, .... { } } 选项B不满足条件, 本题答案为B。
【27】 下列方法可加入类Tortoise中的是
public class Reptile { protected void crawl() { … } } class Tortoise extends Reptile { }
〖A〗 public void crawl() { … }
〖B〗 void crawl() { … }
〖C〗 private void crawl() { … }
〖D〗 abstract void crawl() { … }
子类重写父类方法时, 子类访问权限必须大于或等于父类。选项A正确, 本题答案为A。
【28】 下列代码中, 将引起错误的是
class Reptile { private String name; public Reptile() { } } public class Tortoise extends Reptile { private String place; public Tortoise() { } public String getValue() { return name; } public static void main(String args[]) { Reptile p = new Reptile(); } }
〖A〗 第3行
〖B〗 第6行
〖C〗 第7行
〖D〗 第8行
父类的私有属性不会被子类继承, 所以Tortoise不会继承父类的name属性。选项D正确, 本题答案为D。
【29】 能将多个输入流首尾连接构成一个新的输入流的类是
〖A〗 SequenceInputStream
〖B〗 BufferedInputStream
〖C〗 ObjectInputStream
〖D〗 FileInputStream
SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始, 并从第一个输入流开始读取, 直到到达文件末尾, 接着从第二个输入流读取, 依次类推, 直到到达包含的最后一个输入流的文件末尾为止。选项A正确, 本题答案为A。
【30】 下列代码实现了从score.txt文件中读取字符数据的功能。下划线处应填入的代码是
import java.io.*; public class ObjectRead { public static void main(String[] arg) { try { FileReader in = new __________(new File("score.txt")); char[] str = new char[1024]; int len = in.read(str); in.close(); for (int i = 0; i < len; i++) System.out.print(str[i]); } catch (Exception ex) { ex.printStackTrace(); } } }
〖A〗 FileInputStream
〖B〗 FileReader
〖C〗 File
〖D〗 FileWriter
FileReader类是将文件按字符流的方式读取, 在new对象的时候, new出来的必须是其本类、子类或实现类。选项B正确, 本题答案为B
【31】 下列选项中属于字符过滤流的是
〖A〗 FilterReader和FilterWriter
〖B〗 FilterInputStream和FilterOutputStream
〖C〗 FilterReader和FilterOutputStream
〖D〗 FilterInputStream和FilterWriter
字符过滤流、与FilterInputStream, FilterOutputStream功能一样、只是简单重写了父类的方法、目的是为所有装饰类提供标准和基本的方法、要求子类必须实现核心方法、和拥有自己的特色。选项A正确, 本题答案为A。
【32】 用于显示对话框的类是
〖A〗 JOptionPane
〖B〗 JFrame
〖C〗 JPanel
〖D〗 JMenu
JOptionPane用于对话框显示, 定制四种不同种类的标准对话框。 ConfirmDialog确认对话框。提出问题, 然后由用户自己来确认(按"Yes"或"No"按钮) InputDialog 提示输入文本 MessageDialog 显示信息 OptionDialog组合其它三个对话框类型。 选项A正确, 本题答案为A。
【33】 下列选项中不属于顶层容器的是
〖A〗 JFrame
〖B〗 JApplet
〖C〗 JDialog
〖D〗 JToolBar
在Swing中, 我们有三种可以使用的顶层容器, 它们分别是: JFrame: 用来设计类似于Windows系统中的窗口形式的应用程序。 JDialog: 和JFrame类似, 只不过JDialog是用来设计对话框。 JApplet: 用来设计可以在嵌入在网页中的Java小程序。选项D正确, 本题答案为D。
【34】 下列选项中不是根面板所提供的方法是
〖A〗 add
〖B〗 getConentPane
〖C〗 setConentPane
〖D〗 setLayeredPane
对JFrame添加组件有两种方式: 1)用 getContentPane()方法获得JFrame的内容面板, 再对其加入组件: frame. getContentPane().add(childComponent) 2)建立一个Jpanel或JDesktopPane之类的中间容器, 把组件添加到容器中, 用setContentPane()方法把该容器置为JFrame的内容面板 setLayeredPane设置面板为主面板, 选项A不满足条件, 本题答案为A。
【35】 JPanel的默认布局管理器是
〖A〗 FlowLayout
〖B〗 BorderLayout
〖C〗 CardLayout
〖D〗 GridLayout
对于JFrame和JWindow这样的顶层框架来说, 默认的布局管理器是边界布局(BorderLayout); JPanel默认的布局管理器为FlowLayout。选项A正确, 本题答案为A。
【36】 为了使下列程序正常运行并且输出5个字符Y, 在下划线处应填入的是
public class Test9 { public static void main(String[] args) { Thread p = new _______; p.start(); } } class Print implements Runnable { public void _______() { for (int i = 0; i < 5; i++) { System.out.print('Y'); try { Thread.sleep(1000); } catch (Exception e) { } } } }
〖A〗 Thread(), print
〖B〗 new Print(), run
〖C〗 Thread(new Print()), print
〖D〗 Thread(new Print()), run
实现Runnable接口需要重写run方法, 启动线程打印Y需要Print对象。选项D正确, 本题答案为D。
【37】 下列说法中错误的是
〖A〗 Java中线程调度是抢占式的
〖B〗 Java中线程调度是分时的
〖C〗 Java中的线程可以共享数据
〖D〗 Java中的线程可以共享代码
线程的调度并不是由java决定的, 而是os, os可以保证所有线程都有机会得到执行。即时某个线程正在忙。也会被休眠。具体的你要看os相关的线程调度这一块, 这叫抢占式任务调度。选项B正确, 本题答案为B。
【38】 在下列SynchronizedCounter类的定义中, 由于某些代码定义不当, 使得对计数器的并发控制无法实现, 有问题的代码是
public class SynchronizedCounter { public int counter = 0; void increment() { counter ++; } synchronized int decrement() { counter --; } int get() { return counter; } }
〖A〗 第2行、第3行和第6行
〖B〗 第3行、第6行和第9行
〖C〗 第3行和第9行
〖D〗 第2行、第3行和第9行
要想计数器并发实现, counter必须定义为静态变量, 相关的方法必须是静态方法, 需用static修饰, 选项A, B, C错误。选项D正确, 本题答案为D。
【39】 在JAVA中, 要编写一个基于swing的Applet, 需要继承的类是
〖A〗 JFrame
〖B〗 JApplet
〖C〗 Thread
〖D〗 JPanel
Applet类定义小应用程序与其运行环境之间的一个接口; JApplet是Applet类的扩展, 它继承Applet的方法和执行机制, 同时也增加了对Swing构件的支持。每个Java小应用程序都必须是Applet类或JApplet类的子类, 选项B正确, 本题答案为B。
【40】 如果Applet要在浏览器中显示一个字符串, 则需要重写的方法是
〖A〗 Graphics.drawString()
〖B〗 System.out.println()
〖C〗 paint()
〖D〗 start()
paint()方法用于使Applet在浏览器中显示信息, 如文字、图形和其他界面元素。选项C正确, 本题答案为C。