Java学习--第2天

1. 介绍Collection框架的结构组成。

答:
如图所示:
![F}]M6]6P`QF@))$94}NFZ%G.png](http://upload-images.jianshu.io/upload_images/4760019-e6e908c522ce5d1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2. Map的子类有哪些?Map是否继承了Collection接口?

答:
Map接口的子类有:HashMap,HashTable,TreeMap;Map接口和Collection接口属于同一级别。

3. List接口的子类有哪些?它们之间有什么区别?

答:
List子类有:ArrayList,LinkedList,Vector。区别如下:
(1) ArrayList:底层数据结构是数组,查询快,增删慢
线程不同步,线程不安全,效率高,空间增长为原来的0.5倍(新东西)
(2) Vector:底层数据结构是数组,查询快,增删慢
线程同步,线程安全,效率低,空间增长为原来的1倍(旧东西)
(3) LinkedList:底层数据结构是链表,查询慢,增删快
线程不同步,线程不安全,效率高

3. HashMap和HashTable的区别?

答:
HashMap:线程不安全,效率高,允许null键和null值(新东西);
HashTable:线程安全,效率低,不允许null键和null值(旧东西)。

4. List,Map,Set三个接口,存取元素时,各有什么特点?

答:
List:单列,有序,可重复,add()方法增加元素;
Set:单列,无序,不可重复,add()方法增加元素;
Map:双列,不可重复key,put()方法增加元素,key唯一,value可多值。

5. Collection和Collections的区别?

答:
Collection是集合类的上级接口,继承它的接口主要有Set和List;
Collections是针对集合类的一个帮助类,提供相关的操作方法,如搜索、排序等。

6. 说出一些常见的类,接口和包,请各举5个

答:
(1)常用的类:BufferedReader、BufferedWriter、FileReader、 FileWirter、String、Integer、Java.util.Date、System;
(2)常用的接口:List、Map、Set、Runnable、Servlet、Transaction(hibernate) 、Session(Hibernate)、HttpSession;
(3)常用的包:java.io、java.util、java.sql、javax.servlet、org.hibernate。

7. 描述一下JVM加载class文件的原理?

答:
JVM中类的加载时有类加载器和它的子类实现的,它负责在运行时查找或装入类文件的类。

8. heep(堆)和stack(栈)的区别?

答:
(1)栈的空间有限,栈中的数据是共享的,存取速度比堆快,基本数据类型和方法的定义在栈中。
(2)堆的空间可变,包装类和new的对象定义在堆中,局部变量用final修饰后,放在堆中。

9. GC是什么?

答:
GC就是垃圾回收的意思(Gabage Collection),用于自动监测对象是否超过作用域而达到自动回收内存的目的。

10. 垃圾回收的优点和原理是什么?并列出几种回收机制。

答:
(1)优点:垃圾回收能有效的防止内存泄漏;
(2)原理:当对象被创建后,GC就开始监控这个对象的地址、大小以及使用情况,GC采用有向图的方式记录和管理堆中的所有对象,通过这种方式确定哪些对象是“可达的”,哪些对象是“不可达的”,当GC确定一些对象为“不可达”时,GC就清除这些对象,达到回收内存的目的;
(3)分代复制垃圾回收、标记垃圾回收、增量垃圾回收。

11. java中会存在内存泄漏吗?请举出内存泄漏发生的常见情况。

答:
所谓内存泄漏是指一个不再被程序使用的对象或变量一直占据在内存中。
(1)当长生命周期的对象持有短生命周期对象的引用,就可能发生泄漏;
(2)当一个对象进入HashSet集合中后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值和最初存储进HashSet的哈希值就不同,在这种情况下,contains方法找不到对象,也就导致无法从HashSet集合中删除当前对象,造成内存泄漏。

你可能感兴趣的:(Java学习--第2天)