`
阅读更多
21.请说出你所知道的线程同步的方法。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException 异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM 确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
线程的基本概念、线程的基本状态以及状态之间的关系
线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。Java 中的线程有四种状态分别是:运行、就绪、挂起、结束。

22.描述一下JVM 加载class 文件的原理机制?
JVM 中类的装载是由ClassLoader 和它的子类来实现的,Java ClassLoader 是一个重要的。Java 运行时系统组件。它负责在运行时查找和装入类文件的类。

23.JSP 的内置对象及方法。
request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session 数据的有用的方法。
response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API,并且包装了通用的servlet 相关功能的方法。
session 表示一个请求的javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息
applicaton 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet引擎和servlet 环境的信息
config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。
page 表示从该页面产生的一个servlet 实例

24.JSP 的常用指令
<%@page language="java" contenType="text/html;charset=gb2312" session="true"
buffer="64kb" autoFlush="true" isThreadSafe="true" info="text"
errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312"
import="java.sql.*"%>
isErrorPage(是否能使用Exception 对象),isELIgnored(是否忽略表达式)
<%@include file="filename"%>
%@taglib prefix="c"uri="http://......"%

25.如何现实servlet 的单线程模式
<%@ page isThreadSafe="false"%>

26.页面间对象传递的方法
request,session,application,cookie 等

27.JSP 和Servlet 有哪些相同点和不同点,他们之间的联系是什么?
JSP 是Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet 和JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java 和HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

28.四种会话跟踪技术
会话作用域ServletsJSP 页面描述page 否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求application 是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web应用程序,包括多个页面、请求和会话的一个全局作用域

29.J2EE 是技术还是平台还是框架?
J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE 也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA 等技术。

30.我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1 等,如何输出
一个某种编码的字符串?
new String(str.getBytes("ISO-8859-1"), "GBK");

31.简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路

32.XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式?
a: 两种形式 dtd schema,b: 本质区别:schema 本身是xml 的,可以被XML 解析器解析(这
也是从DTD 上发展schema 的根本目的),c:有DOM,SAX,STAX 等DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM 的树结构所造成的,这种结构占用的内存较多,而且DOM 必须在解析文件之前把整个文档装入内存,适合对XML 的随机访问SAX:不现于DOM,SAX 是事件驱动型的XML 解析方式。它顺序读取XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML 文件,适合对XML 的顺序访问STAX:Streaming API for XML (StAX)

33.简述synchronized 和java.util.concurrent.locks.Lock 的异同?
主要相同点:Lock 能完成synchronized 所实现的所有功能
主要不同点:Lock 有比synchronized 更精确的线程语义和更好的性能。synchronized 会自动释放锁,而Lock 一定要求程序员手工释放,并且必须在finally 从句中释放。

34.EJB 的角色和三个对象
一个完整的基于EJB 的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun 公司提供的EJB 规范,以保证彼此之间的兼容性。这六个角色分别是EJB 组件开发者(Enterprise Bean Provider) 、应用组合者(ApplicationAssembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean 类

EJB 容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。

EJB 规范规定EJB 中禁止的操作有哪些?
1.不能操作线程和线程API(线程API 指非线程对象的方法如notify,wait 等),
2.不能操作awt,
3.不能实现服务器功能,
4.不能对静态属生存取,
5.不能使用IO 操作直接存取文件系统,
6.不能加载本地库.,
7.不能将this 作为变量和返回,
8.不能循环调用。

remote 接口和home 接口主要作用
remote 接口定义了业务方法,用于EJB 客户端调用业务方法。
home 接口是EJB 工厂用于创建和移除查找EJB 实例

bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean 一般存在缓冲池管理,而对于Entity Bean 和Statefull Session Bean 存在Cache 管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove 等过程,对于存在缓冲池管理的Bean,在create 之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache 管理的Bean 则通过激活和去激活机制保持Bean 的状态并限制内存中实例数量。

EJB 的激活机制
以Stateful Session Bean 为例:其Cache 大小决定了内存中可以同时存在的Bean 实例的数量,根据MRU 或NRU 算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB 实例业务方法时,如果对应EJB Object 发现自己没有绑定对应的Bean 实例则从其去激活Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的 ejbActive 和ejbPassivate 方法。

EJB 的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean会话Bean 又可分为有状态(Stateful)和无状态(Stateless)两种实体Bean 可分为Bean 管理的持续性(BMP)和容器管理的持续性(CMP)两种

客服端调用EJB 对象的几个基本步骤
设置JNDI 服务工厂以及JNDI 服务地址系统属性,查找Home 接口,从Home 接口调用Create方法创建Remote 接口,通过Remote 接口调用其业务方法。

EJB 需直接实现它的业务接口或Home 接口吗,请简述理由。
远程接口和Home 接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。

35.如何给weblogic 指定大小的内存?
在启动Weblogic 的脚本中(位于所在Domian 对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M81、如何设定的weblogic 的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv 文件,增加set PRODUCTION_MODE=true。

如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER 和WLS_PW 项。也可以在boot.properties 文件中增加加密过的用户名和密码.

在weblogic 管理制台中对一个应用域(或者说是一个网站,Domain)进行jms 及ejb 或连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain 的config.xml 文件中,它是服务器的核心配置文件。

说说weblogic 中一个Domain 的缺省目录结构?比如要将一个简单的helloWorld.jsp 放入何目录下,然的在浏览器上就可打入 http://主机:端口号//helloword.jsp 就可以看到运
行结果了? 又比如这其中用到了一个自己写的javaBean 该如何办?
Domain 目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web 应用,应用目录需要满足Web 应用目录要求,jsp 文件可以直接放在应用目录中,Javabean 需要放在应用目录的WEB-INF 目录的classes 目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

在weblogic 中发布ejb 需涉及到哪些配置文件
不同类型的EJB 涉及的配置文件不同, 都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml

如何在weblogic 中进行ssl 配置与客户端的认证配置或说说j2ee(标准)进行ssl 的配置缺省安装中使用DemoIdentity.jks 和DemoTrust.jks KeyStore 实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA 获取私有密钥和数字证书,创建identity 和trust keystore,装载获得的密钥和数字证书。可以配置此SSL 连接是单向还是双向的。

如何查看在weblogic 中已经发布的EJB?
可以使用管理控制台,在它的Deployment 中可以查看所有已发布的EJB

说说在weblogic 中开发消息Bean 时的persistent 与non-persisten 的差别
persistent 方式的MDB 可以保证消息传递的可靠性,也就是如果EJB 容器出现问题而JMS服务器依然会将消息在此MDB 可用的时候发送过来,而non-persistent 方式的消息将被丢弃。

36.CORBA 是什么?用途是什么?
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。

37.说说你所熟悉或听说过的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架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发
效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。

38.Servlet 执行时一般实现哪几个方法?
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

39.j2ee 常用的设计模式?说明工厂模式。
Java 中的23 种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数
据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方
法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类
通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成
不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返
回的是哪一个子类的实例。

40.请对以下在J2EE 中常用的名词进行解释(或简单描述)
web 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET 直
接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB 服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE 等。该容器提供的接口严格遵守J2EE 规范中的WEBAPPLICATION标准。我们把遵守以上标准的WEB 服务器就叫做J2EE 中的WEB 容器。
EJB 容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB 各种管理功能。只要满足J2EE 规范的EJB 放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA 命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA 消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA:(Java Transaction API)JAVA 事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA 安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP: (Remote Method Invocation /internet 对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI 是JAVA 特有的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics