象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,
instanceof 运算符可以用来决定某对象的类是否实现了接口。
18、heap 和 stack 有什么区别。栈是一种线形集合,其添加和删除元素的
操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元
素
19、forward 和 redirect 的区别 forward 是服务器请求资源,服务器直接
访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发
给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址
栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏
览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,
所以 session,request 参数都可以获取。
20、EJB 与 JAVA BEAN 的区别?Java Bean 是可复用的组件,对 Java
Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean。
但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat)的,所以
Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现
Serializable 接口用于实现 Bean 的持久性。Java Bean 实际上相当于微软
COM 模型中的本地进程内 COM 组件,它是不能被跨进程访问的。Enterprise
Java Bean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用
(RMI)技术的,所以 EJB 可以被远程访问(跨进程、跨计算机)。但 EJB 必
须被布署在诸如 Webspere、WebLogic 这样的容器中,EJB 客户从不直接访
问真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代理,EJB
组件由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。
21、Static Nested Class 和 Inner Class 的不同。 Static Nested Class
是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。
而通常的内部类需要在外部类实例化后才能实例化。
22、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?动态 INCLUDE 用
jsp:include 动作实现 <jsp:include page="included.jsp"
ush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,
并且可以带参数。静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的
变化,适用于包含静态页面<%@ include le="included.htm" %>
23、什么时候用 assert。 assertion(断言)在软件开发中是一种常用的调
试方式,很多开发语言中都支持这种机制。在实现中,assertion 就是在程序
中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这
个 boolean 表达式的值为 true;如果该值为 false,说明程序已经处于不正确
的状态下,系统将给出警告或退出。一般来说,assertion 用于保证程序最基
本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,
在软件发布后,assertion 检查通常是关闭的。