选择题
公共知识
【1】下列叙述中正确的是()。
〖A〗一个算法的空间复杂度大, 则其时间复杂度也必定大
〖B〗一个算法的空间复杂度大, 则其时间复杂度必定小
〖C〗一个算法的时间复杂度大, 则其空间复杂度必定小
〖D〗算法的时间复杂度与空间复杂度没有直接关系
算法的空间复杂度是指算法在执行过程中所需要的内存空间, 算法的时间复杂度, 是指执行算法所需要的计算工作量, 两者之间并没有直接关系, 答案为D。
【2】下列叙述中正确的是()。
〖A〗循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
〖B〗循环队列中的元素个数随队头指针的变化而动态变化
〖C〗循环队列中的元素个数随队尾指针的变化而动态变化
〖D〗以上说法都不对
在循环队列中, 用队尾指针rear指向队列中的队尾元素, 用排头指针front指向排头元素的前一个位置。因此, 从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化, A正确。
【3】一棵二叉树中共有80个叶子结点与70个度为1的结点, 则该二叉树中的总结点数为()。
〖A〗219
〖B〗229
〖C〗230
〖D〗231
二叉树中, 度为0的节点数等于度为2的节点数加1, 即n2 = n0 - 1, 叶子节点即度为0, 则n2 = 79, 总结点数为n0 + n1 + n2 = 80 + 70 + 79 = 229, 答案为B。
【4】对长度为10的线性表进行冒泡排序, 最坏情况下需要比较的次数为()。
冒泡法是在扫描过程中逐次比较相邻两个元素的大小, 最坏的情况是每次比较都要将相邻的两个元素互换, 需要互换的次数为9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45, 选C。
【5】构成计算机软件的是()。
〖A〗源代码
〖B〗程序和数据
〖C〗程序和文档
〖D〗程序、数据及相关文档
软件指的是计算机系统中与硬件相互依赖的另一部分, 包括程序、数据和有关的文档, 选D。
【6】软件生命周期可分为定义阶段、开发阶段和维护阶段, 下面不属于开发阶段任务的是()。
〖A〗测试
〖B〗设计
〖C〗可行性研究
〖D〗实现
开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计3个阶段, 实施则包括编码和测试两个阶段, C不属于开发阶段。
【7】下面不能作为结构化方法软件需求分析工具的是()。
〖A〗系统结构图
〖B〗数据字典(D - D)
〖C〗数据流程图(DFD图)
〖D〗判定表
结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
【8】在关系模型中, 每一个二维表称为一个()。
〖A〗关系
〖B〗属性
〖C〗元组
〖D〗主码(键)
关系模型采用二维表来表示, 即每个二维表称为一个关系。
【9】若实体A和B是一对多的联系, 实体B和C是一对一的联系, 则实体A和C的联系是()。
〖A〗一对一
〖B〗一对多
〖C〗多对一
〖D〗多对多
A和B为一对多的联系, 则对于A中的每一个实体, B中有多个实体与之联系, 而B与C为一对一联系, 则对于B中的每一个实体, C中之多有一个实体与之联系, 则可推出对于A中的每一个实体, C中有多个实体与联系, 所以为一对多联系。
【10】有三个关系R, S和T如下:

则由关系R和S得到关系T的操作是()。
关系T中的元素与关系R和关系S中不同元素的总和, 因此为并操作。
专业知识
【11】Java语言与C++语言相比, 独有的特点是
〖A〗面向对象
〖B〗解释型与平台无关性
〖C〗有丰富的类库支持
〖D〗高性能
本题考查Java语言的特性.Java语言与C++语言都是面向对象的语言。因此, 选项A是错误的。Java语言和C++语言中都包含有类库, 提供了大量的类以满足用户的多方面需要。因此, 选项C是错误的。Java语言与C++语言都是高性能的编程语言。本题答案为B。
【12】在下列程序中, 标识符的定义合法但不符合命名约定的是
public class ID_Test2 {
int I = 0;
char str = 's';
char abc = 'c';
double _dou = 3.14;
public static void main(String[] args) {
ID_Test2 t = new ID_Test2();
System.out.println("I= " + t.I);
System.out.println("abc= " + t.abc);
System.out.println("_dou= " + t._dou);
}
}
〖A〗第2和3行
〖B〗第2行、第4行和第5行
〖C〗第3行和第5行
〖D〗第2行和第5行
本题考查java的命名规范。
根据驼峰命名法规则, 变量名如果只有一个单词则小写。开头不能用下划线。选项D正确, 本题答案为D。
【13】下列选项中, 不是Java基本数据类型的是
〖A〗long
〖B〗double
〖C〗unsigned
〖D〗byte
Java语言提供了八种基本类型。六种数字类型(四个整数型, 两个浮点型), 一种字符类型, 还有一种布尔型。1、整数: 包括int, short, byte, long
2、浮点型: float, double
3、字符: char
4、布尔: boolean
选项C正确, 本题答案为C。
【14】若想判断一个整数是否为偶数, 需要用到的运算符是
本题考查Java 的运算符。%为取余运算符可以判断一个数是否为偶数。选项A正确, 本题答案为A
【15】若已有下列定义, 则值为4的表达式是
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char c = 'a', d, g;
〖A〗a[g - c]
〖B〗a[4]
〖C〗a[‘d‘ - ‘c‘]
〖D〗a[‘d‘ - c]
数值4也就是这个定义数组的第四个数
也就是a[3]
char c = ‘a‘, 而‘a‘代表了ASCLL码, 表示的是十进制的97, 那么c = 97。
而‘d‘也表示的是ASCLL码, 意味着十进制的100。
所以‘d‘ - c = 100 - 97 = 3
所以就有了4的表达式为a [‘d‘ - c ]。选项D正确, 本题答案为D。
【16】下列代码段执行后, n 的值为
int n = 0;
char k = 'a';
switch (k) {
case 'a': n ++;
case 'b': n += 2; break;
case 'c': n += 3; break;
}
switch case语句, 当里面判断执行完后需要加入break; 以退出选择, 否则将一直继续往下执行到结束。所以 case’a’: n++; 结果为1, 继续往下运行case ‘b‘: n += 2; break; 结果为3.有break关键字, 结束运行。选项C正确, 本题答案为C。
【17】下列选项中, 不能正确表示无限循环的是
〖A〗for (; ; );
〖B〗while (true);
〖C〗while (1 == 1);
〖D〗do { …… } while (0);
本题考查循环语句的语法。
do while循环结构 while括号里应该是一个布尔表达式, 不能为0。选项D正确, 本题答案为D。
【18】下列代码段执行后, sum 的值为
int sum = 0;
for (int i = 1; i < 10 ; i = i + 2)
if (i / 4 == 1) sum += i;
本题考查for循环的执行过程。
For循环执行顺序是: 初始化--判断--函数体——然后for循环的第3句--判断——函数体---for循环的第三句--判断……选项D正确, 本题答案为D。
【19】下列代码段执行后, count 的值为
int count = 0;
for (int i = 0; i < 5; i++) {
for (int j = 1; j <= 5; j++)
count++;
}
本题考查双层for循环结构, 内层循环5次, 每次count + 1, 外层循环5次, 每次count + 1, 共循环25次。选项D正确, 本题答案为D。.
【20】下列代码段执行后的结果是
int i = 0;
int x = 0;
int[] num = { 1, 2, 3, 4, 5 };
while (++i < 4) {
System.out.print(" " + num[++x]);
}
〖A〗1 2 3 4 5
〖B〗2 3 4 5
〖C〗1 2 3 4
〖D〗2 3 4
本题考查的是while循环和数组
数组下标从0开始, 选项D正确, 本题答案为D。
【21】数组中各个元素的数据类型是
〖A〗相同的
〖B〗不同的
〖C〗部分相同的
〖D〗任意的
本题考查数组的相关知识。
数组是同种数据类型的集合, 所以数组中各个元素的数据类型必须是相同的。选项A正确, 本题答案为A。
【22】关于下列代码的说法中, 正确的是
public class Manager {
static String name[] = new String[10];
public static void main(String args[]) {
System.out.println(name[9]);
}
}
〖A〗编译时将产生错误
〖B〗编译时正确, 运行时将产生错误
〖C〗输出0
〖D〗输出为null
本题考查数组的相关知识。
String类型的数组, 默认值为null。选项D正确, 本题答案为D。
【23】执行下列代码的第10行语句时, 所调用的方法是
class Employer {
public void promote(int i, int j) { ... }
public void promote(int i) { ... }
}
public class Manager extends Employer {
public void promote() { ... }
public void promote(int i) { ... }
public static void main(String args[]) {
Employer e = new Employer();
e.promote(99, 100);
}
}
〖A〗第2行定义的方法
〖B〗第3行定义的方法
〖C〗第6行定义的方法
〖D〗第7行定义的方法
本题考查方法的调用。
第10行的的方法有两个参数, 即调用第二行的方法。选项A正确, 本题答案为A。
【24】接口中, 除了抽象方法之外, 还可以含有的是
〖A〗变量
〖B〗常量
〖C〗成员方法
〖D〗构造方法
接口只提供抽象方法, 但并不提供对其的实现, 并且方法默认都是公有的, 而提供实例字段和方法实现是继承接口类的任务, 所以接口中没有成员方法和构造方法。接口中还可以定义常量, 但不能定义变量。选项B正确, 本题答案为B。
【25】下列代码中构造方法的返回类型是
public class City {
public static void main(String args[]) {
City c = new City();
}
City() {
System.out.println("Working in City");
}
}
〖A〗null
〖B〗integer
〖C〗String
〖D〗无
本题考查Java面向对象的知识。
构造方法中没有返回值。选项D正确, 本题答案为D。
【26】下列代码的运行结果是
public class ExceptionsHandling {
static void test(int i) throws ArithmeticException, ArrayIndexOutOfBoundsException {
if (i == 0) {
System.out.println("Everything is OK");
return;
} else if (i == 1) {
int myArray[] = new int[4];
myArray[1] = 3;
}
}
public static void main(String args[]) {
try {
test(0);
test(1);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("catch " + e);
} finally {
System.out.println("test over");
}
}
}
〖A〗Everything is OK
〖B〗Everything is OK catch java.lang. ArrayIndexOutOfBoundsException: 4 test over
〖C〗test over
〖D〗Everything is OK test over
本题考查if判断语句及异常处理。输入0满足if 中i == 0, 执行里面语句块, finally代码块在处理异常时无论有没有异常都会执行里面的语句块, 选项D正确, 本题答案为D。
【27】下列代码的运行结果是
public class ChangeValue {
String name;
public static void main(String args[]) {
double d;
ChangeValue cv = new ChangeValue();
d = 100.0;
System.out.println("double is:" + d);
cv.changeDouble(d);
System.out.println("changed double is:" + d);
cv.name = "Java";
System.out.println("name is:" + cv.name);
cv.changeName(cv);
System.out.println("changed name is:" + cv.name);
}
public void changeDouble(double d) {
d = 200.0;
}
public void changeName(ChangeValue c) {
c.name = "Android";
}
}
〖A〗double is: 100.0 changed double is: 200.0 name is: Java
〖B〗double is: 100.0 changed double is: 100.0 name is: Java
〖C〗double is: 100.0 changed double is: 200.0 name is: Java changed name is: Java
〖D〗double is: 100.0 changed double is: 100.0 name is: Java changed name is: Android
本题考查方法的调用。根据方法调用的顺序, 选项D正确, 本题答案为D。
【28】下列代码的运行结果是
public class StringTest {
public static void main(String args[]) {
char chars[] = { 'J', 'a', 'v', 'a', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e' };
String s = new String(chars);
String s1 = s.concat("and");
System.out.println(s1);
}
}
〖A〗Javalanguage
〖B〗Javalanguageand
〖C〗and Javalanguage
〖D〗and
本题考查String类的concat方法的使用。
Concat: 将指定字符串连接到此字符串的结尾。选项B正确, 本题答案为B。
【29】下列说法中错误的是
〖A〗CharArrayReader和ByteArrayInputStream都是从内存读数据
〖B〗CharArrayReader是将一个字节数组作为其返回数据的字节输入流
〖C〗ByteArrayInputStream是带缓冲区的输入流
〖D〗FilterReader是一个抽象类
与 ByteArrayInputStream 对应此类实现一个可用作字符输入流的字符缓冲区, 选项B不满足条件, 本题答案为B
CharArrayReader 是一个把字符数组作为源的输入流的实现。所以本题答案为B。
【30】下列代码实现了以对象流方式向score.txt文件写入数据的功能。下划线处应填入的代码是
import java.io.*;
public class testOut {
public static void main(String[] args) {
int[] data = new int[3];
data[0] = 100;
data[1] = 95;
data[2] = 80;
try {
ObjectOutputStream out =
new _______________(new FileOutputStream("score.txt"));
out.writeObject(data);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
〖A〗ObjectOutputStream
〖B〗FileOutputStream
〖C〗FileWriter
〖D〗DataOut
本题考查数据流的知识。
ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。选项A正确, 本题答案为A。
【31】下列选项中能实现连接管道流的方法是
〖A〗write()
〖B〗flush()
〖C〗connect()
〖D〗print()
题考查IO流 管道流
Write()向管道流中写入数据(发送); flush()在java中是刷新缓冲区的作用; connect()是实现连接管道流的方法。print()是输出数据。所以本题答案为C。
【32】下列说法正确的是
〖A〗InputStream是字符流类
〖B〗OutputStream是字符流类
〖C〗Reader是字符流类
〖D〗BufferedReader可以向文件中写入一行数据
本题考查IO流
InputStream, OutputStream都是字节流类, BufferedReader这个类就是一个包装类, 它可以包装字符流, 将字符流放入缓存里, 先把字符读到缓存里, 到缓存满了或者你flush的时候, 再读入内存, 就是为了提供读的效率而设计的。所以本题答案为C。
【33】JOptionPane类中的参数optionType的作用是
〖A〗定义作为此对话框的Component
〖B〗定义Message的样式
〖C〗定义在对话框底部显示的选项按钮集合
〖D〗定义显示的对话框类型
本题考查Java API方法
Swing中提供了JOptionPane类。optionType: 定义在对话框的底部显示的选项按钮的集合。选项C正确, 本题答案为C。
【34】下列选项中不能实现事件响应的方式是
〖A〗通过事件适配器
〖B〗通过事件响应内部类
〖C〗通过自定义函数
〖D〗通过匿名类
本题考查java事件处理机制。
适配器 其实 从 接口事件演变尔来的 相当于触发器 说简单点 它就是一些动作 。而自定义函数不能实现事件响应, 选项C正确, 本题答案为C。
【35】当键盘被按下时, 将调用的键盘事件接口方法是
〖A〗void keyTyped(KeyEvent);
〖B〗void keyReleased(KeyEvent);
〖C〗void keyPressed(KeyEvent);
〖D〗void keyUpDown(KeyEvent);
本题考查java键盘事件。
键盘监听接口的API: void keyPressed(KeyEvent e)按下键时调用。
void keyReleased(KeyEvent e)当键已被释放时调用。
void keyTyped(KeyEvent e)键入键时调用。
选项C正确, 本题答案为C。
【36】下列程序的编译和运行结果是
public class Test implements Runnable {
public static void main(String[] args) {
Thread tt = new Thread();
tt.start();
}
public void run() {
System.out.println("Good luck!");
}
}
〖A〗程序不能通过编译, 提示第1行有错
〖B〗程序通过编译, 并且运行时输出字符串Good luck!
〖C〗程序通过编译, 但运行时没有输出字符串Good luck!
〖D〗程序不能通过编译, 提示第3行有错
本题考查的是线程中的方法。
java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的, 方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。start()方法来启动线程, 真正实现了多线程运行。这时无需等待run方法体代码执行完毕, 可以直接继续执行下面的代码。选项C正确, 本题答案为C。
【37】下列方法调用后, 可能会使线程进入可运行状态的是
〖A〗join()
〖B〗isAlive()
〖C〗sleep()
〖D〗yield()
本题考查线程相关的方法。
join()把指定的线程加入到当前线程。isAlive()功能是判断当前线程是否处于活动状态。sleep()是让线程进行休眠状态。选项D正确, 本题答案为D。
【38】在堆栈类StackTest的定义中, 为了保证堆栈在并发操作中数据的正确性, 应在下划线处填入的代码自上而下分别是
public class StackTest {
private int idx = 0 ;
private char[] data = new char[10];
public ________ void push(char c) { …… }
public ________ void pop() { …… }
}
〖A〗synchronized, synchronized
〖B〗synchronized, 不用填写
〖C〗不用填写, synchronized,
〖D〗都不用填写
本题考查Java堆栈知识
堆栈中使用相同的synchronized是为了保证访问数据的一致性。
选项A正确, 本题答案为A。
【39】下列关于Applet的叙述中, 正确的是
〖A〗Applet是可以在浏览器中运行的Java类
〖B〗Applet中不能构造swing界面
〖C〗同一个页面中的Applet之间不能通信
〖D〗Applet不支持多线程
本题考查Java中的Applet类。
Application以main()方法为入口点运行, Applet要在浏览器或appletviewer中运行, 运行过程比Application更复杂。所以答案为A。
【40】列代码包括一个HTML文件和一个定义Applet类的Java程序。为了使HTML文件在浏览器中运行时显示"Good Morning!", 在下划线处应填入的代码是
/*hello.html*/
<HTML>
<HEAD>
<TITLE > Hello </TITLE>
</HEAD>
<BODY>
<APPLET CODE = " HelloApplet.class "_______ = 150 _______ = 25>
</APPLET>
</BODY>
</HTML>
/*HelloApplet.java*/
import java.awt.* ;
import java.applet.* ;
public class HelloApplet extends Applet {
public void __________(Graphics g) {
g.drawString("Good Morning!!", 25, 25);
}
}
〖A〗WIDTH, HEIGHT, paint
〖B〗VGAP, HGAP, update
〖C〗WIDTH, HEIGHT, start
〖D〗VGAP, HGAP, paint
本题考查html知识
WIDTH, HEIGHT分别表示宽, 高。Paint方法为java中的画图方法。选项A正确, 本题答案为A。
【计算机二级Java语言】卷011
原文:https://www.cnblogs.com/mjios/p/12455374.html