Java基础阶段笔试题2
- 问题:Collection 和 Collections的区别?(10分)
本题目的:检测对面结合类的理解
答案:
Collection是集合类的上级接口(3),继承与他的接口主要有Set 和List。(2)
Collections是针对集合类的一个帮助类(3),他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。(2)
- 问题:Set里的元素能重复么?用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别 (10分)
本题目的:检测Set的理解。
答案:
Set里的元素是不能重复的(2),用iterator()方法来区分重复与否(2)。
equals()是判读两个Set是否相等
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值
)
- 问题:abstract class和interface有什么区别?(10分)·
本题目的:检测final的理解和使用
答案:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),(1)它用于要创建一个体现某些基本行为的类,在类中可以定义抽象方法,让子类去实现。(1)不能创建abstract 类的实例。然而可以创建一个抽象类类型的变量,并让它指向具体子类的一个实例。(1)不能有抽象构造函数或抽象静态方法。(1)Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。(1)
接口(interface)可以理解为是抽象类的变体。(1)接口中的所有方法都是抽象的,没有一个有程序体。(1)接口只可以定义static final成员变量。(1)接口之间是多继承的。(1) 类与接口之间是多实现的。(1)instanceof 运算符可以用来决定某对象的类是否实现了接口。
- 问题:JAVA语言如何进行异常处理?关键字:throws,throw,try,catch,finally分别代表什么意义?。(10分)
本题目的:检测值异常的理解
答案:
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。(2)
在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。(1)
当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。(1)
Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。(1)
用try来指定一块预防所有"异常"的程序。(1)
紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。(1)
throw语句用来明确地抛出一个"异常"。(1)
throws用来标明一个成员函数可能抛出的各种"异常"。(1)
finally为确保一段代码不管发生什么"异常"都被执行一段代码。(1)
- 问题:ArrayList,Vector, LinkedList的存储性能和特性。(10分)
本题目的:检测ArrayList,Vector, LinkedList的理解和使用
答案:
ArrayList和Vector都是使用数组方式存储数据(2),此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,(1)但是插入元素要涉及数组元素移动等内存操作,(1)所以索引数据快而插入数据慢(1),Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,(2)而LinkedList使用双向链表实现存储,(1)按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。(2)
- 问题:谈谈final, finally的区别(10分)
本题目的:检测对于final, finally的理解
答案:
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。(1)因此一个类不能既被声明为 abstract的,又被声明为final的。(1)将变量或方法声明为final,可以保证它们在使用中不被改变。(1)被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。(1)被声明为final的方法也同样只能使用,不能重载。(1)
finally—在异常处理时提供 finally 块来执行任何释放资源的操作。(2)如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。(3)
- 问题:ArrayList和Vector的区别,HashMap和Hashtable的区别?(10分)
本题目的:检测对于ArrayList和Vector的区别,HashMap和Hashtable的区别
答案:
就ArrayList与Vector主要从二方面来说。
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的(2)
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半(2)
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现(2)
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的(2)
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value(2)
- 问题:error和exception有什么区别?(10分)
本题目的:对于错误和异常的理解
答案:
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。(5)
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况(5)
- 问题:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?(10)
本题目的:检测对于异常中return执行的顺序的理解
答案:
会执行(5),在return前执行(5)。
- 问题:给我个你最常见到的runtime exception。(10分)
本题目的:检测常见异常的掌握情况,由于目前遇到的异常比较少,每个3分,只要能写出3个即可给10分
答案:下面列举出常见的5个异常:
IndexOutOfBoundsException,NullPointerException,ArithmeticException,ClassCastException,FileNotFoundException等。