每天5道面试题(二)java基础

说出Servlet的生命周期,并说出Servlet和CGI的差别

Servlet被server实例化后,容器执行其init方法,请求到达时执行其service方法,service方法自己主动派遣执行与请求相应的doXXX方法(doGet。doPost)等,当server决定将实例销毁的时候调用其destroy方法。
与cgi的差别在于servlet处于server进程中。它通过多线程方式执行其service方法,一个实例能够服务于多个请求,而且事实上例一般不会销毁,而CGI对每一个请求都产生新的进程,服务完毕后就销毁,所以效率上低于servlet。

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

ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便添加和插入元素。它们都同意直接按序号索引元素,可是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector因为使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储。按序号索引数据须要进行前向或后向遍历。可是插入数据时仅仅须要记录本项的前后项就可以,所以插入速度较快。

HashMap和Hashtable的差别

HashMap是Hashtable的轻量级实现(非线程安全的实现)。他们都完毕了Map接口,主要差别在于HashMap同意空(null)键值(key),因为非线程安全,效率上可能高于Hashtable。

HashMap同意将null作为一个entry的key或者value,而Hashtable不同意。
HashMap把Hashtable的contains方法去掉了。改成containsvalue和containsKey。因为contains方法easy让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是。Hashtable的方法是Synchronize的。而HashMap不是,在多个线程訪问Hashtable时,不须要自己为它的方法实现同步。而HashMap 就必须为之提供外同步。
Hashtable和HashMap採用的hash/rehash算法都大概一样,所以性能不会有非常大的差异。

Collection 和 Collections的差别

  Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

&和&&的差别

&是位运算符,表示按位与运算,&&是逻辑运算符。表示逻辑与(and)。
posted @ 2017-07-27 20:51  brucemengbm  阅读(110)  评论(0编辑  收藏  举报