选择题
公共知识
【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的操作是()。
由关系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正确, 本题答案为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");
}
根据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];
第一次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;
}
x的值进入循环后值是5, 满足if条件执行跳出循环语句。选项C正确, 本题答案为C。
【21】构造方法名的特点是
〖A〗与类名相同
〖B〗与对象名相同
〖C〗与包名相同
〖D〗与变量名相同
构造方法必须与所在的类具有相同的名字。
构造方法没有返回类型, 也不需用void修饰。选项A正确, 本题答案为A。
【22】下列概念中不包括任何实现并且与存储空间没有任何关系的是
只有抽象方法没有方法体, 而接口中定义的只能是抽象方法, 抽象方法存储在方法区, 不占用存储空间, 选项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。
【计算机二级Java语言】卷009
原文:https://www.cnblogs.com/mjios/p/12455333.html