【计算机二级Java语言】卷016

选择题

公共知识

【1】下列叙述中正确的是
〖A〗所谓算法就是计算方法
〖B〗程序可以作为算法的一种描述方法
〖C〗算法设计只需考虑得到计算结果
〖D〗算法设计可以忽略算法的运算时间
算法是指对解题方案的准确而完整的描述, 算法不等于数学上的计算方法, 也不等于程序。
算法设计需要考虑可行性、确定性、有穷性与足够的情报, 不能只考虑计算结果。
算法设计有穷性是指操作步骤有限且能在有限时间内完成, 如果一个算法执行耗费的时间太长, 即使最终得出了正确结果, 也是没有意义的, 。
算法在实现时需要用具体的程序设计语言描述, 所以程序可以作为算法的一种描述方法。
【2】下列叙述中错误的是
〖A〗数据结构中的数据元素可以是另一数据结构
〖B〗数据结构中的数据元素不能是另一数据结构
〖C〗空数据结构可以是线性结构也可以是非线性结构
〖D〗非空数据结构可以没有根结点
数据元素是一个含义很广泛的概念, 它是数据的"基本单位", 在计算机中通常作为一个整体进行考虑和处理。
数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合, 所以数据结构中的数据元素可以是另一数据结构。
满足有且只有一个根结点并且每一个结点最多有一个前件, 也最多有一个后件的非空的数据结构认为是线性结构, 不满足条件的结构为非线性结构。
空数据结构可以是线性结构也可以是非线性结构。
非空数据结构可以没有根结点, 如非性线结构"图"就没有根结点。
【3】13.设数据结构B = (D, R), 其中
D = { a, b, c, d, e, f }
R = { (f, a), (d, b), (e, d), (c, e), (a, c) }
该数据结构为
〖A〗线性结构
〖B〗循环队列
〖C〗循环链表
〖D〗非线性结构
数据的逻辑结构有两个要素:一是数据元素的集合, 通常记为D; 二是D上的关系, 它反映了D中各数据元素之间的前后件关系, 通常记为R。
即一个数据结构可以表示成B = (D, R)。
其中B表示数据结构。
为了反映D中各数据元素之间的前后件关系, 一般用二元组来表示。
例如, 假设a与b是D中的两个数据, 则二元组(a, b)表示a是b的前件, b是a的后件。
本题中R中的根结点为f, 元素顺序为f→a→c→e→d→b, 满足线性结构的条件。
【4】19.设栈的顺序存储空间为S(1 : m), 初始状态为top = 0。现经过一系列正常的入栈与退栈操作后, top = m + 1, 则栈中的元素个数为
〖A〗0
〖B〗m
〖C〗不可能
〖D〗m + 1
栈为空时, 栈顶指针top = 0, 经过入栈和退栈运算, 指针始终指向栈顶元素。
初始状态为top = 0, 当栈满时top = m, 无法继续入栈, top值不可能为m + 1。
【5】下列叙述中正确的是
〖A〗循环队列是顺序存储结构
〖B〗循环队列是链式存储结构
〖C〗循环队列空的条件是队头指针与队尾指针相同
〖D〗循环队列的插入运算不会发生溢出现象
循环队列是队列的一种顺序存储结构。
在循环队列中, 在队列满和队列为空时, 队头指针与队尾指针均相同; 当需要插入的数据大于循环队列的存储长度, 入队运算会覆盖前面的数据, 发生溢出现象。
【6】设循环队列的存储空间为Q(1 : m), 初始状态为 front = rear = m。经过一系列正常的操作后, front = 1, rear = m。为了在该队列中寻找值最大的元素, 在最坏情况下需要的比较次数为
〖A〗0
〖B〗1
〖C〗m - 2
〖D〗m - 1
该题中1 < m, 即rear - front > 0, 则该循环队列中的元素个数为m - 1。
此在该队列中寻找值最大的元素, 在最坏情况下需要的比较次数为m - 1 - 1 = m - 2。

【7】深度为7的二叉树共有127个结点, 则下列说法中错误的是
〖A〗该二叉树是满二叉树
〖B〗该二叉树有一个度为1的结点
〖C〗该二叉树是完全二叉树
〖D〗该二叉树有64个叶子结点
满二叉树满足深度为m的二叉树最多有2m - 1个结点, 本题中二叉树深度为7且有127个结点, 满足27 - 1 = 127, 达到最大值, 故此二叉树为满二叉树, 也是完全二叉树。
满二叉树第k层上有2k - 1结点, 则该二叉树的叶子结点数为27 - 1 = 64个。
满二叉树不存在度为1的结点。
【8】下列叙述中正确的是
〖A〗二分查找法只适用于顺序存储的有序线性表
〖B〗二分查找法适用于任何存储结构的有序线性表
〖C〗二分查找法适用于有序循环链表
〖D〗二分查找法适用于有序双向链表
二分查找法(又称对分查找法)只适用于顺序存储的有序表。
在此所说的有序表是指线性表的中元素按值非递减排列(即从小到大, 但允许相邻元素值相等)。
【9】将自然数集设为整数类I, 则下面属于类I实例的是
〖A〗-518
〖B〗5.18
〖C〗518
〖D〗518E - 2
类是具有共同属性、共同方法的对象的集合。
类是对象的抽象, 它描述了属于该对象类型的所有对象的性质, 而一个对象则是其对应类的一个实例。
自然数集是全体非负整数组成的集合, A项是负数实例, B项是浮点数实例, D项是用科学计数法表示的浮点数实例。
【10】下面属于黑盒测试方法的是
〖A〗边界值分析法
〖B〗路径测试
〖C〗条件覆盖
〖D〗语句覆盖
黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。

专业知识

【11】Java语言中, 程序封装的最小单位是
〖A〗
〖B〗文件
〖C〗
〖D〗方法
类是java的最小单位, java的程序必须在类中才能运行, 不像C 只有方法就可以, 选项C正确, 本题答案为C。
【12】下列选项中, 标识符的定义符合命名约定的是
〖A〗package com.abc.hr
〖B〗package Com.Abc.Hr
〖C〗package com.Abc.Hr
〖D〗package Com.abc.hr
标识符可以由字母、数字、下画线"-"和美元符"$"组成, 但数字不能开头, 不能用关键字作标识符, 包采用完整的英文描述符, 且都是由小写字母组成。
选项A正确, 本题答案为A。
【13】下列选项中, 不可以作为类中成员变量的修饰符的是
〖A〗public
〖B〗protected
〖C〗private
〖D〗abstract
选项A public 修饰公有属性, 选项B private修饰私有属性, 选项 C protected修饰受保护属性, 选项D abstract(抽象)修饰符, 可以修饰类和方法, 不可以修饰类中成员变量。
选项D正确, 本题答案为D。
【14】下列选项中, 不属于位运算符的是
〖A〗!
〖B〗|
〖C〗&
〖D〗~
选项A为逻辑非运算符, 选项B中的"|"为位运算符。
选项C为逻辑与运算符。
选项D也是为位运算符。
本题答案为A。
【15】下列代码段执行后, x, y的值分别为
int x = 3, y = 1;
boolean t = (x++ > y) || (y++ > 1);
〖A〗3 1
〖B〗4 1
〖C〗3 2
〖D〗4 2
因为第一句x = 3, y = 1; 第二句t = (x++ > y), 则t = true为真, 因为"||或"运算符只要前面为真, 整体就为真, 所以它不会再去执行后面的语句, 所以x = 4, y = 1.选项B正确。
【16】下列选项中, 不属于Java基本数据类型的是
〖A〗byte
〖B〗short
〖C〗char
〖D〗String
选项A, B, C都是基本数据类型, 选项D是引用型数据类型, 本题答案为D。
【17】下列代码段执行后, k的值为
int a = 15, b = -5, k;
if (a > 0 && a < 10)
    if (b > 0)
        k = 1;
else
    k = 2;
else if (b > 0)
    k = 3;
else
    k = 4;
〖A〗1
〖B〗2
〖C〗3
〖D〗4
因为a = 15, 所以if(a > 0 && a < 10)为true, 继续执行下去, 又因为b = -5, 能满足的结果就是k = 4, 选项D正确, 本题答案为D。
【18】下列代码段执行后, s的值为
int s = 0, f = -1;
for (int i = 1; i <= 6; i++) {
    s = s + f * i;
    f = -f;
}
〖A〗3
〖B〗21
〖C〗10
〖D〗6
本题考查的是for循环

s = 0, f = -1;
i = 1, s = 0 + (-1) * 1, f = 1;
i = 2, s = (-1) + 1 * 2, f = -1;
i = 3, s = 1 + (-1) * 3, f = 1;
i = 4, s = -2 + 1 * 4, f = -1;
i = 5, s = 2 + (-1) * 5, f = 1;
i = 6, s = -3 + 1 * 6, f = -1;
S = 3, 跳出循环。
选项A正确, 本题答案为A。

【19】下列代码段执行后, n的值为
int f = 1, n = 0;
while (true) {
    f = f * 2;
    n++;
    if (f >= 128)
        break;
}
〖A〗3
〖B〗5
〖C〗7
〖D〗8
while (true) { } 意思是一直执行, 所以当f >= 128, 就能跳出死循环, 当f >= 128时, n的结果为7, 选项C正确, 本题答案为C。
【20】下列代码段执行后, s的值为
int[] a = { 1, 2, 3, 4, 5 };
int s = 0;
for (int i = 0; i < 5; i++)
    if (i % 2 == 0)
        s += a[i];
〖A〗0
〖B〗6
〖C〗9
〖D〗15
"%"在java中做取余操作, 本题循环中只要是2的倍数都会执行s += a[i]; 运行结果为9, 选项C正确, 本题答案为C。
【21】Java中所有类的超(父)类是
〖A〗Application
〖B〗Object
〖C〗Class
〖D〗Java
java中Object类是所有类的父类, 选项B正确, 本题答案为B。
【22】当一个类要强制其子类覆盖它的某一方法时, 该方法必须使用的关键字是
〖A〗public
〖B〗private
〖C〗abstract
〖D〗final
public是公开的, private是私有的, final是最后的, abstract是抽象的, 父类要覆盖子类的方法, 子类的方法必须使用关键字abstract。
选项C正确, 本题答案为C。
【23】下列语句执行后, i的值为
String str = "rock\"n\"roll";
String str1 = "n";
int i = str.indexOf(str1);
〖A〗5
〖B〗6
〖C〗7
〖D〗4
str.indexOf(String str)返该字符串中第一次出现str字符串的下标位置, str中第一次出现n的下标位置是5.选项A正确, 本题答案为A。
【24】下列程序执行后的结果是
public class Test {
    public static void main(String[] args) {
        float a = 4.0f, b = 9.0f;
        int c = 8;
        String s = "10";
        System.out.println(a + s + b + c);
    }
}
〖A〗asbc
〖B〗4.01017.0
〖C〗4.0109.08
〖D〗4.0109.08.05
"+"两边只要有字符串都会做拼接作用 a为数 s为字符串所以a + s = 4.010拼接作用的结果均为字符串所以剩下的均为字符串拼接.选项C正确, 本题答案为C。
【25】下列程序段的运行结果是
int[][] a = { { 1, 4, 3, 2 }, { 8, 6, 5, 7 }, { 3, 7, 2, 5 }, { 4, 8, 6, 1 } };
int i, j, k, t;
for (i = 0; i < 3; i++)
    for (j = i + 1; j < 4; j++)
        if (a[i][i] < a[i][j]) {
            t = a[i][i];
            a[i][i] = a[i][j];
            a[i][j] = t;
        }
for (i = 0; i < 4; i++)
    < span style = "FONT-SIZE: 16px; FONT-FAMILY: &quot;Microsoft YaHei&quot;; WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; FLOAT: none; FONT-WEIGHT: 400; COLOR: rgb(0,0,0); FONT-STYLE: normal; ORPHANS: 2; WIDOWS: 2; DISPLAY: inline !important; LETTER-SPACING: normal; TEXT-INDENT: 0px; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial" > System.out.print(a[i][i] + " ");
</span>
〖A〗4 7 5 1
〖B〗1 6 2 1
〖C〗4 8 7 8
〖D〗1 5 2 1
考查的是二维数组和双重for循环, 执行程序后的结果为A。
选项A正确, 本题答案为A。
【26】下列关于异常的叙述中错误的是
〖A〗LinkageError是由Java语言本身来抛出和捕获
〖B〗catch子句的排列顺序应将最一般的排在前面, 逐步特殊化
〖C〗所有异常类的根是类Throwable
〖D〗fillStackTrace()方法用于重新抛出异常时对堆栈的跟踪
catch从句的排列顺序应该将最特殊的排在前面, 逐步一般化, 即子类在前, 父类在后。
选项B正确, 本题答案为B。
【27】执行下列代码段时会产生的异常是
int x = 3, y = 0, z = 0;
z = x / y;
〖A〗ArrayIndexOutOfBoundsException
〖B〗DividedByZeroException
〖C〗NullPointerException
〖D〗ArithmeticException
ArithmeticException是出现异常的运算条件时, 抛出此异常, 本题报除数不能为0异常属于此异常。
选项D正确, 本题答案为D。
【28】对于Map接口, 判断某个值是否为Map中值的方法是
〖A〗containsValue()
〖B〗containsKey()
〖C〗contains()
〖D〗values()
containsValue(Object value) value:要查询的Map集合的指定键值对象。
选项A正确, 本题答案为A。
【29】下列关于"流"的说法中错误的是
〖A〗"流"是输入输出设备的一种抽象表示
〖B〗"流"可以看做是一个流动的数据缓冲区
〖C〗根据"流"的方向, "流"可以分为输入流和输出流
〖D〗"流"的传送是并行进行的
"流"在java中通过一个管道(信道)、缓冲存储器, 还有一些中间的程序进行传送, 选项D不满足条件, 本题答案为D。
【30】下列选项中, 不是过滤字节输入流的类是
〖A〗FileInputStream
〖B〗BufferedInputStream
〖C〗CheckedInputStream
〖D〗InflaterInputStream
FileInputStream 用于读取诸如图像数据之类的原始字节流, 选项A正确, 本题答案为A。
【31】设置文件f的只读属性时, 可以使用的语句是
〖A〗f.setWriteOnly();
〖B〗f.setReadOnly();
〖C〗f.setOnlyWrite();
〖D〗f.setOnlyRead();
设置文件f的只读属性时, 可以使用的语句是f.setReadOnly(); 选项B正确, 本题答案为B。
【32】下列代码实现了将一个文件的内容复制到另一个文件的功能。下划线处应填入的代码是
import java.io.*;
public class test {
    public static void main(String[] args) {
        try {
            FileInputStream is = new FileInputStream("D:\\from.txt");
            FileOutputStream os = new FileOutputStream("D:\\to.txt");
            byte[] str = new byte[1024];
            while (is.available() > 0) {
                is.__________(str, 0, 1024);
                os.write(str);
            }
            is.___________();
            os.close();
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
〖A〗read, open
〖B〗write, open
〖C〗read, close
〖D〗write, close
根据程序代码可知要填的是讲字节读入数组, 读取自己用read()方法, 流在使用过程中占用系统资源, 在用完时要关闭流释放资源, 用close()释放资源。
选项C正确。
本题答案为C。
【33】窗口可接收的窗口事件类是
〖A〗WindowEvent
〖B〗KeyEvent
〖C〗AdjustmentEvent
〖D〗ComponentEvent
KeyEvent按键事件, AdjustmentEvent调整事件类, ComponentEvent组件事件类, 选项A正确, 本题答案为A。
【34】下列包中定义了表格组件支持类的是
〖A〗javax.swing.tree
〖B〗javax.swing.event
〖C〗javax.swing.table
〖D〗javax.swing.border
javax.swing.tree针对swing树关元件(JTree)所设计的类, javax.swing.event处理由swing组件产生的事件, 有别于AWT事件javax.swing.border包含与swing组件外框有关的类, javax.swing.table针对swing表格组件(JTable)所设计的类, 选项C正确, 本题答案为C。
【35】Swing与AWT相比, 新增加的布局管理器是
〖A〗FlowLayout
〖B〗CardLayout
〖C〗BoxLayout
〖D〗GridLayout
Swing继续沿用了AWT中的布局管理器, 包括FlowLayout、BorderLayout、CardLayout、GridLayout、CridBagLayout, 另外Swing新增了一个BoxLayout布局管理器。
选项C正确, 本题答案为C。
【36】在Java中, 可并发执行的最小代码单位是
〖A〗进程
〖B〗线程
〖C〗应用程序
〖D〗方法
在java中, 线程是可以并发执行的最小代码单位。
选项B正确, 本题答案为B。
【37】阅读下列程序:
public class ThreadTest3 {
    public static void main(String[] args) {
        Thread t1 = new Thread(new PrintString());
        Thread t2 = new Thread();
        t1.start();
        t2.start();
    }
}
class PrintString implements Runnable {
    int i = 0;
    public void run() {
        while (true) {
            System.out.println("Hello" + i);
            i++;
            if (i == 2)
                break;
        }
    }
}
下列选项中, 错误的是
〖A〗线程t1的线程体是PrintString类中的run()方法
〖B〗线程t2的线程体是Thread类中的run()方法
〖C〗程序运行结果是 Hello0 Hello1 Hello0 Hello1
〖D〗程序运行结果是 Hello0 Hello1
本题中java中的两个线程并发执行, 一个通过构造函数执行, 一个只声明没有方法体, 运行结果只能有一个Hello0, Hello1, 选项C不符合条件, 本题答案为C。
【38】下列方法能够用来实现线程之间同步的是
〖A〗notify()
〖B〗sleep()
〖C〗start()
〖D〗stop()
Java中用notify()、notifyAll()函数进行进程间的通信, 当等待此同步锁的线程接到此消息, 将重新获得对象锁, 线程重新启动运行。
sleep()为线程休眠函数, start()是启动线程的, stop()方法是强行终止线程。
选项A正确, 本题答案为A。
【39】下列说法中, 正确的是
〖A〗Applet的stop()方法运行后, Applet将立即终止并退出
〖B〗Applet的init()、start()方法都是由浏览器调用的
〖C〗Applet的start()方法只能运行一次
〖D〗Applet的stop()方法只能运行一次
A stop方法被调用后, 将立即停止所有在start()方法中启动的操作.C Applet的start()方法, 在Applet执行过程中, 初始化只有一次, 但启动可以多次。
D 停止是和启动相对应的动作。
当浏览器离开Applet所在的Web页转到其他页时, Applet被停止。
如果浏览器又回到此页, 则Applet又被启动。
所以, 和start()方法类似, 在 Applet生命周期中, stop()方法也可能被多次调用。
选项B正确, 本题答案为B。
【40】要向一个主类为 StringApplet.class的Applet 传递参数, 在下列show.html文件的下划线处应填入的是
<HTML><BODY><APPLET CODE = " __________ " WIDTH = 150 HEIGHT = 25><PARAM NAME = bookName ______ "Pride and Prejudice"></APPLET></BODY></HTML>
〖A〗StringApplet, VAL
〖B〗StringApplet.class, VAL
〖C〗StringApplet, VALUE=
〖D〗StringApplet.class, VALUE=
APPLET CODE = "", 里面填的的应该是文件名, 所有是StringApplet.class.name属性后面应该跟的是:value。
value是绝对路径, 必须用引号引用起来。
选项D正确, 本题答案为D。

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是:从键盘输入5个正整数, 输出其中的最大值。
例如:从键盘输入
10
30
50
20
40
则屏幕显示
输入的最大值是 50
1.i <= 5 2.parseInt 3.max = x
本题考查I / O流以及基础知识
填空1:循环5次
填空2:将字符串转换为整型使用Integer.parseInt
填空3:若x > max则将x赋值给max
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
运行程序后, 输出结果为(2, 3)
1.new 2.int x
3.Point 4.toString
考察了面向对象类的基本操作
填空1:实例化对象需用关键字new
填空2:定义变量x
填空3:构造类的有参构造器
填空4:要显示对象内容需重写toString方法
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请在注释行"//**********Found**********"下一行语句的下划线地方填入正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
程序运行后出现如图所示界面, 点击增大按钮则左边的数字增大, 点击减小按钮则左边的数字减小。

1.swing 2.getContentPane 3.(b1) 4.(b2) 5.BListener 6.actionPerformed
考察了画图和监听事件
填空1:导入swing包
填空2:用getContentPane()方法获得JFrame的内容面板, 再对其加入组件
填空3, 填空4:将b1和b2按钮加进去
填空5:缺少BListener类, 后期程序用上该类, 但没定义, 所以添加上:
填空6:继承ActionListener就要重写actionPerformed方法
posted @ 2020-03-12 15:55  M了个J  阅读(1297)  评论(0编辑  收藏  举报