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

选择题

公共知识

【1】下列关于算法的描述中错误的是
〖A〗算法强调动态的执行过程, 不同于静态的计算公式
〖B〗算法必须能在有限个步骤之后终止
〖C〗算法设计必须考虑算法的复杂度
〖D〗算法的优劣取决于运行算法程序的环境
算法设计不仅要考虑计算结果的正确性, 还要考虑算法的时间复杂度和空间复杂度。
【2】下列叙述中错误的是
〖A〗向量是线性结构
〖B〗非空线性结构中只有一个结点没有前件
〖C〗非空线性结构中只有一个结点没有后件
〖D〗具有两个以上指针域的链式结构一定属于非线性结构
双向链表每个结点有两个指针, 一个为左指针, 用于指向其前件结点; 一个为右指针, 用于指向其后件结点, 再加上头指针, 具有两个以上的指针, 但双向链表属于线性结构。
非空线性结构中第一个结点没有前件, 最后一个结点无后件, 其余结点最多有一个前件, 也最多有一个后件。
向量也满足这个条件, 属于线性结构。
【3】下列叙述中正确的是
〖A〗在栈中, 栈顶指针的动态变化决定栈中元素的个数
〖B〗在循环队列中, 队尾指针的动态变化决定队列的长度
〖C〗在循环链表中, 头指针和链尾指针的动态变化决定链表的长度
〖D〗在线性链表中, 头指针和链尾指针的动态变化决定链表的长度
在栈中, 通常用指针top来指示栈顶的位置, 用指针bottom指向栈底。
栈顶指针top动态反应了栈中元素的变化情况。
在循环队列中, 队头指针和队尾指针的动态变化决定队列的长度。
链式存储结构中, 各数据结点的存储序号是不连续的, 并且各结点在存储空间中的位置关系与逻辑关系也不一致, 故头指针和尾指针或栈顶指针无法决定链表长度。
【4】循环队列的存储空间为 Q(1 : 50), 初始状态为 front = rear = 50。经过一系列正常的入队与退队操作后, front = rear = 25, 此后又插入一个元素, 则循环队列中的元素个数为
〖A〗1, 或50且产生上溢错误
〖B〗51
〖C〗26
〖D〗2
循环队列长度为50, 由初始状态为front = rear = 50可知此时循环队列为空。
入队运算时, 首先队尾指针rear进1(即rear + 1), 然后在队尾指针rear指向的位置插入新元素。
当队尾指针rear = 50 + 1时, 置rear = 1。
退队运算时, 排头指针front进1(即front + 1), 然后删除front指针指向的位置上的元素, 当排头指针front = 50 + 1时, 置front = 1。
当front = rear = 25时可知队列空或者队列满, 此后又插入了一个元素, 如果之前队列为空, 插入操作之后队列里只有一个元素; 如果插入之前队列已满(50个元素), 执行插入则会产生溢出错误。
【5】设一棵树的度为3, 其中没有度为2的结点, 且叶子结点数为5。该树中度为3的结点数为
〖A〗3
〖B〗1
〖C〗2
〖D〗不可能有这样的树
设树的结点数为m, 度为3的结点数为n, 则度为1的结点数为m - n - 5, 根据树中的结点数=树中所有结点的度之和+1, 得3×n + 1×(m - n - 5) + 5×0 + 1 = m, 则n = 2。
【6】设二叉树的前序序列与中序序列均为ABCDEFGH, 则该二叉树的后序序列为
〖A〗ABCDHGFE
〖B〗DCBAHGFE
〖C〗EFGHABCD
〖D〗HGFEDCBA
二叉树的前序序列与中序序列均为ABCDEFGH, 可知二叉树根结点为A, 且根结点A只有右子树, 没有左子树。
同理, 可以推出结点B只有右子树无左子树。
依此类推, 该二叉树除叶子结点外, 每个结点只有右子树无左子树。
因此该二叉树的后序序列为HGFEDCBA。
【7】下列序列中不满足堆条件的是
〖A〗(98, 95, 93, 94, 89, 90, 76, 80, 55, 49)
〖B〗(98, 95, 93, 94, 89, 85, 76, 64, 55, 49)
〖C〗(98, 95, 93, 94, 89, 90, 76, 64, 55, 49)
〖D〗(98, 95, 93, 96, 89, 85, 76, 64, 55, 49)
根据堆的定义, n个元素的序列(h1, h2, …hn), 当且仅当hi≤h2i且hi≤h2i + 1时为小顶堆, 当且仅当hi≥h2i且hi≥h2i + 1时为大顶堆。
D项中, h2 = 95, h4 = 96, h2 < h4, 但h5 = 89, h2 > h5, 不满足小顶堆和大顶堆条件。

【8】下面对"对象"概念描述正确的是
〖A〗属性就是对象
〖B〗操作是对象的动态属性
〖C〗任何对象都必须有继承性
〖D〗对象是对象名和方法的封装体
对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。
对象可以做的操作表示它的动态行为, 通常也称为方法或服务, 属性即对象所包含的信息。
对象可以有继承性, 但并不是任何对象都必须有继承性。
【9】下面属于软件设计阶段产生的文档是
〖A〗详细设计规格说明书
〖B〗数据流程图和数据字典
〖C〗软件确认测试计划
〖D〗软件需求规格说明书
软件设计阶段产生的文档有概要设计说明书、详细设计说明书和测试计划初稿; 数据流程图、数据字典和需求规格说明书是需求分析阶段产生的; 软件确认测试计划属于软件测试阶段的文档。
【10】在学校里, 教师可以讲授不同的课程, 同一课程也可由不同教师讲授, 则实体教师与实体课程间的联系是
〖A〗一对多
〖B〗一对一
〖C〗多对一
〖D〗多对多
一个教师可以讲授不同的课程, 同一课程也可由不同教师讲授, 则实体教师与实体课程间的联系是多对多。

专业知识

【11】Java中, 隐藏信息的基本机制是
〖A〗抽象
〖B〗继承
〖C〗封装
〖D〗多态
封装是把过程和数据包围起来, 对数据的访问只能通过已定义的接口。
面向对象计算始于这个基本概念, 即现实世界可以被描绘成一系列完全自治、封装的对象, 这些对象通过一个受保护的接口访问其他对象。
封装是一种信息隐藏技术, 在java中通过关键字private, protected和public实现封装。
什么是封装?封装把对象的所有组成部分组合在一起, 封装定义程序如何引用对象的数据, 封装实际上使用方法将类的数据隐藏起来, 控制用户对类的修改和访问数据的程度。
适当的封装可以让程式码更容易理解和维护, 也加强了程式码的安全性。
选项C正确, 本题答案为C。
【12】下列类定义中, 没有语法错误并且符合Java命名约定的是
〖A〗class userdefinedclass { }
〖B〗class UserDefinedClass { }
〖C〗class userDefinedClass { }
〖D〗Class Userdefinedclass { }
声明类用关键字class。
Java类名通常以大写字母开头, 如果类名称由多个单词组成, 则每个单词的首字母均应为大写, 选项B正确, 本题答案为B。
【13】下列选项中, 不可以作为类中成员方法的修饰符的是
〖A〗const
〖B〗static
〖C〗final
〖D〗abstract
const是java中的预留关键字(java中预留关键字还有goto), 现在没有作为关键字, 以后的版本中可能扩展用, 但现在常用于C, C++中。
C中的const类似于final。
选项A正确, 本题答案为A。
【14】下列代码段执行后, x, y的值分别为
int x = 2, y = 3;
boolean t = (x++ > 5) && (y++ > 1);
〖A〗2 3
〖B〗3 3
〖C〗2 4
〖D〗3 4
&&具有短路作用, 当第一个判断条件结果为false就会终止判断。
选项B正确, 本题答案为B。
【15】下列选项中, 既不属于赋值运算符又不属于扩展赋值运算符的是
〖A〗+=
〖B〗=
〖C〗/=
〖D〗!=
!=属于比较运算符。
本题答案为D。
【16】下列变量定义中, 正确的是
〖A〗boolean k = 1;
〖B〗boolean f = 0;
〖C〗char ch = "12";
〖D〗double d = 2.5;
boolean变量值只能为true或者false, char声明值不可以为字符串类型。
选项D正确, 本题答案为D。
【17】下列代码段执行后, y的值为
int x = 3, y = 8, t = 5;
if (x > y)
    t = x;
x = y;
y = t;
〖A〗3
〖B〗5
〖C〗8
〖D〗0
if判断如果执行多条语句需要加 { }, 否则只执行紧接的一条语句。
选项B正确, 本题答案为B。
【18】下列代码段执行后, t的值为
int x = 8, y = 12, t;
t = x;
while (true) {
    if (t % x == 0 && t % y == 0)
        break;
    t++;
}
〖A〗8
〖B〗12
〖C〗24
〖D〗96
t = 24时, 同时满足条件, 退出循环。
本题答案为C。
【19】下列代码段执行后, c的值为
int a = 0, b = 0, c = 0;
for (int i = 50; i < 100; i = i + 5)
    switch (i / 10) {
        case 9:
        case 8:
            a++;
            break;
        case 7:
        case 6:
            b++;
        default:
            c++;
    }
〖A〗2
〖B〗4
〖C〗6
〖D〗10
case语句后面如果没有break就会一直执行下去, 直到有break为止; 如果还没有就会执行到default语句, 结束switch语句。
选项C正确, 本题答案为C。
【20】下列代码段执行后的结果是
int[] a = { 6, 8, 3, 1, 2 };
int j = 4;
for (int i = 0; i < 2; i++)
    a[i] = a[j--];
for (int i = 0; i < 5; i++)
    System.out.print(a[i] + " ");
〖A〗1 2 3 6 8
〖B〗2 1 3 8 6
〖C〗1 2 3 1 2
〖D〗2 1 3 1 2
i = 0, j = 4, a[0] = a[4], a = { 2, 8, 3, 1, 2 }; i = 1, j = 3, a[1] = a[3], a = { 2, 1, 3, 1, 2 }, 选项D正确, 本题答案为D。
【21】子类可以重新定义父类的方法, 这种现象称为
〖A〗初始化
〖B〗覆盖
〖C〗扩展
〖D〗信息隐藏
子类对父类的方法进行重新定义, 叫做override(重写或覆盖)。
选项B正确。
本题答案为B。
【22】若希望一个类不能有子类, 那么在定义这个类时使用关键字
〖A〗public
〖B〗private
〖C〗protected
〖D〗final
final修饰的类不能被继承。
选项D正确, 本题答案为D。
【23】下列语句执行后, cust的值为
ArrayList arr = new ArrayList();
arr.add(new Customer("甲"));
arr.add(new Customer("乙"));
arr.add(new Customer("丙"));
arr.add(new Customer("丁"));
Customer cust = arr.get(1);
〖A〗"甲"
〖B〗"乙"
〖C〗"丙"
〖D〗"丁"
public E get(int index)返回此列表中指定位置上的元素, index从0开始。
选项B正确, 本题答案为B
【24】语句String[][] s = new String[][4]; 定义了
〖A〗一维数组
〖B〗二维数组
〖C〗四个串
〖D〗编译出错
定义一个不规则二位数组的声明方式是:String[][] s = new String[2][]; //声明一个2行的String类型二维数组

s[0] = new String[3];
//声明第一行有3列

s[1] = new String[5];
//声明第二行有5列。

本题答案为D。

【25】下列程序段执行后的结果是
String s = new String("abcdefg");
for (int i = 0; i < s.length(); i += 2) {
    System.out.print(s.charAt(i));
}
〖A〗aceg
〖B〗ACEG
〖C〗abcdefg
〖D〗abcd
i = i + 2。
public char charAt(int index)返回指定索引处的 char 值。
索引范围为从 0 到 length() - 1。
选项A正确, 本题答案为A。
【26】try与catch的匹配是
〖A〗catch到的异常是try中可能抛出的异常类或其子类的实例
〖B〗catch到的异常是try中可能抛出的异常类或其父类的实例
〖C〗catch到的异常是try中可能抛出的异常的不同类的实例
〖D〗catch到的异常是try中可能抛出的异常的不同类的父类的实例
catch到的异常是try中可能抛出的异常类或其子类的实例, 选项A正确, 本题答案为A。
【27】执行下列方法时的结果是
public void fun() {
    try {
        int[] a = { 1, 2, 3 };
        System.out.print("Hello");
    } catch (ArrayIndexOutOfBoundsException e) {
        System.out.print("ArrayIndexOutOfBoundsException");
    } catch (Exception e) {
        System.out.print("Exception");
    } finally {
        System.out.println("Finally");
    }
}
〖A〗Hello
〖B〗ArrayIndexOutOfBondsException
〖C〗ExceptionFinally
〖D〗HelloFinally
finally的语句总会执行。
选项D正确, 本题答案为D。
【28】Collection接口中, 判定集合中是否有元素的方法是
〖A〗contains()
〖B〗add()
〖C〗isEmpty()
〖D〗remove()
boolean contains(Object o)如果此 collection 包含指定的元素, 则返回 true。

boolean add(E e)确保此 collection 包含指定的元素(可选操作)。
如果此 collection 由于调用而发生更改, 则返回 true。
(如果此 collection 不允许有重复元素, 并且已经包含了指定的元素, 则返回 false。
)boolean isEmpty()如果此 collection 不包含元素, 则返回 true。

boolean remove(Object o)从此 collection 中移除指定元素的单个实例, 如果存在的话(可选操作)。
选项C正确, 本题答案为C。

【29】按照标准I / O模型, Java提供了三种标准流。下列选项中不属于Java提供的标准流的是
〖A〗System.print
〖B〗System.out
〖C〗System.in
〖D〗System.err
System.out输出流、System.in输入流、System.err错误输出流, 选项A说法错误, 本题答案为A。
【30】下列选项中属于过滤字节输出流的类是
〖A〗ByteArrayInputStream
〖B〗BufferedOutputStream
〖C〗FileInputStream
〖D〗FileOutputStream
java.io包中提供了FilterInputStream和FilterOutputStream过滤字节流类分别对其他输入输出流进行特殊的处理, 它们在读/写数据的同时还能够对数据进行特殊的处理。
另外它们还提供了同步机制, 是的某一时刻之后一个线程可以访问输入/输出流。
*FilterInputStream / FilterOutputStream都是抽象类。
*FilterInputStream有三个子类:BufferedInputStream、DataInputStream、PushbackInputStream * FilterOutputStream也有三个子类:BufferedOutputStream、DataOutoutStream、PrintStream

选项B正确, 本题答案为B。

【31】判断一个文件是否存在时, 应使用的方法是
〖A〗isFile()
〖B〗isAbsolute()
〖C〗exists()
〖D〗list()
boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件。
boolean isAbsolute()测试此抽象路径名是否为绝对路径名。
boolean exists()测试此抽象路径名表示的文件或目录是否存在。
String[] list()返回一个字符串数组, 这些字符串指定此抽象路径名表示的目录中的文件和目录。
选项C正确, 本题答案为C。
【32】下列代码实现了将一个文件的内容复制到另一个文件的功能。下划线处应填入的代码是
import java.io.*;
public class test {
    public static void main(String[] args) {
        try {
            FileInputStream is = new ______________("D:\\from.txt");
            FileOutputStream ________ = new FileOutputStream("D:\\to.txt");
            byte[] str = new byte[1024];
            while (is.available() > 0) {
                is.read(str, 0, 1024);
                os.write(str);
            }
            is.close();
            os.close();
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
〖A〗FileInputStream, os
〖B〗FileOutputStream, is
〖C〗FileOutputStream, os
〖D〗FileInputStream, is
本题考查的是对象的声明方式。
选项A正确, 本题答案为A。
【33】当窗口被激活时, 调用的窗口事件的方法是
〖A〗public void windowOpened(WindowEvent);
〖B〗public void windowActivated(WindowEvent);
〖C〗public void windowDeactivated(WindowEvent);
〖D〗public void windowIconified(WindowEvent);
激活调用WindowActivated方法。
选项B正确, 本题答案为B。
【34】下列关于Swing特性的说法中, 错误的是
〖A〗Swing组件具有多样化的特性
〖B〗Swing采用了MVC结构
〖C〗Swing组件的外观与具体平台相关
〖D〗Swing具有可存取性
Swing组件的外观与具体平台无关, 选项C说法错误, 本题答案为C。
【35】下列代码运行后得到的结果是
import javax.swing.*;
public class test {
    public static void main(String[] args) {
        JOptionPane.showConfirmDialog(null, "今天上课吗", "请确认", JOptionPane.YES_NO_CANCEL_OPTION);
    }
}
〖A〗
〖B〗
〖C〗
〖D〗
int javax.swing.JOptionPane.showConfirmDialog(Component parentComponent, Object message, String title, int optionType)throws HeadlessException 第一个参数是父类组件, 第二个参数是显示消息, 第三个参数是会话框标题, 第四个参数是显示的按钮个数, 选项D正确, 本题答案为D。
【36】Java语言实现并发操作的机制是
〖A〗多线程
〖B〗多态
〖C〗虚拟机
〖D〗自动垃圾回收
多线程是Java语言实现并发操作的手段。
选项A正确, 本题答案为A。
【37】为了使下列程序正常运行并且输出"How are you", 在下划线处应填入的是
public class Test3 __________ {
    public static void main(String[] args) {
        Thread t = new _______();
        t.start();
    }
    public void run() {
        System.out.println("How are you");
    }
}
〖A〗extends Thread, Test3
〖B〗extends Thread, Thread
〖C〗implements Runnable, Test3
〖D〗implements Runnable, Thread
本题考查的是线程的实现方法。
线程实现通常有两种方法:一种是继承Thread类, 另一种是实现Runnable接口。
选项A正确, 本题答案为A。
【38】在下列类中, 为了实现对类Workshop对象的并发控制, 在下划线处应填入的是
public class Workshop {
    __________ int num = 0;
    __________ void producer() {
        num++;
    }
    int consumer() {
        synchronized(this) {
            num--;
            return num;
        }
    }
}
〖A〗synchronized, synchronized
〖B〗private, synchronized
〖C〗public, synchronized
〖D〗private, public
对类进行并发控制, 需用私有属性来进行定义变量, 用锁将方法锁起来, 这样就不会出现并发出现异常情况, 选项B正确, 本题答案为B。
【39】下列关于Applet的叙述中, 正确的是
〖A〗Applet中无法显示Swing组件
〖B〗Applet的主类只能定义为Applet类的子类
〖C〗Applet中不支持多线程并发程序设计
〖D〗Applet可以在浏览器中运行
Applet可以显示Swing组件, Applet的主类可以定义为Applet类或JApplet类的子类, Applet支持多线程。
选项D正确, 本题答案为D。
【40】下列程序定义了一个Applet, 为了使程序运行时在浏览器中显示字符串"An Applet test.", 在下划线处应填入的是
import java.awt.*;
import javax.swing.*;
public class AppletTest4 extends JApplet {
    public void ________(Graphics g) {
        _____.drawString("An Applet test.", 10, 10);
    }
}
〖A〗paint, Graphics
〖B〗paint, g
〖C〗init, g
〖D〗start, g
本题考查的是JApplet组件的使用。
继承JApplet应该重写paint方法。
选项B正确, 本题答案为B。

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存
盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是:从键盘输入5个整数, 计算并打印所输入数中的偶数之和。
例如:输入
1
2
3
4
5
则屏幕显示:
偶数之和为6
1.io 2.sum = 0 3.i < 6 4.x % 2 == 0
本题考查的是对流的相关操作
填空1:根据程序中的输入流可知应该需要导入io相关包
填空2:考查的是变量的知识, 局部变量需要在使用前赋初始值。
填空3:程序要求输入5个整数, i从1开始, 要循环5次, i < 6
填空4:判断所有的偶数和, 可以用取余的方式判断
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存
盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
运行程序后, 输出结果为(0, 0)(2, 3)
1.Point[] 2.length 3.Point 4.y
本题考查数组的应用
填空1:数组类型的判断, 后面是new Point[2], 可判断数组类型
填空2 : java中判断数组的长度是用length属性
填空3:有参构造函数的定义
填空4:考察的是get / set方法的应用
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存
盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
程序运行后出现如图所示界面, 点击增大按钮则左边的数字增大, 点击减小
按钮则左边的数字减小。

1.add 2.true 3.BListener2 4.--
本题考查的是Java Swing 相关的知识
填空1:根据程序是将new Change()组件添加到当前容器, 添加到容器使用方法add()。
填空2:根据程序是将窗体设置为可见, 所以在方法中传入参数true
填空3:是给b2添加事件监听器, b2功能为减法操作对应监听器是BListener2
填空4 : count在此应为自减操作
posted @ 2020-03-12 15:57  M了个J  阅读(1233)  评论(0编辑  收藏  举报