一、选择题
1、给定如下所示的java代码,则运行时,会产生()类型的异常。
String s = null;
s.equals(“abc”);
A) ArithmeticException
B) NullPointerExecption
C) IOException
D) ClassNotFoundException
答案:B
//如果String s = “”; s.equals(“abc”);是不会报错的,如果String s = null;
s.equals(“abc”);会抛出一个NullPointerException
2、给定如下java程序的代码片段,下划线处,加入( )语句,可以使这段代码编译通过
public void method1() throws IOException{}
public void method2()________{ method1() };
(选择二项)
A) throws IOException
B) throw IOException
C) throws Exception
D) throws RuntimeException
答案:AC
3、下面异常处理语句结构一定不正确的是( )
A) try{} catch(……){} finally{}
B) try{} catch(……){}
C) try{} finally{}
D)catch(……){} finally{}
答案:D
4、创建一个TCP服务程序的顺序是()
A 关闭socket
B 创建一个服务器socket
C关闭I/O流
D 在服务线程中,从socket中获得I/O流
E 对I/O流进行读写操作,完成与客户的交互
G从服务器socket接受客户连接请求
答案:BGDECA
5、下面都属于线程安全的类是( )
A.ArrayList
B.Vector
C.HashMap
D.Hashtable
答案:BD
Vector是个老的动态数组,是线程同步(安全)且效率低,现在已经不适合使用。
ArrayList实现的是动态数组,它的功能范畴同Vector但不同步(不安全),它只是array的实现方式,允许随机的读取元素,特点是元素增删慢,查找快。
LinkList实现的是链表结构,它允许随机访问,由这个类定义的链表能通栈和队列一样被使用。提供最佳顺序存取,适合插入和移除元素,特点是元素增删快,查找慢。
HashMap不是线程安全的,不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许
HashTable是线程安全的
HashMap是Hashtable的轻量级实现
6.线程通过( )方法可以休眠一段时间,然后恢复运行。
A.run
B.setPrority
C.yield
D.sleep
答案:D
7、在java中,下列选项可以存储无序,不重复的数据是 ( )
A ArrayList
B LinkedList
C HashMap
D Set
答案:D
8、编译运行以下java代码,输出结果正确的是 ( )
public class Test{
LinkedList list = new LinkedList();
list.add(“aaa”);
list.removeFrist();
list.removeLast();
System.out.println(list.size());
}
A) 1
B) 0
C) 运行异常
D) 编译异常
答案:C
removeFrist()把第一个元素去掉,list中已经没有元素了,removeLast()就会报错
Exception in thread “main” java.util.NoSuchElementException
at java.util.LinkedList.removeLast(Unknown Source)
at Test20170424.Test.main(Test.java:10)
9、请选择正确答案
import java.util.*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“Learn”);
list.add(“Hello”);
list.add(“Welcome”);
Set set = new HashSet();
set.addAll(list);
System.out.println(set.size());
}
}
A) 编译不通过
B) 编译通过,运行时异常
C) 编译运行都正常,输出3
D) 编译运行都正常,输出4
答案:C
10、请选择正确答案
public static Iterator reverse(List list) {
Collections.reverse(list);
return list.iterator();
}
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
for (Object obj: reverse(list))
System.out.print(obj + ", ");
}
A) 3, 2, 1,
B) 1, 2, 3,
C) 编译失败。
D) 运行时出错。
答案:C
//for(类型 对象:集合 or 数组){}
11、请选择正确答案
import java.util.*;
public class Example {
public static void main(String[] args) {
// insert code here
set.add(new Integer(2));
set.add(new Integer(1));
System.out.println(set);
}
}
请问要在第 4 行插入哪个语句,才能保证此程序输出[1, 2]
A) Set set = new TreeSet();
B) Map set = new HashMap();
C) Set set = new SortedSet();
D) List set = new LinkedList();
答案:A
12、下面关于Java集合框架说法错误的是( )
A) Java集合框架主要包括Collection和Map两类
B) Collection描述集合,Map描述映射
C) Collection主要包括Set和List两类
D) Set内元素无序,而List内元素有序,但元素均不可重复
答案:D
13、在JAVA语言网络编程中,URL类是在java.net包中,该类中提供了许多方法用来访问URL对象的各种资源,下列哪个用来获取URL中的端口号()
A) getFile()
B) getProtocol()
C) getHost()
D) getPort()
答案:D
14、关于 Java流的叙述错误的是( )
A) 流是 Java 语言处理I/O的方式
B) 从概念上讲,流就是一系列的字节序列或字符序列
C) 引入流的概念的目的是使得在处理不同的数据输入输出时编程更加方便
D) 流是Java惟一的非面向对象的语言构成
答案:D
15、以下关于File类说法不正确的是:
A) 一个File 对象代表了操作系统中的一个文件或者文件夹
B) 可以使用File对象创建和删除一个文件
C) 可以使用File对象创建和删除一个文件夹
D) 当一个File对象被垃圾回收时,系统上对应的文件或文件夹也被删除
答案:D
16、JAVA语言中的套接字(Socket)是一种基于网络进程通信的接口,是网络通信协议的一种应用。它有两个主要类,下列哪个用来实现客户端的通信功能()
A) ServerSocket类
B) URL类
C) Socket类
D) UDP
答案:C
17、下列创建InputStreamReader对象的方法中哪些是正确的方法?( )(选择两项)
A. new InputStreamReader(new FileInputStream(“data”));
B. new InputStreamReader(new FileReader(“data”));
C. new InputStreamReader(new BufferedReader(“data”));
D. new InputStreamReader(System.in);
答案:AD
new InputStreamReader()的参数必须是InputStream类型(或其子类类型,如FileInputstream,且e.txt是一个文件(file),所以只能用FileInputstream读入,而不能用DataInputstream,DataInputstream只能读入简单类型的变量)
18、有如下代码:
public class TestFile{
public static void main(String args[]){
File file = new File(“chp13/corejava.txt”);
}
}
请选择一个正确答案:( )
A) corejava.txt 文件在系统中被创建
B) 在windows系统上运行出错,因为路径分隔符不正确
C) corejava.txt文件在系统中没有被创建
D) 如果corejava.txt文件已存在,则抛出一个异常
答案:C
new File是创建了一个File对象。没有创建文件。
一般用file.exists()判断 确定不存在后 调用 createFile会创建文件。
创建目录文件的话 用 file.mkdir或mkdirs
19、(对象序列化)有以下代码:
import java.io.*;
class Address{
private String addressName;
private String zipCode;
//带参构造方法…
//get/set 方法…
}
class Worker implements Serializable{
private String name;
private int age;
private Address address;
//带参构造方法…
//get/set 方法…
}
public class TestSerializable {
public static void main(String args[]) throws Exception{
Address addr = new Address("Beijing", "100000");
Worker w = new Worker("Tom", 18, addr);
ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream("fout.dat"));
oout.writeObject(w);
oout.close();
}
}
选择正确答案 ( )
A) 该程序编译出错
B) 编译正常,运行时异常
C) 编译正常,运行时也正常。
D) 以上都不正解
答案:B
//调用了其他的类对象,调用的类对象必须一并实现Serializable。
//所以Address类也要实现Serializable接口
Exception in thread “main” java.io.NotSerializableException: Test20170424.Address
20、下面关于流描述不正确的是( )
A) 按流向分为输入流和输出流
B) 输入流表示将外部数据读入程序
C) 输出流表示由程序写出到外部
D)复制文件是由外部写到外部,和输入输出无关
答案:D
21、下面代码
public class Foo implements Runnable {
public void run (Thread t) {
System.out.println("Running.");
}
public static void main (String[] args) {
new Thread(new Foo()).start();
}
}
执行结果是( )
A) 运行时抛出一个异常
B) 程序能够运行,但是没有任何输出
C) 没有实现 Runnable接口中的方法导致编译错误
D) 程序运行后输出“Running”
答案:C
22、有以下程序段:
public class MyThread extends Thread {
public static void main(String args[]) {
MyThread t = new MyThread();
MyThread s = new MyThread();
t.start();
System.out.print("one.");
s.start();
System.out.print("two.");
}
public void run() {
System.out.print("Thread");
}
}
则下面正确的选项是()
A) 编译失败
B) 程序运行结果为:one.Threadtwo.Thread
C) 程序运行结果是:one.two.ThreaThread
D)程序运行结果不确定
答案:D
23、有以下代码
public class Example implements Runnable {
public void run() {
while(true) {
}
}
public static void main(String args[]) {
Example ex1 = new Example();
Example ex2 = new Example();
Example ex3 = new Example();
ex1.run();
ex2.run();
ex3.run();
}
}
选择正确答案:
A) 代码编译失败,因为ex2.run()无法获得执行
B) 代码编译成功,存在3 个可运行的线程
C) 代码编译成功,存在1个可运行的线程
D) 以上都不正确
答案:C
24、有如下代码
public class Example {
public static void main(String args[]) {
Thread.sleep(3000);
System.out.println(“sleep”);
}
}
选择正确答案:
A) 编译出错
B) 运行时异常
C) 正常编译运行,输出sleep
D) 正常编译运行,但没有内容输出
答案:A
//没有处理异常
25、有以下代码
public class Example implements Runnable {
public static void main(String args[]) {
Thread t = new Thread(new Example());
t.start();
}
public void run(int limit) {
for (int x = 0; x<limit; x++) {
System.out.println(x);
}
}
}
选择正确答案:
A) 打印输出,从0 至limit
B) 代码编译失败,如果去掉implements Runnable,可使代码编译成功。
C) 代码编译失败,因为没有正确实现Runnable接口
D) 代码编译失败,如果声明类为抽象类,可使代码编译成功。
答案:C
二、填空题
1、Java中编程实现多线程应用有两种途径:一种是用 ( ) 类的子类创建线程,另一种是用Thread类结合( ) 接口创建线程。
Thread、Runnable
2、当一个线程处于()状态时,它仅仅是一个空的线程对象,系统不为它分配资源。一个正在执行的线程可能被人为地中断,让出CPU的使用权,暂时中止自己的执行,进入 ()状态。处于()状态的线程不具有继续运行的能力。
创建、阻塞、死亡
3、一个try语句块后必须跟()语句块,()语句块可以没有,自定义异常类必须继承( )类及其子类,异常处理机制允许根据具体的情况选择在何处处理异常,可以在()捕获并处理,也可以用throws子句把他交给()处理。
catch、finally、Exception、try…catch、调用者
4、在集合中()是一种键值对映射的结构,()集合是有序可重复的,()集合无序不可重复。
Map、List、Set
5、异常分为()异常和()异常,()类与异常根类。
编译、运行、Exception
6、Internet上的每一台计算机必须能够唯一地标志出来,因此标准化的第一个部分就是()地址,()可以确定网络资料的唯一地址,()类用于创建服务器端的通信对象,()类用于创建客户湍的通信对象。
IP、URL、ServerSocket、Socket
三、问题题
1、简述List的实现类ArrayList与LinkedList的区别。
1.ArrayList是基于数组,LinkedList基于链表实现。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
2、请描述你所理解的字节流和字符流
1.所有的字节流都是InputStream和OutputStream的子类,主要用在处理二进制数据,它是按字节来处理的。
2.所有的字符流都是FileReader和FileWriter的子类,主要用在处理文本数据,它是按字符来处理的。
3.简述RuntimeException和非RuntimeException的区别。
1、RuntimeException异常在编译的时候不会给出警告,而是在运行期发生的,比如类型转型异常。
2、非RuntimeException又称编译期异常,在编写程序的过程中发生的异常,是必须要处理的异常,比如:Class.forName("");
4、简述多线程的生命周期
线程生命周期可以分为5个状态:
1、New(新生)
2、ready(就绪)
3、Runnable(可运行):为了方便分析,还可将其分为:Runnable与Running。
4、blocked(被阻塞)
5、Dead(死亡)
与人有生老病死一样,线程也同样要经历开始(等待)、就绪、运行、挂起和停止五种不同的状态。这五种状态都可以通过Thread类中的方法进行控制
5、简述你对网络通信的理解
网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。