JAVA面试准备(java基础部分2)

51、介绍Collection框架的结构。

Collection是java中设计优良的类和接口组成的集合框架,主要有Map,List,Set。

List类中包括Vector,ArrayList,LinkedList。

Set类中包括HashSet,LinkHashSet。

Map类中包括TreeMap,HashMap。


52、Collection框架中实现比较要实现什么接口?

comparable接口和comparator接口。


53、ArrayList和Vector的区别

两个类都实现List接口,都是基于数组的list,不同处主要为Vector是同步的而ArrayList不同步。


54、HashMap和Hashtable的区别

一、Hashtable是线程安全的,HashMap是线程不安全的。

二、HashMap可以有空值。


55、List和Map的区别?

List是储存单列数据的集合,另一个是储存键值的集合。


56、List,Set,Map是否继承Collection接口?

List和Set是,Map是单独接口。


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

List和Set都是单列元素的集合。他们都有一个共同的父接口Collection。

Set里不允许有重复元素,Set取元素时,只能通过Iterator接口取得所有元素,然后遍历。

List表示有先后顺序的集合。通过add方法加入对象,这里指对象的索引不是对象本身。List除了Iterator接口还可以通过get(index i)来明确说明取第几个。

Map是双列集合,其中有put方法,每次储存时,要存储一对key/value,不能存储重复的key。取数据时根据key取得value。


58、说出Vector,ArrayList,LinkedList的储存性能和特性。

ArrayList和Vector都是以数组方式存储数据,可通过按序号索引元素。所以索引数据快插入数据慢。

Vector由于是线程安全,通常性能较ArrayList差。

LinkList使用双向链表存储,所以查找慢而插入快。LinkList线程不安全,其提供了一些方法,使得LinkList可以当作堆栈和队列来使用。


59、去掉一个Vector集合中重复的元素

用get方法获取元素,contains方法判断是否已经存在。


60、Collection和Collections的区别

Collection是集合类的上级接口,继承与他的接口主要有Set和List

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全话等操作。


61、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?他们有何区别?

通过equals方法进行判断的。

==看两个对象是不是同一个对象,也就是两个对象引用是不是同一个对象。

equals()看两个对象的内容是否相等


62、你所知道的集合类有哪些?主要方法?

常用的集合类是List和Map。

List类中包括ArrayList和Vector,Map提供键值的储存方法。

主要包括增删改查方法,如add,remove,contains;Set类中没有get(index i)的方法。


63、两个对象值相同(x.equals(y)==true),但却有不同的hashcode,这句话对不对?

对,需依赖equals和hashcode的具体实现。    


64、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常。

无具体答案,当前的add方法放入哪个对象,就使用哪个compareTo方法。

如:

TreeSet Set = new TreeSet();
set.add(new parent(5));
set.add(new child());


65、说出一些常用的类,包,接口,各举5个

类:BufferReader,BufferWriter,FileReader,FileWriter,String,Integer,Date。

包:java.lang,java.io,java.util,java.sql,javax.servlet.

接口:remote,List,Map,Document.HttpServletRequest.


66、java中有几种类型的流?JDK为每种类型的流提供一些抽象类以供继承,请说出他们分别是哪些类?

字节流,字符流。字节流继承于InputStream,OutputStream,字符流继承于InputStreamReader,OutputStreamWriter。


67、字节流和字符流的区别?

字符流是字节流的包装,字符流能直接接受字符串,在内部转换为字节,再写入底层设备。


68、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

我们有时候将一个java对象变成字节流形式传出去或者从一个字节流中恢复成一个java对象。我们可以通过OutputStream的writeObject方法来做,被传输的对象必须实现serializable接口。


69、描述一下JVM加载class文件的原理机制?

JVM中的类的装载是由ClassLoader和它的子类来实现的,java ClassLoader是一个重要的java运行时系统组件。他负责在运行时查找和装入类文件的类。


70、heap和stack有什么区别。

java的内存分两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。

堆是与栈不同的内存,一般用于存放不放在当前方法栈中的那些数据。例如new创建的对象都放在堆里。方法中的局部变量使用final修饰后,放在堆里。


71、GC是什么?为什么要有GC?

Garbage Collection,垃圾回收机制。内存泄漏是编程人员容易出现问题的地方,忘记或错误的内存回收会导致程序或系统不稳定甚至崩溃,java提供的GC可以自动监视对象并达到回收内存的目的。java语言没有提供释放已分配内存的显示操作方法。


72、垃圾回收的优点和原理。并考虑2种回收机制。

垃圾回收机制使java程序员不用考虑内存管理,垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存。


73、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存么?有什么办法主动通知虚拟机进行垃圾回收?当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。GC采用有向图的方式记录和管理堆中的所有对象。通过这种方式确定对象是否可达。当GC确定一些对象不可达时,GC就有责任回收这些内存空间。

程序员也可以通过System.gc()通知gc运行。


74、什么时候用assert

调试的时候。


75、java中会存在内存泄漏吗?

程序员创建了一个对象,以后一直不再使用这个对象,对象却一直被引用,及这个无用对象一直无法被GC回收,这样的情况既是java中的内存泄漏情况。


76、能不能自己写个类,叫做java.lang.String?

可以,但在应用的时候,需要用自己的类加载器去加载。

你可能感兴趣的:(java基础,接口,vector,comparable)