background image

许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, Vector 由
于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序
号索引数据需要进行前向或后向遍历
8、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和 StatelessBean 的区别。
    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 的优势却在于他可以维持使用者的状态。

9、Collection 

 

和 Collections

 

的区别。

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

 

的区别。

    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
11、HashMap 和 Hashtable

 

的区别。

    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 算法都大概一样,所以性能不会有很大的差异。
12、final, finally, finalize

 

的区别。

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

 

和 wait() 有什么区别? 

    sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然
保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对
此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
14、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一
种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,

 

我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如
同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方
法的重载(Overloading)。Overloaded 的方法是可以改变返回值的类型。
15、error 和 exception 有什么区别?