一、选择题(每小题1分,共40小题,共40分)
1.数据的存储结构是指( )。
A.存储在外存中的数据
B.数据所占的存储空间量
c.数据在计算机中的顺序存储方式
D.数据的逻辑结构在计算机中的表示
2.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。
A.冒泡排序n/Z
B.冒泡排序为n
C.快速排序为n
D.快速排序为n(n一1)/z
3.栈和队列的共同点是( )。
A.都是先进先出
B.都是先进后出
C.只允许在端点处插入和删除元素
D.没有共同特点
4.有下列二叉树,对此二叉树中序遍历的结果为( )。
A.ABCEDF
B.ABCDEF
C.ECBDFA
D.ECFDBA
5.对建立良好的程序设计风格,下列描述中正确的是( )。
A.程序应该简单、清晰、可读性好
B.符号名的命名只需要符合语法
C.充分考虑程序的执行效率
D.程序的注释可有可无
6.下列叙述中正确的是( )。
A.在面向对象的程序设计中,各个对象之间具有密切的关系
B.在面向对象的程序设计中,各个对象都是公用的
C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小
D.上述3种说法都不对
7.为了提高软件模块的独立性,模块之间是( )。
A.控制耦合
B.公共耦合
C.内容耦合
D.高内聚低耦合
8.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。
A.数据与程序独立存放
B.不同的数据被存放在不同的文件中 ..
C.不同的数据只能被对应的应用程序所使用
D.以上三种说法都不对
9.下列描述中正确的是( )。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发过程中的技术问题
10.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为( )。
A.并运算
B.交运算
C.差运算
D.积运算
11.下列关于数据存储方式的叙述中,不正确的是( )。
A.数据的主要存储方式有顺序存储结构和链式存储结构
B.顺序存储结构存储空间利用率低,链式存储结构空间利用率高
C.顺序存储结构的结点只有自身域,链式存储结构除了自身域还包括指针域
D.顺序存储结构可通过计算直接确定数据结构中某个结点的存储地址
12.二维数组A[0,…,8][0,…,9],其每个元素占2字节。从首地址400开始,按行优先顺序存储,则元素A[8][5]的存储地址为( )。
A.570
B.506
C.410
D.482
13.下列有关操作系统的叙述中,不正确的是( )。
A.操作系统管理计算机系统中的各种资源
B.操作系统为用户提供良好的界面
C.操作系统与用户程序必须交替运行
D.操作系统位于各种软件的最底层
14.系统出现死锁的原因是( )。
A.计算机系统发生了重大故障
B.有多个封锁的进程同时存在
C.若干进程因竞争资源而无休止地等待其他进程释放已占有的资源
D.资源数大大少于进程数,或进程同时申请的资源数大大超过资源总数
15.若干进程之间相互合作,共同完成一项任务,进程的这种协同工作关系称为( )。
A.异步
B.同步
C.并发
D.互斥
16.下面属于面向对象语言的是( )。
A.Java语言
B.机器语言
C.C语言
D.汇编语言
17.下列选项默认的布局管理器不是BorderLayout的是( )。
A.Window B.Panel
C.Frame D.Dialog
18.用来实现Java虚拟机的语言是( )。
A.Java
B.C
C.C++
D.汇编
19.下列关于Java安全性的说法错误的是( )。
A.有严格的访问权限检查
B.对程序执行前要检查
C.不允许使用指针
D.可防止对内存的非法入侵
20.下列有关Java语言的叙述中,正确的是( )。
A.可以有2个以上package语句
B.可以有2个以上import语句
C.可以有2个以上public类
D.只能有l个类定义
21.下列对类的声明,正确的是( )。
A.abstract final classHh{…}
B.abstract private move(){…}
C.protected private number;
D.public abstract classCar{…}
22.Java中用于提供Java语言、Java虚拟机的核心的类和接口的包是( )。
A.java.io包
B.java.applet包
C.java.lang包
D.java.net包
23.下列关于JDK目录结构的说法,错误的是( )。
A.bin目录下有许多工具
B.demo目录下有各种演示例子
C.include目录下都是库文件
D.jre目录是Java程序运行环境的根目录
24.下列说法正确的是( )。
A.类FileInputStream和FileOutputStream用来进行文
件I/O处理,由它们所提供的方法可以打开本地主机上的
文件,并进行顺序的读/写
B.通过类File的实例或者一个表示文件名称的字符串
可以生成文件输入/输出流,在流对象生成的同时,文件被
打开,但还不能进行文件读/写
C.对于InputStream和OutputStream来说,它们的实
例都是是非顺序访问流,即只能进行顺序的读/写
D.当从标准输入流读取数据时,从键盘输入的数据直
接输入到程序中
25.能将程序补充完整的选项是( )。
class Person
{
private int a;
public int change(int m){return m;)
}
public class Teacher extends Person
{
public int b;
public static void main(String arg[])
{
Person p=new Person();
Teacher t=new Teacher();
int i;
}
}
A.i=m
B.i=b
C.i=P.a
D.i=P.change(50)
26.下列程序实现对ZIP文件file.zip的检索,在横线处
填入正确的语句( )。
package test;
importjava.io.*;
import java.util.*;
import java.util.zip.*;
public class Exam
{
public static void main(String[]args){
try{
FileInputStream fis=new FileInputStream("test/file.
zip");
ZipInputStream zis=new ZiplnputStream(fis);
ZipEntry an;
while(( )!=null){
en.getName();
zis.closeEntry();
}
zis.close():
}
catch(Exception e){
e.printStackTrace();
}
}
}
A.en=zis.getNextEntry()
B.en= =zis.getNextEntry()
C.en=zis.getEntry()
D.zis.getNextEntry()
27.将一个容器panel1放到容器framel中的方法是( )。
A.framel.insert(panel1)
B.framel.add(panel1)
C.framel.addJPanel(panel1)
D.framel.insertJPanel(panel1)
28.下列程序的输出结果是( )。
class Test{
public static void main(String args[]){
int n=7:
n<<=3;
n=n&n+1|n+2^n+3;
n>>=2:
System.out.println(n);
}
)
A.0
B.-l
C.14
D.64
29.文件操作中,用于移动文件指针到指定的位置的是( )。
A.seek(long pos)
B.lengh()
C.find()
D.skipBytes(int n)
30.当检索一个压缩文件时,首先要建立压缩文件输入流对象,该对象( )。
A.以选中的压缩文件为参数
B.以FileInputStream对象为参数
C.以InputStreamReader对象为参数
D.以BufferedReader对象为参数
31.下列不是InputStream子类的是( )。
A.文件输入流FilelnputStream
B.对象输入流ObjectlnputStream
C.字符输入流CharInputStream
D.压缩文件输入流ZiplnputStream
32.下列方法中可以用来创建一个新线程的是( )。
A.实现java.lang.Runnable接口并重写start()方法
B.实现java.lang.Runnable接口并重写run()方法
C.继承java.lang.Thread类并重写run()方法
D.实现java.lang.Thread类并实现start()方法
33.下列关于JavaApplication与Applet的说法中,正确的是( )。
A.都包含main()方法
B.都通过“appletviewer”命令执行
C.都通过“javac”命令编译
D.都嵌入在HTML文件中执行
34.当启动Applet程序时,首先调用的方法是( )。
A.stop()
B.init()
C.start()
D.destroy()
35.下列关于线程优先级的说法中,正确的是( )。
A.线程的优先级是不能改变的
B.线程的优先级是在创建线程时设置的
C.在创建线程后的任何时候都可以设置
D.B和C
36.下列代码中,将引起编译错误的行是( )。
1)public class Exercise{
2)public static void main(String args[]){
3)floatf=0.0;
4)f+=1.0:
5))
6))
A.第2行
B.第3行
C.第4行
D.第6行
37.为了向一个Applet传递参数,可以在HTML文件的APPLET标志中使用param选项。在Applet程序中获取参数时,应使用的方法是( )。
A.getParameter()
B.getDocumentBase()
C.getCodeBase()
D.getlmage()
38.线程在生命周期中要经历5种状态。如果线程当前是新建状态,则它可到达的下一个状态是( )。
A.运行状态
B.阻塞状态
C.可运行状态
D.终止状态
39.下列关于Java多线程并发控制机制的叙述中,错误的是( )。
A.Java中对共享数据操作的并发控制是采用加锁技术
B.线程之间的交互,提倡采用suspend()/resume()方法
C.共享数据的访问权限都必须定义为private
D.Java中没有提供检测与避免死锁的专门机制,但程序员可以采用某些策略防止死锁的发生
40.下列操作中,不属于Applet安全限制的是( )。
A.加载本地库
B.读写本地文件系统
C.运行本地可执行程序
D.与同一个页面中的Applet通信
一、选择题
1.D。【解析】数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构主要有两种:顺序存储结构和链式存储结构。
2.D。【解析】冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较。在最坏情况下,冒泡排序中,若初始序列为”逆序”序列,需要比较n(n-1)/2次。快速排序是对通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序。最坏情况下比较次数为n(n-1)/2。
3.C。【解析】栈是只允许在表的一端进行插入和删除的操作,队列是允许在表的一端进行插入,另一端进行删除的操作。
4.C。【解析】二叉树的中序遍历是指先访问左子树。再访问树结点,最后访问右子树;当访问下级左右子树时,也对照此原则。所以C选项正确。
5.A。【解析】”清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。
6.C。【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
7.D。【解析】耦合性与内聚性是模块独立性的两个定性标准,一般的程序设计都会尽量做到高内聚、低耦合,有利于提高模块的独立性。
8.D。【解析】数据独立性是数据库系统的一个最重要的目标之一,它使数据能独立于应用程序。数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变。
9.C。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。
10.A。【解析】关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。
11.B。【解析】顺序存储结构的结点只有自身信息域,没有连接信息的域,因此存储密度大,存储空间利用率高。链式存储结构除了自身域还包括指针域,因此比顺序存储结构的存储密度小,存储空间利用率低。
12.A。【解析】A[8][5]元素存储的位置在第9行第6列,所以A[8][5]之前存储的个数应为8×10+5=85,这些元素占用的空间为85×2字节=170字节,所以A[8][5]的存储位置为400+170=570。
13.C。【解析】操作系统是计算机系统中的一个系统软件,它能有效地组织和管理计算机系统中的各种资源,并且为用户提供良好的界面。没有任何软件支持的计算机称为*机,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机,而操作系统位于各种软件的最底层。
14.C。【解析】计算机系统中有限的资源与众多请求分配资源的进程间存在矛盾。当若干进程需求资源的总数大于系统所能提供的资源数时,进程间就会出现抢占资源的现象,如果对进程抢占的资源管理或分配不当就会引起死锁。
15.B。【解析】进程同步是指进程之间一种直接的协同工作关系,这些进程相互合作,共同完成一项任务。进程间的直接相互作用构成进程的同步。
16.A。【解析】本题考查Java语言的特点。Java语言是面向对象的,将客观世界看成由各种对象组成的;机器语言是计算机实际处理时使用的语言,把客观世界都看成由0和1组成;过去的高级语言大多数是面向过程的,比如C语言等,它们是通过数据结构与算法来描述客观世界;汇编语言属于低级语言。考生应注意区分各种语言的区别。本题正确答案为选项A。
17.B。【解析】本题考查Java中的布局管理器。Pane和Applet默认的布局管理器是FlowLayout,构件在容器中放置规律是从上到下、从左到右进行放置;BorderLayout是Window、Frame和Dialog的默认布局管理器,在BorderLayout布局管理器中构件分成5个区域North、South、East、West和Center,每个区域只能放置一个构件。考生应注意区分各个布局管理器的区别和联系,以及各个布局管理器的特点。
18.B。【解析】本题考查Java语言的虚拟机。Java本身的编译器用Java语言编写,运行系统的虚拟机用C语言实现。Java语言的执行模式是半编译和半解释型,程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行,字节代码实际上可以看作是虚拟机的机器代码。考生应当理解Java语言的实现机制,这属于考试重点。正确答案为选项B。
19.B。【解析】本题考查Java的安全性特点。面向网络、分布式的Java语言,对非法入侵的防范是非常重要的,Java语言提供充分的安全保障,在运行程序时,有严格的访问权限检查。对字节代码执行前要检查,不允许使用指针,可防止对内存的非法入侵,它是目前安全性的语言。但是Java并不是对程序执行前检查,而是对字节代码进行检查,Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。
20.B。【解析】本题考查考生对Java语言概念的理解。属于考试重点内容,考生应注意理解这些基本概念。考生应该明确,Java语言中可以有package语句,用来指定源文件存入所指定的包中,只能有0或1个,所以选项A说法错误;可以有0或多个以上import语句,但必须在所有类定义之前引入标准类,所以选项B说法正确;源文件中最多只能有一个public类,其他类的个数不限,所以选项C和选项D说法错误。
21.D。【解析】本题考查类的声明。选项A错误,abstract用来声明抽象类,final用来声明最终类。这两个修饰词不能同时出现在类声明中;选项B错误,缺少class关键字;选项C错误,类不能声明为protected和private属性,且不以”;”结尾,也缺少class关键字;选项D正确,声明了一个可以公有继承的抽象类。
22.C。【解析】本题考查考生对Java语言中的类和接口的理解。java.lang包提供了构成Java语言、Java虚拟机核心的类和接口。例如,类object、类String和类Thread等。对任何一个Java程序来说,这些类几乎都是必不可少的。java.lang还包含了许多由Java虚拟机发出的异常,这些异常也是”类”的一种。另外,java.lang包还包含一些用于访问系统资源的类,如ClassLoader等。java.lang包具有极其重要的作用,在程序开头可以不必明文编写装载它的代码。
23.C。【解析】本题考查JDK目录结构。bin目录下有编译器、解释器和各种工具,如服务器工具、IDLpackage工具和jdb等。jre目录是Java程序运行环境的根目录,它下面有bin子目录,包括平台所用工具和库的可执行文件和DLL文件;lib子目录包括java运行环境的代码库。lib目录下都是库文件。demo目录下有各种演示例子。include目录下是Win32子目录,都是本地方法文件,选项C错误。
24.A。【解析】本题是考查对文件输入、输出流的理解。通过类File的实例或者一个表示文件名称的字符串可以生成文件输入/输出流,在流对象生成的同时,文件被打开,然后就可以进行文件读/写,选项B说法错误。对于InputStream和OutputStream来说,它们的实例都是顺序访问流,即只能进行顺序的读/写,选项C说法错误。当从标准输入流读取数据时,从键盘输入的数据被缓冲,按键时,程序才会得到输入数据,选项D说法错误。
25.D。【解析】本题考查类的声明。选项A中m没有被声明过,不能使用;选项B中虽然b是类Teacher的public成员变量,但在静态方法中,不能使用类中的非静态成员;选项C中a是类Person的private成员,在类外不能直接引用;选项D中change(intm)方法是pubtic方法,并且返回一个int型值,可以通过类的实例变量P引用并赋值给一个int型变量。
26.A。【解析】本题考查Java类实现ZIP数据压缩方式。ZIP压缩文件结构:一个ZIP文件由多个Entry组成,每个Entry有一个的名称,Entry的数据项存储压缩数据。ZiplnputStream实现了ZIP压缩文件的读输入流,支持压缩和非压缩Entry.题目程序中FileInputStreallD_fis=new FilelnputStream("test/file.zip")构造了一个文件输入 流,ZiplnputStream zis=new ZiplnputStream(fis)语句利用文件输入流fis构造了一个ZIP输入流,zis.getNextEntry()语句返回ZIP文件中的下一个Entry,并将输出流定位在此entry数据项的起始位置.
27.B。【解析】本题考查容器的嵌套。将一个容器Panel1放到容器framel中的方法和在容器上添加部件是一样的,使用add()方法即可。
28.C。【解析】本题考查Java中的运算符。首先要清楚程序里面涉及的运算符的含义。"<<"是按位左移运算符,”&”是按位与运算符,"|"是按位或运算符,"^"是按位异或运算符。题目中整型变量n=7相当于二进制中的111,n<<=3语句执行后,n值为lll000。相当于十进制的56,而语句n=n&n+1|n+2^n+3执行后,n值为57,n>>=2语句执行恬,n的值为14,所以选项C正确。
29.A。【解析】本题考查文件操作。seek(long pos)是随机文件记录的查找,满足题意。lengh()方法是求随机文件字节长度的方法,不符合题意;Java中没有find()方法;skipBytes(int n)方法是使随机文件访问跳过指定字节,不符合题意。
30.B。【解析】本题考查压缩文件流的概念。当输入一个ZIP文件时要将ZIP文件作为FilelnputStream构造方法的参数,所以选项B正确。而FilelnputStream对象又作为ZiplnputStream构造方法的参数出现。这里的ZipInputStream对象在将压缩文件内的输入项作为字符文本读出时即作为InputStreamReader的构造方法参数出现。最后,InputStreamReader对象作为BufferedReader的构造方法的参数,并且使用readLine()方法将压缩文件输入项作为文本读出。
31.C。【解析】本题考查考生对Java中InputStream非字符输入流的掌握。所有的字节输入流都是从InputStream继承的,包括:ByteArraylnputStre8m,以字节数组作为输入流FilelnputStream,可对一个磁盘文件设计的数据进行处理;PipedInputStream,实现线程之间通信的一个类;FilterInputStream,过滤器输入流;SequenceInputStream,将多个输入流首尾相接;ObjectlnputStream,实现ObjeetInPut接15/。选项D中压缩文件输入流ZiplnputStream是InflaterInputStream的子类,而InflaterInputStream是FilterInputStream的子类,只有选项C中字符输入流CharInputStream类是字符流。本题涉及内容较多,要求对整个输入输出流有所了解。
32.C。【解析】本题考查考生对创建线程的使用。创建线程有两种方法:通过实现Runnable接口创建线程和通过继承Thread类创建线程。通过实现Runnable接口创建线程,当实现Runnable接口的类的对象用来创建线程以后,该线程的启动将使得对象的run()方法被调用。通过继承Thread类创建线程,可以通过继承Thread类,并重写其中的run()方法定义线程体,然后创建该子类的对象创建线程。线程创建是考试重点内容,请务必掌握。
33.C。【解析】本题考查JavaApplication与Applet的区别。Applet与Application的主要区别在执行方式上,Applieation以main()方法为入口点运行,Applet要在浏览器或appletviewer中运行,运行过程比Application更复杂。两者都是通过”javac”命令编译,所以只有选项C说法正确.
34.B。【解析】本题考查Applet程序的运行方式。在Applet运行时,首先由浏览器调用init()方法,所以选项B正确。初始化完成后,将调用start()方法使Applet成为激活状态。当Applet被覆盖时.可用stop()方法停止线程。关闭浏览器时调用destroy(),彻底终止Applet,从内存中卸载并释放该Applet的所有资源。Applet的生命周期及其运行方式是考试重点,应该牢记。
35.C。【解析】本题考查线程优先级的概念。首先应该了解Java的线程是有优先级的,并且可以控制其优先级,可以排除选项A;选项B和选项C本身就矛盾,故选项D是错器的,B和C不能同时选择。线程的优先级在创建线程时可以设置,也可以通过getPriority()方法来获得线程的优先级,通过setPriority()方法来设定线程的优先级。线程的优先级属于考试重点内容,应该重点掌握。
36.B。【解析】本题考查Java中的数据类型,应该掌握Java中的简单数据类型,以及相关运算。floatf=0.0这个语句,想要定义一个浮点型变量f,并且初值为0.0,但由于Java认为如果数字后没有任何字母,则默认为double类型,而double是不能转换为float的,所以该语句错误,如果改 为floatf=0.0f,即可正确运行。
37.A。【解析】本题考查考生对Applet获取参数的掌握。Applet被下载时,在Applet的init()方法中使用getParameter()方法获取参数,所以选项A正确。而且要注意getParameter()方法只能在init()方法中。getParameter()方法的入口参数所取参数的名字,必须与标记中的name指示的名字相同,这一点务必注意,返回值是参数的值。
38.C。【解析】本题考查线程的生命周期。线程一旦创建,就开始了它的生命周期。线程的声明周期主要分为:新建状态(new),线程创建后处于该状态;可运行状态(Runnable),新建的线程调用start()方法,将使线程的状态从New转换为Runnable,所以选项C正确;运行状态(Running),运行状态使线程占有CPU并实际运行的状态;阻塞状态(Blocked),导致该状态的原因很多,注意区别;终止状态(Dead),线程执行结束的状态,没有任何方法可改变它的状态。
39.B。【解析】本题考查多线程的并发控制机制。Java中对共享数据操作的并发控制采用传统的加锁技术,也就是给对象加锁,选项A说法正确。线程之间的交互,提倡采用wait()和notify()方法,这两个方法是java.lang.object类的方法,是实现线程通信的两个方法,不提倡使用suspend()和resume()方法,它们容易造成死锁,所以选项B说法错误。共享数据的访问权限都必须定义为private,不能为public或其他,选项C说法正确。Java中没有提供检测与避免死锁的专门机制,因此完全由程序进行控制,但程序员可以采用某些策略防止死锁的发生,选项D说法正确。
40.D。【解析】本题考查Applet的安全限制。为了保护本地主机,很多浏览器对Applet作了安全限制:Applet不能运行任何本地可运行程序;禁止加载本地库或方法;禁止读、写本地计算机的文件系统;禁止与提供Applet之外的任何主机建立网络连接;不能读取某些系统信息。但Applet是可以与同一个页面中的Applet进行通信的,所以选项D不属于Applet安全限制。