139、toString方法的概述
答:因为每个类都继承了Object类,所以都实现了toString()方法。
通过toString()方法可以决定所创建对象的字符串表达形式。
140、Object类的概述
答:Object类是所有其他的类的超类,Object的一个变量可以引用任何其他类的对象。因为数组是作为类实现的,所以Object的一个变量也可以引用任何数组,它包括以下几种方法:
clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()
141、java特点
答:java具有以下几个主要特点:
简单性
面向对象:JAVA是完全面向对象的,它支持静态和动态风格的代码继承及重用
分布式:包括数据分布和操作分布
健壮性:java系统仔细检测对内存的每次访问,确认它是否合法,而且在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。
结构中立
安全性:java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
与平台无关:java写的应用程序不用修改就可在不同的软硬平台上运行。平台无关性有两种:源代码级和目标代码级。 Java主要靠JAVA虚拟机在目标代码级上实现平台无关性
解释执性:运行JAVA程序时,它首先被编译成字节代码,字节代码非常类似机器码,执行效率非常高。
高性能
多性程
动态性:它允许程序动态的装入运行时需要的类。
142、doGet与doPut的区别?
答: doPut会把地址作为一个文件写到服务器,而doGet不会,而只显示在地址栏。
143、多线程实现有那几种方法,同步有哪几种方法?
答:实现同步主要有两种方法:1.synchronized 2.wait notify
实现多线程主要继承Thread 类和实现Runnable接口。
144、JSP页面的跳转?
答:jsp页面实现跳转主要有jsp:forward 和 sendRedirect 两种方法
jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。
sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。
通常采用jsp:forward方式跳转。
145、类变量的初始化
答:在Java中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始化,而到具体的内部方法或其他的类成员中初始化。
146、数组的定义
答:数组是作为一种对象实现的。数组元素可以包含作何类型值,但数组里面的每个元素的类型必须一致创建数组步聚如下:
声明
构造
初始化
147、Hastable 与HashMap的区别?
答:Hashtable和Hashmap的主要区别如下:
Hashtable是同步的,而HashMap不是同步的。所以不要求同步的时候,用HashMap的效率较高
Hashtable版本较HashMap版本低。
148、说明List和Set的区别
答:两者主要区别如下:
List用来处理序列,而Set用来处理集。
List中的内容可以重复,而Set则不行。
149、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized, wait与notify
150、垃圾回收机制,如何优化程序?
答: 结束方法 finalize() 可以用来帮助优化对象,该方法在释放对象时被子引用,它是 java 中为了有效地进行垃圾收集而引入的一个特殊方法, finalize() 方法属于 java.lang.Object 的系统类方法,它能被所有类访问, 当一个对象实例已经完全没有被任何变量引用时,则可以对它进行垃圾收集标记,在进行”垃圾收集”之前,系统将自动调用对象的 finalize() 方法,释放对象实例所占用的系统资源.
151、== 与 equals 的区别:
答: "==" 比较的是两个对象的引用 (references),并不是他们的内容.equals(Object) 方法与 "==" 相比的特殊之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是比较引用而是比较数据内容。当然 JDK 中也有覆盖过 equals(Object) 方法的类,如 java.lang.String,它就覆盖了从 Object 继承来的的 equals(Object) 方法,用以比较字符串内容是否相同。
152、链表和数组的区别
创建数组必须明确说明数组的长度,(即数组中元素的个数),以便在内存中留出一块空间存放所有的数组元素,数组中各数据元素在内存中是顺序存放的.
创建链表时,不需要给出链表中元素(称为节点)的个数,可以先只创建一个链表头,其他元素在需要时动态地创建并加入到链表,链表的数据无素在内存中不是连续存放的.
153、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问
Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性
Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性
Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性
EJB
1、EJB概述
答:EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。
EJB分为三种:Session Bean Entity Bean Message-Driven Bean 三种,其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) 和 Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。
2、EJB容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
3、EJB的角色和三个对象
EJB角色主要包括Bean开发者 应用组装者 部署者 系统管理员 EJB容器提供者 EJB服务器提供者三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类
4、EJB的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean
会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种
5、bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。