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

选择题

公共知识

【1】下列叙述中正确的是
〖A〗算法的时间复杂度与计算机的运行速度有关
〖B〗算法的时间复杂度与运行算法时特定的输入有关
〖C〗算法的时间复杂度与算法程序中的语句条数成正比
〖D〗算法的时间复杂度与算法程序编制者的水平有关
为了能够比较客观地反映出一个算法的效率, 在度量一个算法的工作量时, 不仅应该与所使用的计算机、程序设计语言以及程序编制者无关, 而且还应该与算法实现过程中的许多细节无关。
为此, 可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
算法所执行的基本运算次数还与问题的规模有关; 对应一个固定的规模, 算法所执行的基本运算次数还可能与特定的输入有关。
【2】带链的栈与顺序存储的栈相比, 其优点是
〖A〗入栈与退栈操作方便
〖B〗可以省略栈底指针
〖C〗入栈操作时不会受栈存储空间的限制而发生溢出
〖D〗所占存储空间相同
带链的栈就是用一个线性链表来表示的栈, 线性链表不受存储空间大小的限制, 因此入栈操作时不会受栈存储空间的限制而发生溢出(不需考虑栈满的问题)。
【3】深度为5的完全二叉树的结点数不可能是
〖A〗15
〖B〗16
〖C〗17
〖D〗18
设完全二叉树的结点数为n, 根据深度为k的二叉树至多有2 k - 1个结点, 再根据完全二叉树的定义可知, 2 k - 1 - 1 < n≤2 k - 1。
本题中完全二叉树的深度为5, 则2 5 - 1 - 1 < n≤2 5 - 1, 15 < n≤31。
因此, 结点数不能为15。
本题中完全二叉树的深度为5, 则25 - 1 - 1>因此, 结点数不能为15。
>
因此, 结点数不能为15。
>
本题中完全二叉树的深度为5, 则25 - 1 - 1>因此, 结点数不能为15。
>
因此, 结点数不能为15。
>

【4】线性表的长度为n。在最坏情况下, 比较次数为n - 1的算法是
〖A〗顺序查找
〖B〗同时寻找最大项与最小项
〖C〗寻找最大项
〖D〗有序表的插入
顺序查找要逐个查看所有元素, 会比较n次。
在最坏情况下, 寻找最大项无论如何需要查看表中的所有元素, n个元素比较次数为n - 1。
同时寻找最大项和最小项, 需要为判断较大值和较小值分别进行比较, 会有更多的比较次数。
有序表的插入最坏情况下是插入到表中的最后一个元素的后面位置, 则会比较n次。
【5】下面属于良好程序设计风格的是
〖A〗源程序文档化
〖B〗程序效率第一
〖C〗随意使用无条件转移语句
〖D〗程序输入输出的随意性
要形成良好的程序设计风格, 主要应注意和考虑:源程序文档化; 数据说明的次序规范化, 说明语句中变量安排有序化, 使用注释来说明复杂数据的结构; 程序编写要做到清晰第一、效率第二, 先保证程序正确再要求提高速度, 避免不必要的转移; 对所有的输入数据都要进行检验, 确保输入数据的合法性。
【6】下面属于工具(支撑)软件的是
〖A〗IOS系统
〖B〗数据库管理系统
〖C〗财务管理系统
〖D〗Studio.NET
支撑软件是介于系统软件和应用软件之间, 协助用户开发的工具性软件, 包括辅助和支持开发和维护应用软件的工具软件, 如需求分析软件, 设计工具软件, 编码工具软件, 测试工具软件, 维护工具软件等, 也包括辅助管理人员控制开发进程和项目管理的工具软件, 如计划进度管理工具软件, 过程控制工具软件, 质量管理及配置管理工具软件等。
IOS系统、数据库管理系统属于系统软件, 财务管理系统属于应用软件, Studio.NET属于支撑软件。
【7】程序调试的任务是
〖A〗发现并改正程序中的错误
〖B〗诊断和改正程序中的错误
〖C〗发现程序中的错误
〖D〗设计和运行测试用例
程序调试的任务是诊断和改正程序中的错误; 而软件测试是尽可能多的发现软件中的错误。
软件测试贯穿整个软件生命周期, 程序调试主要在开发阶段。
【8】在数据库系统中, 数据模型包括概念模型、逻辑模型和
〖A〗物理模型
〖B〗空间模型
〖C〗时间模型
〖D〗谓词模型
数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型。

概念数据模型简称概念模型, 它是一种面向客观世界、面向用户的模型;
它与具体的数据库管理系统无关, 与具体的计算机平台无关。

逻辑数据模型又称逻辑模型, 它是一种面向数据库系统的模型, 该模型着重于在数据库系统一级的实现。

物理数据模型又称物理模型, 它是一种面向计算机物理表示的模型, 此模型给出了数据模型在计算机上物理结构的表示。

【9】关系数据模型的三个组成部分中不包括
〖A〗关系的数据操纵
〖B〗关系的并发控制
〖C〗关系的数据结构
〖D〗关系的完整性约束
关系数据模型的三个组成部分:关系的数据结构(用二维表表示), 关系操纵(查询、删除、插入、修改), 关系的数据约束(实体完整性约束、参照完整性约束、用户定义的完整性约束)。
【10】关系数据库规范化的目的是为了解决关系数据库中的
〖A〗数据操作复杂的问题
〖B〗查询速度低的问题
〖C〗插入、删除异常及数据冗余问题
〖D〗数据安全性和完整性保障的问题
关系模式进行规范化的目的是使关系结构更加合理, 消除存储异常, 使数据冗余尽量小, 便于插入、删除和更新等操作。

专业知识

【11】下列选项中, 不是由Java虚拟机完成的任务是
〖A〗加载Java代码
〖B〗编译Java代码
〖C〗校验Java代码
〖D〗执行Java代码
编译java代码是把java文件编译为class文件, 由编译器完成, jvm执行的是class文件, 执行需要加载, 校验, 执行……选项B错误, 本题答案为B。
【12】下列选项中, 不是Java有效注释的是
〖A〗//Using comments is a good habit.
〖B〗/Using comments is a good habit.
〖C〗/**Using comments is a good habit.*/
〖D〗/*Using comments is a good habit.*/
单行注释:以" // "开头后面接所要加的说明的内容

多行注释:以"/"开头, 以"/"结尾。

文档注释:以"/**"开头, 以"*/"结尾。

没有"/"的注释, 选项B不是有效注释, 本题答案为B。

【13】下列有关构造方法的描述中, 正确的是
〖A〗构造方法的名字可以随意确定
〖B〗构造方法的返回类型是void
〖C〗构造方法可以重载
〖D〗构造方法是没有参数的
构造器方法的名字是跟类名一致的, 选项A错误

构造器方法没有返回值并且也不用void, 选项B错误

构造器分为无参构造器和有参构造器属于方法的重载, 选项D错误, 选项C正确。
本题答案为C。

【14】下列变量定义中, 错误的是
〖A〗long k = 123L;
〖B〗float f = 3.14f;
〖C〗int i = "12";
〖D〗double d = 1.559;
在Java中整数默认类型为int类型, 浮点数默认为double类型, 用双引号引起来的是String类型, 在整数后面加"L/l"是long类型, 小数后面加"F/f"即为float类型, 选项C错误, 本题答案为C。
【15】下列代码段执行后, t的值为
int a = 2, b = 4, c = 6, t = 0;
t = a > b ? a : b > c ? b : c;
〖A〗0
〖B〗2
〖C〗4
〖D〗6
其考察三目运算 a > b ? a : b > c ? b : c; 是找出a, b, c三者最大值, 表达式a > b返回值为false, 结果为b, 表达式b > c返回值为false, 结果为c的值, 选项D正确, 本题答案为D。
【16】下列选项中, 不属于逻辑运算符的是
〖A〗!=
〖B〗&
〖C〗||
〖D〗!
!是逻辑非, ||是逻辑或, &&是逻辑与 !=是关系运算符不等于

本题答案为A。

【17】break语句在循环中的作用是
〖A〗结束本次循环, 执行下一次
〖B〗跳出循环体, 结束循环
〖C〗终止程序运行
〖D〗执行完break后的一条语句就终止程序
break : (1).结束当前整个循环, 执行当前循环下边的语句。
忽略循环体中任何其它语句和循环条件测试。
(2).只能跳出一层循环, 如果你的循环是嵌套循环, 那么你需要按照你嵌套的层次, 逐步使用break来跳出。
[逐层判断, 逐步跳出](3).break在循环体内, 强行结束循环的执行, 也就是结束整个循环过程, 不在判断执行循环的条件是否成立, 直接转向循环语句下面的语句。
(4).当break出现在循环体中的switch语句体内时, 其作用只是跳出该switch语句体。
总的来说:就近原则, 结束当前的整个循环。
选项B正确, 本题答案为B。
【18】下列代码段执行后, f的值为
int a = 2, b = 10, f;
f = a;
for (int i = 1; i < b; i++)
    f = f * a;
〖A〗2
〖B〗512
〖C〗20
〖D〗1024
循环体执行9次, 但是加上f初始值为2, 所以循环里面就是10个2相乘, 结果为1024, 选项D正确, 本题答案为D。
【19】下列代码段执行后, x的值为
int x = 5;
do {
    x = x - 1;
} while (x-- > 0);
〖A〗0
〖B〗-1
〖C〗1
〖D〗4
考察了先"--" 与后"--"的区别 后"--"是先运算后自减一, 所以当x = 1时是符合循环的 但是符合之后还要自减一x值就为0了, 然后再循环一次, 即结果为-1, 选项B正确, 本题答案为B。
【20】下列代码段执行后, n的值为
int n = 0;
int[] a = new int[5];
for (int i = 0; i < 5; i++)
    a[i] = 5 - i;
for (int i = 0; i < 5; i++)
    if (a[i] > i)
        n++;
〖A〗0
〖B〗2
〖C〗3
〖D〗4
第一个for循环是给数组赋值即a = { 5, 4, 3, 2, 1 } 第二个循环有a[0] > 0 n = 1, a[1] > 1 n = 2, a[2] > 2 n = 3, , a[3]不大于3, 循环结束 结果为3, 本题答案为C。
【21】若有语句Class c0 = Class.forName("java.util.Date "), 可得到类Date的修饰符的方法是
〖A〗c0.getModifiers()
〖B〗c0.getSuperclass()
〖C〗c0.getMethod()
〖D〗c0.getDeclaredMethods()
A)c0.getModifiers()//获得属性的修饰符, 例如public, static等

B)c0.getSuperclass()//获取父类的Class对象

C)c0.getMethod()//获取Class对象的方法:D)c0.getDeclaredMethods()//返回 Method 对象的一个数组, 这些对象反映此 Class 对象表示的类或接口声明的所有方法, 包括公共、保护、默认(包)访问和私有方法, 但不包括继承的方法。
选项A正确, 本题答案为A。

【22】Java语言中拥有属性和行为的实体是
〖A〗对象
〖B〗
〖C〗方法
〖D〗构造方法
Java 是一门面向对象语言, 对象拥有属性和行为的实体, 实例化的类才有属性和行为, 实例化的类也就是对象, 选项A正确, 本题答案为A。
【23】下列语句执行后, s的值为
String greeting = "Hello,everybody!";
String s = greeting.substring(0, 4);
〖A〗Hell
〖B〗ello
〖C〗Hello
〖D〗llo
public String substring(int beginIndex, int endIndex)返回一个新字符串, 它是此字符串的一个子字符串。
该子字符串从指定的 beginIndex 处开始, 直到索引 endIndex - 1 处的字符。
选项A正确, 本题答案为A。
【24】下列语句执行后, i的值为
String str = "rock\"n\"roll";
String str1 = "\"";
int i = str.indexOf(str1);
〖A〗5
〖B〗6
〖C〗7
〖D〗4
返回指定字符在此字符串中第一次出现处的索引。
选项D正确, 本题答案为D。
【25】下列程序段执行后的输出结果是
int[][] b = { { 1, 2, 3 }, { 4, 5 }, { 6 } };
int sum = 0;
for (int i = 0; i < b.length; i++) {
    for (int j = 0; j < b[i].length; j++) {
        sum += b[i][j];
    }
}
System.out.println(sum);
〖A〗28
〖B〗6
〖C〗9
〖D〗21
b[0][0] + b[0][1] + b[0][2] + b[1][0] + b[1][1] + b[2][0] = 1 + 2 + 3 + 4 + 5 + 6 = 21, 选项D正确, 本题答案为D。
【26】自定义异常类的父类可以是
〖A〗Error
〖B〗Thread
〖C〗Exception
〖D〗VirtuaMachineError
所有异常的父类均可以为Exception, 选项C正确, 本题答案为C。
【27】下列语句执行时, 若文件"customer.dat"不存在, 则会产生的异常是
FileInputStream fis = new FileInputStream("customer.dat");
〖A〗FileNotFoundException
〖B〗EOFException
〖C〗NullPointerException
〖D〗ArithmeticException
A)FileNotFoundException 找不到文件异常

B)EOFException 文件结束异常

C)NullPointerException 空指针异常

D)ArithmeticException 算术异常

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

【28】下列选项中, 实现了接口List的类是
〖A〗HashSet
〖B〗LinkedList
〖C〗TreeSet
〖D〗HashMap
A)HashSet 实现Set接口

B)LinkedList 实现List接口

C)TreeSet 实现Set接口

D)HashMap 实现Map接口

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

【29】下列关于字符流的说法错误的是
〖A〗字符流是双字节流
〖B〗字符流中的Unicode码是使用一个字节表示的
〖C〗字符流又分为输入和输出两部分
〖D〗字符流的抽象类为Reader和Writer
BMP 的字符是 Unicode 中最基础和最常用的一部分, 以 UTF - 16 编码时使用2字节, 以 UTF - 8 编码时使用1至3字节。
超出 BMP 的字符以 UTF - 16 或 UTF - 8 编码都需要4字节。
另外还有一个比较少用的编码形式, UTF - 32, 它编码任何 Unicode 字符都需要4个字节。
Unicode 的基础是一个编号的字符集, 在字符集之上又规定了模块化的编码等等技术层次, 各种具体的编码形式并不一致, Unicode 只有两个字节这句话根本不成立。
选项B说法错误, 本题答案为B。
【30】下列选项中不属于接口的是
〖A〗Serializable
〖B〗ObjectInput
〖C〗DataInputStream
〖D〗FilenameFilter
A)Serializable Serializable接口是启用其序列化功能的接口。

B)ObjectInput ObjectInput 扩展 DataInput 接口以包含对象的读操作。
DataInput 包括基本类型的输入方法;
ObjectInput 扩展了 该接口, 以包含对象、数组和 String 的输出方法。

C)DataInputStream 数据输入流属于Java类

D)FilenameFilter FilenameFilter是文件名过滤器, 用来过滤不符合规格的 文件名, 并返回合格的文件;
本题答案为C。

【31】下列选项中不属于File类提供的操作是
〖A〗文件的建立
〖B〗文件的删除
〖C〗文件的读写
〖D〗设置文件只读属性
File类是java.io包中的非流类, 它以系统无关的方式描述文件对象的属性。
File类只操作文件在磁盘上的属性, 而读写文件内容的功能则需要流类提供。
所以选项C说法错误。
本题答案为C。
【32】下列代码实现了从一个文件中读取字符并输出的功能。下划线处应填入的代码是
import java.io.*;
public class test {
    public static void main(String[] args) {
        String str = "";
        String r = "";
        try {
            BufferedReader br = new BufferedReader(new FileReader("d:\\test.txt"));
            while (___________________) {
                str += r;
            }
            System.out.println(str);
        } catch (IOException e) {
            System.out.println("文件读取错误!");
        }
    }
}
〖A〗(r = br.readLine()) != null
〖B〗br.readLine() != null
〖C〗(r = readLine()) != null
〖D〗(r = br.readLine()) == null
BufferedReader类提供的readLine()读取字符方法, 不为空才会一直读取下去, 知道返回-1表示读完。
选项A正确, 本题答案为A。
【33】Java中所有事件对象的基类是
〖A〗java.lang.Object
〖B〗java.util.EventObject
〖C〗java.util.Object
〖D〗java.lang.EventObject
Object在lang中, 选项C错误, EventObject在util包中, 选项D错误, 所有事件状态对象都是从EventObject派生的根类。
选项B正确, 本题答案为B。
【34】Swing中用于显示常用工具控件的容器是
〖A〗JToolBar
〖B〗JInternalFrame
〖C〗JTable
〖D〗JMenu
A)工具栏(JToolBar) B)JInternalFrame(窗口与面板)C)JTable(表格)D)JMenu(菜单和菜单项)本题答案为A。
【35】JOptionPane中参数messageType的含义是
〖A〗对话框中所显示的描述信息
〖B〗定义message的样式
〖C〗定义在对话框底部显示的选项按钮集合
〖D〗在对话框底部所显示的选项按钮集合的详细描述
MessageType定义 message 的样式。
外观管理器布置的对话框可能因此值而异, 并且往往提供默认图标。
选项B正确, 本题答案为B。
【36】下列说法中错误的是
〖A〗线程就是进程
〖B〗线程是一个程序的单个执行流
〖C〗多线程用于实现并发程序设计
〖D〗多线程是指一个程序的多个执行流
进程中可以包含多个线程, 选项A错误, 本题答案为A。
【37】阅读下列程序:
public class ThreadTest {
    public static void main(String[] args) {
        Thread t = new Thread(new SayHello());
        t.start();
        new SayHello().run();
    }
}
class SayHello implements Runnable {
    int i = 0;
    public void run() {
        while (true) {
            System.out.println("  Hello " + i++);
            if (i == 2)
                break;
        }
    }
}
下列对程序编译和运行结果描述的选项中, 正确的是
〖A〗程序不能通过编译, 因为在main()方法中不能调用SayHello类的run()方法
〖B〗程序不能通过编译, 因为在run()方法中不能调用Thread.currentThread()方法
〖C〗程序通过编译, 运行时输出 Hello 0 Hello 1
〖D〗程序通过编译, 一次运行的输出结果可以为:Hello 0 Hello 1 Hello 0 Hello 1
实现Runnable就可以不用.start()方法也可以执行线程, 把需要处理的代码放到run()方法中, start()方法启动线程将自动调用run()方法, 这个由java的内存机制规定的。
并且run()方法必需是public访问权限, 返回值类型为void。
选项D正确, 本题答案为D。
【38】如果要让线程进入睡眠状态, 可以使用的方法是
〖A〗start()
〖B〗close()
〖C〗setDaemon()
〖D〗sleep()
A start()方法启动线程

B 套接字的close()方法可以退出线程

C void setDaemon(boolean on)将该线程标记为守护线程或用户线程。

D 使当前线程(即调用该方法的线程)暂停执行一段时间, 让其他线程有机会继续执行, 但它并不释放对象锁。

本题答案为D。

【39】在用户的Applet中, 为了完成一些图形化显示, 一般需要重写的方法是
〖A〗init()
〖B〗paint()
〖C〗start()
〖D〗draw()
paint()方法。
Applet的paint()方法具体执行Applet的绘制。
该方法的参数是一个Graphics类的对象, 该对象相当于Applet的画笔, 通过它向Applet中显示信息。
在调用paint()方法时, 由浏览器将该对象传递给paint()方法。
选项B正确, 本题答案为B。
【40】下列程序定义了一个Applet, 为了使程序运行时在浏览器中显示字符串Good Morning !, 在下划线处应填入的是
import java.awt.*;
import javax.swing.*;
public class AppletTest extends ________ {
    JTextField f;
    public void ________() {
        Container contentPane = getContentPane();
        f = new JTextField();
        f.setText(" Good Morning!");
        contentPane.add(f);
    }
}
〖A〗JApplet, paint
〖B〗Applet, init
〖C〗JApplet, init
〖D〗Applet, paint
程序导入的是swing包, JApplet属于swing包中的类, Applet属于awt包中类, 选项B, D错误, 继承JApplet类需重写init初始化方法, 选项C正确, 本题答案为C。

编程题

【41】在考生文件夹中存有文件名为Java_1.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存
盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
程序的功能是计算一组学生成绩的等级, 运行结果如图所示。

1.int 2.i < scores.length 3.best < scores[i] 4.else if
考察了对数组的定义 循环结构和分支结构的知识点
填空1:考察了对数组的定义, 因为数组内容为整型所以要定义为int类型
填空2:获取数组的长度用length属性
填空3:是要选出最大值将其赋值给best 所以if判断应该为其与数组中每个整数比较, 若小于则将数组值赋值给它既可
填空4:考察了分支结构基本语法填上else if既可
【42】在考生文件夹中存有文件名为Java_2.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。
存盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
阅读Java_2.java程序, 完成程序并运行, 所得结果为:
Hello World !
---------------------
Hello !
---------------------
HELLO WORLD !!
---------------------
Catch 3
Ending the print.
---------------------
1.greetings 2.catch 3.e 4.i++
考察了对数组的使用 异常的处理和循环结构的使用
填空1:考察了对数组的使用, 其想打印greetings数组内容所以写greetings
填空2:是写出了try 其对应catch 异常处理的一种方式
填空3:处理异常时用其引用去调用相关方法能获取相关值
填空4 : while循环不能一直无限循环下去 加上朝着循环结束的趋势条件i++既可
【43】在考生文件夹中存有文件名为Java_3.java的文件, 该程序是不完整的, 请
在注释行"//**********Found**********"下一行语句的下划线地方填入
正确内容, 然后删除下划线, 请勿删除注释行或改动其他已有语句内容。存
盘时文件必须存放在考生文件夹下, 不得改变原有文件的文件名。
本题的要求是:
程序运行后显示如图所示界面, 按"复制文件"按扭后, 将当前目录下的a.txt
文件中的数据写到另一个文件b.txt中。

1.JFrame 2.b 3.new FileInputStream 4.new FileOutputStream
考察了窗口和流的知识点
填空1:创建窗口, 需要new一个JFrame
填空2:将按钮加入到f.getContentPane()
填空3:复制文件时读取文件需用到FileInputStream流提供的read()读取相关内容
填空4:复制文件时写入文件需用到FileOutputStream流提供的write()写入读取到的相关内容
posted @ 2020-03-12 16:00  M了个J  阅读(1243)  评论(0编辑  收藏  举报