<!----><!----> <!---->
* 21 、 Static Nested Class 和 Inner Class 的不同。
Static Nested Class 是被声明为静态( static )的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
22 、 JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?
动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp" flush="true" /> 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态 INCLUDE 用 include 伪码实现 , 它不会检查所含文件的变化,适用于包含静态页面 <%@ include file="included.htm " %>
* 23 、什么时候用 assert 。
assertion( 断言 ) 在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中, assertion 就是在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这个 boolean 表达式的值为 true ;如果该值为 false ,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说, assertion 用于保证程序最基本、关键的正确性。 assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后, assertion 检查通常是关闭的。
24 、 GC 是什么 ? 为什么要有 GC?
GC 是垃圾收集的意思( Gabage Collection ) , 内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃, Java 提供的 GC 功能 可以自动监测对象是否超过作用域从而达到自动回收内存的目的 , Java 语言没有提供释放已分配内存的显示操作方法。
* 25 、 short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?
short s1 = 1; s1 = s1 + 1; ( s1+1 运算结果是 int 型,需要强制转换类型)
short s1 = 1; s1 += 1; (可以正确编译) --why ? A:+= 运算符无类型转换问题!
26 、 Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 ?
Math.round(11.5)==12
Math.round(-11.5)==-11
round 方法返回与参数最接近的长整数 ,参数加 1/2 后求其 floor.
* 27 、 String s = new String("xyz"); 创建了几个 String Object?
两个
28 、设计 4 个线程,其中两个线程每次对 j 增加 1 ,另外两个线程对 j 每次减少 1 。写出程序。
以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。
public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc =tt.new Inc();
Dec dec =tt.new Dec();
for(int i=0;i<2;i++){
Thread t =new Thread(inc);
t.start();
t =new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
}
}
}
29 、 Java 有没有 goto?
java 中的保留字,现在没有在 java 中使用。
30 、启动一个线程是用 run() 还是 start()?
启动一个线程是调用 start() 方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由 JVM 调度并执行。这并不意味着线程就会立即运行。 run() 方法可以产生必须退出的标志来停止一个线程。
31 、 EJB 包括( SessionBean,EntityBean )说出他们的生命周期,及如何管理事务的?
SessionBean : Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个 Bean 的实例时, EJB 容器不一定要创建一个新的 Bean 的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个 Stateful Session Bean 时,容器必须立即在服务器中创建一个新的 Bean 实例,并关联到客户机上,以后此客户机调用 Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的 Bean 实例。
EntityBean : Entity Beans 能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在, Entity beans 就一直存活。而不是按照应用程序或者服务进程来说的。即使 EJB 容器崩溃了, Entity beans 也是存活的。 Entity Beans 生命周期能够被容器或者 Beans 自己管理。
EJB 通过以下技术管理实务:对象管理组织( OMG )的对象实务服务( OTS ), Sun Microsystems 的 Transaction Service ( JTS )、 Java Transaction API ( JTA ),开发组( X/Open )的 XA 接口。
32 、应用服务器有那些?
BEA WebLogic Server , IBM WebSphere Application Server , Oracle9i Application Server , jBoss , Tomcat
33 、给我一个你最常见到的 runtime exception 。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException , ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
34 、接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)?
接口可以继承接口。抽象类可以实现 (implements) 接口,抽象类可继承实体类
35 、 List, Set, Map 是否继承自 Collection 接口 ?
List , Set 是, Map
* 36 、说出数据连接池的工作机制是什么 ?
J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为“忙”。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为“空闲”,其他调用就可以使用这个连接。
* 37 、 abstract 的 method 是否可同时是 static, 是否可同时是 native ,是否可同时是 synchronized?
都不能
38 、数组有没有 length() 这个方法 ? String 有没有 length() 这个方法?
数组没有 length() 这个方法,有 length 的属性。 String 有 length() 这个方法。
* 39 、 Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?
Set 里的元素是不能重复的,即不能包含两个元素 e1 、 e2 ( e1.equals ( e2 ))。 那么用 iterator() 方法来区分重复与否。 equals() 是判读两个 Set 是否相等。
equals() 和 == 方法决定引用值是否指向同一对象 equals() 在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
40 、构造器 Constructor 是否可被 override?
构造器 Constructor 不能被继承,因此不能重写 Overriding ,但可以被重载 Overloading 。