【Java】过程考核试题

2-1
在使用 interface声明一个接口时,只可以使用(   )修饰符修饰该接口。

private 
protected 
private  protected 
public

2-2
Java的字符类型采用的是Unicode编码方案,每个Unicode码占用(   )个比特位。

8         
16          
32          
64

2-3
关于构造函数的描述错误的是:

构造函数返回的类型只能是void类型
构造函数是类的一种特殊函数,它的方法名必须与类名相同
构造函数的主要作用是完成对类的对象的初始化工作
一般在创建新对象时,系统会自动调用构造函数

2-4
有语句String s=”hello world”; ,以下操作哪个是不合法的?

int i=s.length()
s>>>=3
String ts=s.trim()  
String t=s+”!”

2-5
下列哪些语句关于Java内存回收的说明是正确的?

程序员必须创建一个线程来释放内存 
内存回收程序负责释放无用内存 
内存回收程序允许程序员直接释放内存 
内存回收程序可以在指定的时间释放内存对象

2-6
以下哪个不是Java的关键字?

TRUE 
const 
super 
void

2-7
Java语言的类间的继承关系是。

多重的 
 单重的 
 线程的 
 不能继承

2-8
下列选项中,用于在定义子类时声明父类名的关键字是。

interface
package 
extends 
class

2-9
在java中,( )对象可以使用键/值的形式保存数据.

ArrayList
HashSet
HashMap
LinkedList

2-10
给定如下的java代码,编译时会在( )出现错误。 class Parent{ }

class Child extends Parent{

public static void main(String args[]){

Parent p1=new Parent();//第一行
Parent p2=new Child();//第二行
Child c1=new Child();//第三行
Child c2=new Parent();//第四行
} }

第一行
第二行
第三行
第四行

2-11
( )类应该是你在java里创建的任何异常类的超类。

Exception类
Throwable类
Error类
RuntimeException类

2-12
( )合法构造并初始化了数组。

int array[]={1,2,3};
int array[][]={1,2,3,4};
int []array=(1,2,3);
int []array=[1,2,3];

2-13
下列InputStream类中哪个方法用于关闭流?

skip()
close()
reset()
mark()

2-14
在类的定义中可以有两个同名函数,这种现象称为函数的( )。

封装
覆盖
继承
重载

2-15
在下面关键字中,哪一个不是用于异常处理语句( )。

try
catch
break
finally
4-1
abstract
方法是一种仅有方法的定义,没有具体方法体和操作实现的方法;
final
方法是不能被当前类的子类重新定义的方法。

4-2
创建一个名为YourPackage的包的语句是
package YourPackage;
该语句应放在程序位置的
第一行

4-3
在java程序中,通过类的定义只能实现

重继承,通过
接口
的定义可以实现多重继承。

4-4
子类必须通过
extends
关键字调用父类有参数的构造函数

4-5
在java语言中,所有的类都是
Object
的子类

4-6
一个类如果实现一个接口,那么它就需要实现接口中定义的全部
方法
,否则该类就必须定义成
抽象类

//这是对堆栈进行操作的泛型类。有入栈push和出栈pop两个方法,请完成填空。

public class Stack<T> {

private class Node<T>{
public T Item;
public Node<T> next;
public Node(T item,Node<T> nt) {
Item = item;
next = nt;
}
public boolean end() {
return Item==null && next==null;
}
}
private Node top;//
public Stack() {
top=new Node<T>(null,null);
}
public void push(T item) {
top = new Node<T>(item,top);
}
public T pop() {//
if(top.end())
return null;
T item=top.Item;
top = top.next;
return item;//
}
}
public class First {

public static void main(String[] args) {
Stack<T> s=new Stack<T>();//
int i;
for(i=0;i<10;i++) {
s.push(i);
}
for(i=0;i<10;i++) {
System.out.println(s.pop());
}
}
}

8-1 多线程同步编程 (20分)
有A,B两个线程,A线程产生小于20的随机数,B线程计算随机数的平方值。要求A,B线程必须同步(即A线程产生一个数之后,B线程计算该数的平方值;如果A线程还没产生,B线程只能等待,如果B线程还没取值,A线程只能等待)。

/**
 * 
 */
/**
 * @author SiriusZHT 2018110262
 *
 */
package test1;
import java.util.Random;

public class ThreadTurn {
    Object o = new Object();
    Boolean f = true ; // True 时线程1执行
    
    int max=20;
    int min=0;
    int s=0;
    int doubles=0;
    
    class Thread1 extends Thread{
        public void run() {
            synchronized (o) {
                for (int i = 0; i < 100; i++) {
                	Random random = new Random();

                    s = random.nextInt(max)%(max-min+1) + min;
                    System.out.println("A" + i + ":" + s);
                    o.notify();
                    if(f){
                        f = false;
                        try{
                            o.wait();
                        }catch(Exception e){
                            System.out.print(e);
                        }
                    }
                }
            }
        }
    }

    class Thread2 extends Thread{
        public void run(){
            synchronized (o){
                for(int i=0;i<100;i++){
                	doubles = s*s;
                    System.out.println("B" + i + ":" + doubles);
                    o.notify();
                    if(!f){
                        f = true;
                        try {
                            o.wait();
                        }catch(Exception e){
                            System.out.print(e);
                        }
                    }
                }
            }
        }
    }

    public void start(){
        new Thread1().start();
        new Thread2().start();
    }

    public static void main(String args[]){
        ThreadTurn t = new ThreadTurn();
        t.start();
    }

}

在这里插入图片描述
8-2 请按要求完成程序 (20分)
计算机的文件假如分为文本文件、图像文件、压缩文件三种类型,编写一个程序模拟打开这三种类型的文件(在打开Open()方法中只显示打开某种类型的文件即可)。要求使用接口或抽象类, 接口或抽象类的名称为FileOpen, 文本文件类名为TextFile, 图像文件类名为ImageFile, 压缩文件类名为ZipFile。主程序代码如下,请完成其他类的编程。

/**
 * 
 */
/**
 * @author SiriusZHT 2018110262
 *
 */
package test2;
abstract class FileOpen {
	public String filename;
	public void Open() {
		
	}
	
}
class TextFile extends FileOpen{
	public TextFile(String name) {
		// TODO Auto-generated constructor stub
		this.filename = name;
	}
	public void Open() {
		System.out.println(this.filename);
	}
}
class ImageFile extends FileOpen{
	public ImageFile(String name) {
		// TODO Auto-generated constructor stub
		this.filename = name;
	}
	public void Open() {
		System.out.println(this.filename);
	}
}
class ZipFile extends FileOpen{
	public ZipFile(String name) {
		// TODO Auto-generated constructor stub
		this.filename = name;
	}
	public void Open() {
		System.out.println(this.filename);
	}

}
public class File{
	
	public static void main(String[] args) {
		FileOpen []fp=new FileOpen[10];
		int n;
		for(int i=0;i< fp.length;i++){
			n=(int)(Math.random()*3);
			switch(n){
			case 0:
				fp[i]=new TextFile ("文本文件.txt");
				break;
			case 1:
				fp[i]=new ImageFile ("图像文件.jpg");
				break;
			case 2:
				fp[i]=new ZipFile ("压缩文件.Zip");
				break;
			}
		}
		for(FileOpen ones:fp)
			ones.Open();
	}
}

在这里插入图片描述

原文地址:https://www.cnblogs.com/SiriusZHT/p/14310778.html