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?
可以,但在应用的时候,需要用自己的类加载器去加载。