1)最短路径问题
2)哲学家吃饭问题
随便到数据结构与算法书上找几个经典的算法就行了,不要出那些考察概念的问题,很无聊
Java语言基础期末考试
一、填空题
1.定义类的保留字是( class ),定义接口的保留字是( interface )。
2.Socket通常也称为 ( 套接字 ),用于描述( IP地址 ) 和 ( 端口 )。
3.线程的优先级在( 1 )至( 10 )之间,数值越大( 任务越紧急 )。
4.构造方法是一种特殊的成员方法,构造方法名与( 类名 )相同。
5.Java语言只允许单继承,指每个类只能有一个 ( 父类)。
6.Java源程序的扩展名是( .java ),经过编译后的程序的扩展名是( .class )。
7. 在一个时间只能由一个线程访问的资源称为 ( 临界资源 ) 。访问临界资源的代码(临界代码 )。
8. 在多线程系统中,多个线程之间有 ( 同步 ) 和 ( 互斥 ) 两种关系。
二、选择题
1.关于选择结构下列哪个说法正确? ( b )
A.if语句和 else语句必须成对出现
B.if语句可以没有else语句对应
C.switch结构中每个case语句中必须用break语句
D.switch结构中必须有default语句
2.while循环和 do…while循环的区别是: ( d)
A.没有区别,这两个结构任何情况下效果一样
B.while循环比 do…while循环执行效率高
C.while循环是先循环后判断,所以循环体至少被执行一次
D.do…while循环是先循环后判断,所以循环体至少被执行一次
3.关于 for循环和 while循环的说法哪个正确? ( b )
A.while循环先判断后执行,for循环先执行后判断。
B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果
C.两种循环任何时候都不可以替换
D.两种循环结构中都必须有循环体,循环体不能为空
4.下列修饰符中与访问控制无关的是 ( d )
A.private B.public
C.protected D.final
5. void的含义: ( a)
A.方法没有返回值 B.方法体为空
C.没有意义 D. 定义方法时必须使用
6. return语句: ( c )
A.只能让方法返回数值 B.方法都必须含有
C.方法中可以有多句return D.不能用来返回对象
7.关于对象成员占用内存的说法哪个正确? ( b )
A.同一个类的对象共用同一段内存
B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
C.对象的方法不占用内存
D.以上都不对
8.下列说法哪个正确?( c )
A.不需要定义类,就能创建对象
B.对象中必须有属性和方法
C.属性可以是简单变量,也可以是一个对象
D、属性必须是简单变量
9.下列说法哪个正确? ( a )
A、一个程序可以包含多个源文件
B、一个源文件中只能有一个类
C、一个源文件中可以有多个公共类
D、一个源文件只能供一个程序使用
10.关于方法main()的说法哪个正确?(c )
A.方法main()只能放在公共类中
B main()的头定义可以根据情况任意更改
C.一个类中可以没有main()方法
D.所有对象的创建都必须放在main()方法中
11.构造函数何时被调用? ( a )
A、创建对象时 B、类定义时
C、使用对象的方法时 D、使用对象的属性时
12. 抽象方法: (c )
A、可以有方法体
B、可以出现在非抽象类中
C、是没有方法体的方法
D、抽象类中的方法都是抽象方法
13.关于继承的说法正确的是: ( b )
A、子类将继承父类所有的属性和方法。
B、子类将继承父类的非私有属性和方法。
C、子类只继承父类public方法和属性
D、子类只继承父类的方法,而不继承属性
14.关于构造函数的说法哪个正确? (c )
A、一个类只能有一个构造函数
B、一个类可以有多个不同名的构造函数
C、构造函数与类同名
D、构造函数必须自己定义,不能使用父类的构造函数
15. this和super: ( c )
A、都可以用在main()方法中
B、都是指一个内存地址
C、不能用在main()方法中
D、意义相同
16.关于super的说法正确的是:( b )
A、是指当前对象的内存地址
B、是指当前对象的父类对象的内存地址
C、是指当前对象的父类
D、可以用在main()方法中
17.覆盖与重载的关系是 ( a )
A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
B.覆盖方法可以不同名,而重载方法必须同名
C.final修饰的方法可以被覆盖,但不能被重载
D.覆盖与重载是同一回事
18.关于接口哪个正确? ( a )
A、实现一个接口必须实现接口的所有方法
B.一个类只能实现一个接口
C.接口间不能有继承关系
D.接口和抽象类是同一回事
19.异常包含下列哪些内容? ( a )
A.程序执行过程中遇到的事先没有预料到的情况
B.程序中的语法错误
C.程序的编译错误
D.以上都是
20. 对于已经被定义过可能抛出异常的语句,在编程时: ( a )
A、必须使用try/catch语句处理异常,或用throws将其抛出
B.如果程序错误,必须使用 try/catch语句处理异常
C.可以置之不理
D.只能使用try/catch语句处理
21. 字符流与字节流的区别在于( d )
A.前者带有缓冲,后者没有
B.前者是块读写,后者是字节读写
C. 二者没有区别,可以互换使用
D. 每次读写的字节数不同
22.下列流中哪个不属于字节流 ( d)
A.FileInputStream
B.BufferedInputStream
C. FilterInputStream
D. InputStreamReader
三、程序填空题
1.public class Sum{
publicstatic void main(String [] args){
intj=10;
System.out.println("jis : "+j);
calculate(j);
System.out.println("Atlast, j is : "+j);
}
static void calculate (int j){
for(int i = 0;i<10;i++)
j++;
System.out.println("jin calculate() is: "+j);
}
}
输出结果为:
j is : (1)
j in calculate() is : (2)
At last j is : (3)
答案:(1) 10; (2) 20; (3) 10。
2.按要求填空
abstract class SuperAbstract{
voida(){…}
abstractvoid b();
abstractint c(int i);
}
interface AsSuper
{
voidx();
}
abstract class SubAbstract extendsSuperAbstract implements AsSuper
{
public void b(){…}
abstractString f();
}
public class InheritAbstract extendsSubAbstract{
publicvoid x(){…}
publicint c(int i ) {…}
publicString f(){…}
publicstatic void main(String args[]){
InheritAbstractinstance=new InheritAbstract();
instance.x();
instance.a();
instance.b();
instance.c(100);
System.out.println(instance.f());
}
}
在以上这段程序中:
抽象类有:SuperAbstract和 (1) (写出类名)
非抽象类有: (2) (写出类名)
接口有: (3) (写出接口名)
AsSuper中的x()方法是(4)方法,所以在InheritAbstract中必须对它进行(5)
答案:
(1) SuperAbstract;
(2) InheritAbstract;
(3) AsSuper;
(4) 抽象;
(5) 覆盖和实现。
3.按注释完成程序
public class Leaf {
privateint i = 0; //此属性值用于检验
Leafincrement(){ //定义方法increment(),返回值是Leaf类的对象
i++;
return(1) ;//将当前对象的地址作为返回值返回
}
voidprint() {
System.out.println("i = " + i);
}
publicstatic void main(String args[]){
Leafx = (2); //创建Leaf类的对象x
x.increment().increment().increment().print();
}//多次调用方法increment(),返回的都是x的地址,i 值表示调用次数
}
输出结果为 i = (3)
答案:
(1) this;
(2) new Leaf();
(3) 3
4. 按注释提示完成文件复制的程序
//FileStream源代码如下:
import java.io.*;
class FileStream {
public static void main(String args []) {
try {
File inFile = newFile("file1.txt"); //指定源文件
File outFile = newFile("file2.txt"); //指定目标文件
FileInputStream fis =(1);
FileOutputStream fos = new FileOutputStream(outFile);
intc;
//逐字节从源文件中输入,再输出到fos流
while ((c = fis.read ())!=-1)
(2);
fis.close();
fos.close();
}
catch (Exception e) {
System.out.println("FileStreamsTest:"+e);
}
}
}
答案:
(1) new FileInputStream(inFile);
(2) fos.write(c);
5. 阅读程序,给出结果:
// AbstractClassDemo.java源代码如下:
abstract class Shape { //定义抽象类Shape和抽象方法display
abstractvoid display();
}
class Circle extends Shape {
voiddisplay() { //实现抽象类的方法
System.out.println("Circle");
}
}
class Rectangle extends Shape {
voiddisplay() { //实现抽象类的方法
System.out.println("Rectangle");
}
}
class Triangle extends Shape {
voiddisplay() { //实现抽象类的方法
System.out.println("Triangle");
}
}
public class AbstractClassDemo{
publicstatic void main(String args[]){
(newCircle()).display(); //定义无名对象来调用对应的display方法
(newRectangle()).display();
(newTriangle()).display();
}
}
输出结果是 ?
答案:(1) Circle; (2) Rectangle; (3) Triangle。