JAVA企业面试题简答题 及答案(2)

2018-11-19 20:19

toString方法可以把对象作为字符串返回。

16、Object类中的equals方法和hashCode 方法。

Oject类中的equals方法用来比较两个引用值,hashCode用来返回引用的内地址的十六进制数值。在Set以及Map集合中,判断两个元素是否重复时,往往需要使用这两个方法。这两个方法往往被子类覆盖,覆盖的规则是:如果存在x和y两个对象,调用x.equals(y)返回true时,那么调用hashCode方法的返回值也该相同;如果x.equals(y)返回false时,那么调用hashCode方法返回的值可能相同,也可能不同。

17、接口有什么特点,与抽象类有什么区别?

口的特点是不能定义变量,而且所有方法都是抽象方法。而抽象类中可以有变量,也不强制必须有抽象方法。

18、类继承父类与类实现接口,有什么区别?

类继承父类只是单继承,也就是一个子类最多只有一个父类;而类实现接口可以多实现,就是一个子类可以同时实现多个接口,并覆盖所有接口中的所有抽象方法。

19、Comparable接口有什么作用

Comparable接口定义了compareTo(Object o)方法,可以用来实现对象的比较逻辑,这个接口常常在其他API中强制使用,用来规范对象的比较逻辑。

第三部分 异常处理

1、什么是异常?异常和错误有什么区别?

异常是一些不正常的事件,能够中断程序的正常执行例如才除0计算就是异常。和错误不同,异常是可以被处理的,而错误往往是不能够处理的,如内存溢出错误。

2、nullPointException是什么异常?什么情况发生该异常? NullPointerExcepiton是空指针异常,当一个引用没哟被赋值,就是一null值如

果这种情况下, 使用该引用调用其属性或者方法, 就会发生NullPointerException异常。

3、说明try/catch/finally语句块的作用

try语句块用来包含可能发生异常的语句,catch块用来捕获异常,finally用来包含必须执行的语句。

4.如何使用语句抛出异常,抛出异常后如何处理?

使用throw语句就可以抛出异常,如throw new XXXException()。抛出异常时一般情况下会在声明方法处使用throws声明该类型的异常,调用该方法是编译器将提示异常。

5、throws 关键字和 throw 关键字有什么区别和联系?

throw用来在方法体内抛出异常,而throws用来在方法声明处声明异常。这两个关键字有着一定的联系。如果一个方法中使用了throw关键字抛出了异常,那么要么立即用try/catch语句进行捕获,要么就是用throws进行声明,否则将出现编译错误。然而, 并不是只有使用了throw关键字之后才能使用throws关键字,语法上来说,任何一个方法都可以直接使用throws关键字,抽象方法也可以使用。

6、什么是自定义异常类?为什么要自定义异常类?

自定义异常类区别于API中的标准异常类,指的是开发人员自己创建的异常类。只要继承API中某个异常类就可以自定义一个异常类,常常集成Exception类。自定义异常类主要是为了标记业务逻辑中非正常事件流,避免与API中的标准异常混淆。 第四部分

核心API

1、请画出Java集合框架的主要接口和类的继承关系。

2、Collection接口和Map接口分别定义了什么集合类型?有什么区别?

Collection接口是传统的集合接口,可以把单个对象存储进来。而Map接口是映射接口,存储的是键值对。

3、用简单代码演示创建一个泛型类为Customer类的List对象,并使用增强for循环迭代集合。 ArrayList list = new ArrayList();

For(Customer c : list){

}

4、List和Set集合有什么区别?

List实现了列表类型的集合,List中的元素是有序(ordered)的,每个元素根据放入集合的顺序而对应一个索引值, 可以根据这个索引值返回集合原宿。而Set实现了不重复元素集合,即Set中的元素不能够重复,重复的元素将无法添加到集合中。

5、List接口有哪几个实现类?分别说明其特征 List接口中有以下几个常用实现

1 ArrayList:实现了动态数组的特征。

2 LinkedList: 实现了链表的数据结构,LinkedList也可以用作栈或者队列。 3 Vector:向量。

4 ArrayList Vector类的功能 ArrayList都可以实现,区别在于Vector是现行同步的。

6、Collectioin 和Collections有什么区别?

Collection是一个接口的名字,定义了集合类型的共同特征。而Collections是一个类的名字,是集合类型的工具类,类中定义了大量的静态方法,能够操作及和对象。

7、如何将一个Collection转换成数组?

Collection接口中定义了toArray(T[] a)方法来将集合转换为数组,其中T是泛型类型。

8、 集合的作用?

集合是可以存储一批类型不同的对象,针对集合的实现类有很多,作用都是一样的,即存储、传输数据,但存储的数据结构不一样,其速度、安全性也不一样。

9 、HashMap和TreeMap在性能上有什么样的差别呢?你比较倾向于使用哪一个?

一个平衡树的性能是O(logn)。Java里的TreeMap用一个红黑树来保证key/value的排序。红黑树是平衡二叉树。保证二叉树的平衡性,使得插入,删除和查找都比较快,时间复杂度都是O(log n)。不过它没有HashMap快,HashMap的时间复杂度是O(1),但

是TreeMap的优点在于它里面键值是排过序的,这样就提供了一些其他的很有用的功能。

使用无序的HashSet和HashMap,还是使用有序的TreeSet和TreeMap,主要取决于你的实际使用场景,一定程度上还和数据的大小以及运行环境有关。比较实际的一个原因是,如果插入和更新都比较频繁的话,那么保证元素的有序可以提高快速和频繁查找的性能。如果对于排序操作(例如产生一个报表合作者运行一个批处理程序)的要求不是很频繁的话,那么把数据以无序的方式存储,然后在需要排序的时候用Collections.sort(?)来进行排序,会比用有序的方式来存储可能会更加高效。这个只是一种可选的方式,没人能给你一个确切的答案。即使是复杂度的理论,例如O(n),成立的前提也是在n足够大的情况下。只要在n足够小的情况下,就算是O(n)的算法也可能会比O(log n)的算法更加高效。另外,一个算法可能在AMD处理器上的速度比在Intel处理器上快。如果你的系统有交换区的话,那么你还要考虑磁盘的性能。唯一可以确定的性能测试途径是用大小合适的数据来测试和衡量程序的性能和内存使用量。在你所选择的硬件上来测试这两种指标,是最合适的方法。

10、 什么是Iterator

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。 (3) 使用hasNext()检查序列中是否还有元素。 (4) 使用remove()将迭代器新返回的元素删除。

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

11、 什么是HaspMap和Map? map是一个接口

hashmap是一个实现了map接口的类 接口不能new

12、 Java集合框架都有哪些最佳实践呢?

如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。

如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们 的效率

更高。

要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。

容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。一旦将对象置入容器内,便损失了该对象的型别信息。

尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

13、 ArrayList和Vector的区别。

就ArrayList与Vector主要从二方面来说.

一.同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的。

二.数据增长:当需要增长时,Vector默认增长为原来一培,而 ArrayList却是原来的一半。

14、ArrayList、Vector、LinkedList的区别?

ArrayList、Vector:以线性表的方式存储,查、改快,增删慢 。 Vector:是线程安全,方法是同步方法。

ArrayList:是线程不安全,方法是非同步方法 LinkedList:单链表,查、改慢,增删快。

15、Map的接口和特点?:

键名+键值,键名不可以重复,键值可以重复,通过键名取键值。 HashMap:线程不安全。 Hasttable:线程安全。

jsp中的作用域对象(session、request、application、page)属于map这个体系。

16、 Collection及Collections的区别?

Collection是一个接口的名字,定义了集合类型的共同特征。而Collections是一个类的名字,是集合类型的工具类,类中定义了大量的静态方法,能够操作及和对象。

17、假设存在文本文件etc.doc,请用代码展示将文件按行读出,并打印输出到控制台。

File file = new File(“etc.doc”); try{

FileReader fr = new FileReader(File);

BufferedReader br = new BufferedReader(fr); String line = br.readLine(); while(line == null){

System.out.println(line); Line = br.readLine();


JAVA企业面试题简答题 及答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:立德树人,让教育走进生命内核

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: