日期:2014-05-20  浏览次数:20694 次

java面试题汇总

1.Java?中多线程有几种,分别如何实现?

??Java语言中提供了三种实现方式:

???继承Thread

???实现Runnable接口

???使用TimerTimerTask组合

???最常用的就是Thread类和Runnable接口

继承Thread类就具备多线程的能力

?Public class?TestThread1?extends?Threads{

?Public?static?void?mian(String?args[]){

????//创建对象

????TestThread1?tt1=new?TestThread1();

???//启动线程

????tt1.start();

}

Public?void?run(){

?//run方法是Thread类中的方法,一般在子类中重写?

}

}

?

2,String?and?StringBuffer的区别?

???String:长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,速度慢。?????

???StringBuffer:长度可变,可以将多个字符串值直接联合,效率高

?

3,回话跟踪技术有几种分别是什么

有三种分别是:cookie技术,session技术,url重写

?

4、谈谈final,?finally,?finalize的区别
答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为?abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally—再异常处理时提供?finally?块来执行任何清除操作。如果抛出一个异常,那么相匹配的?catch?子句就会执行,然后控制就会进入?finally?块(如果有的话)
finalize—方法名。Java?技术允许使用?finalize()?方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在?Object?类中定义的,因此所有的类都继承了它。子类覆盖?finalize()?方法以整理系统资源或者执行其他清理工作。finalize()?方法是在垃圾收集器删除对象之前对这个对象调用的

?

5,?抽象类和接口的区别?

(1)接口可以被多重implements,抽象类只能被单一extends

(2)接口只有定义,抽象类可以有定义和实现

(3)接口的字段定义默认为:public?static?final,?抽象类字段默认是"friendly"(本包可见)

当功能需要累积时用抽象类,不需要累积时用接口。

?

6,?集合的作用是什么?

数据的传送?增、删、改、查、constainsAll,可以存放不同类型的对象。

?

7,.?集合的通用方法有那些?通用方法是什么?(操作)

???????集合List?的遍历方法有:Iterator:,Enumeration,For,Get,set,

???????Collection的通用方法有:Iterator(), Add(),Clear(), remove()

?

8,?说出ArrayList,Vector,?LinkedList的存储性能和特性HashMapHashtable的区别

???ArrayList?Vector:以数组的方式存储,增、删慢,查、改快

???ArrayList:线程不安全,速度快

???Vector:线程安全,速度慢(synchoronized)

???LikedList:?以单链表的方式存储,增、删快,查、改慢

??HashMapHashtable都实现的Map接口,HashTable线程安全,HashMap线程不安全。

??HashMapHashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key,由于非线程安全,效率上可能高于Hashtable.

?????HashMapHashtable的区别。?
??????HashMapHashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key,由于非线程安全,效率上可能高于Hashtable
HashMap允许将null作为一个entrykey或者value,而Hashtable不允许。
HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。因为contains方法容易让人引起误解。?
Hashtable继承自Dictionary类,而HashMapJava1.2引进的Map?interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap?就必须为之提供外同步。?
HashtableHashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

?

9.??Collection?和?Collections的区别。

Collection是集合的根接口,其下有setlist;??Collections是集合的算法。

?

10.??Set里的元素是不能重复的,那么用什么方法来区分重复与否呢??是用==还是equals()???contains?

在比较时先调用hashCode方法,如果不相同,证明不相等。

如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。

==:主要用在基本数据类型及引用;Equals:主要是对象或对象引用的比较。

集合中是否包含某一个元素用contains来判断。

?

11.??List,?Set,?Map是否继承自Collection接口?

List,set继承于Collection;?Map没有继承于Collection,其相对是独立的。

属于Collection类型的对象,可以通过构造函数将一个集合构造成另外一个集合。

?

12,String是最基本的数据类型吗?

基本数据类型包括byteintcharlongfloatdoublebooleanshort

java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer

?

13?abstract?classinterface有什么区别
??答:声明方法的存在而不去实现它的类被叫做抽象类(abstract?class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract?类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract?类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static?final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof?运算符可以用来决定某对象的类是否实现了接口

?

14,?抽象类与接口?
答:抽象类与接口都用于抽象,但是抽象类(JAVA)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)?
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable?接口和?Comparator?接口

15,你所知道的集合类都有哪些?主要方法?
答:最常用的集合类是?List??Map?List?的具体实现包括?ArrayList??Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。?List?适用于按数值索引访问元素的情形。?
Map?提供了一个更通用的元素存储方法。?Map?集合类用于存储元素对(称作""""),其中每个键映射到一个值。

?

16,、垃圾回收的优点和原理。并考虑2种回收机制
答:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

?

17什么是java序列化,如何实现java序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements?Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object?obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。


18ListMapSet三个接口,存取元素时,各有什么特点?
答:List?以特定次序来持有元素,可有重复元素。Set?无法拥有重复元素,内部排序。Map?保存key-value值,value可多值。

?

19.Ssh框架是如何整合的,他们都有什么作用?

???SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句。Struts是用来做应用层的,他它负责调用业务逻辑serivce层。所以SSH框架的流程大致是:??Jsp页面----Struts应用层------Service(业务逻辑处理类)---Hibernate(左到右)struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖和强,属于耦合。这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,SpringIoc机制(控制反转和依赖注入)正是用在此处。

??????

???

<!--EndFragment-->