题目:

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


②EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。


③Collection 和 Collections的区别。


④&和&&的区别。


⑤HashMap和Hashtable的区别。


⑥final, finally, finalize的区别。


答案:

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


② EJB包括Session Bean、Entity Bean、Message Driven    Bean,基于JNDI、RMI、JAT等技术实现。
   SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。
   对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
   对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
   Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。    Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。


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


④&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。


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


⑥final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
   finally是异常处理语句结构的一部分,表示总是执行。
   finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。




联系我们 | 友情链接