天天看点

java基础面试3

67、j2ee是技术还是平台还是框架?

    j2ee本身是一个标准,一个为企业分布式应用的开发提供的标准平台。

    j2ee也是一个框架,包括jdbc、jndi、rmi、jms、ejb、jta等技术。

68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

  public string translate (string str) {

    string tempstr = "";

    try {

      tempstr = newstring(str.getbytes("iso-8859-1"), "gbk");

      tempstr = tempstr.trim();

    }

    catch (exception e) {

      system.err.println(e.getmessage());

    return tempstr;

  }

69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。

区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型

b.逻辑操作不会产生短路

70、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)

71、简述synchronized和java.util.concurrent.locks.lock的异同?

主要相同点:lock能完成synchronized所实现的所有功能

主要不同点:lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而lock一定要求程序员手工释放,并且必须在finally从句中释放。

72、ejb的角色和三个对象

一个完整的基于ejb的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循sun公司提供的ejb规范,以保证彼此之间的兼容性。这六个角色分别是ejb组件开发者(enterprise bean provider)、应用组合者(application assembler)、部署者(deployer)、ejb 服务器提供者(ejb server provider)、ejb 容器提供者(ejb container provider)、系统管理员(system administrator)

三个对象是remote(local)接口、home(localhome)接口,bean类

73、ejb容器提供的服务

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

74、ejb规范规定ejb中禁止的操作有哪些?

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

75、remote接口和home接口主要作用

remote接口定义了业务方法,用于ejb客户端调用业务方法。

home接口是ejb工厂用于创建和移除查找ejb实例

76、bean 实例的生命周期

对于stateless session bean、entity bean、message driven bean一般存在缓冲池管理,而对于entity bean和statefull session bean存在cache管理,通常包含创建实例,设置上下文、创建ejbobject(create)、业务方法调用、remove等过程,对于存在缓冲池管理的bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在cache管理的bean则通过激活和去激活机制保持bean的状态并限制内存中实例数量。

77、ejb的激活机制

以stateful session bean 为例:其cache大小决定了内存中可以同时存在的bean实例的数量,根据mru或nru算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个ejb实例业务方法时,如果对应ejb object发现自己没有绑定对应的bean实例则从其去激活bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbactive和ejbpassivate方法。

78、ejb的几种类型

会话(session)bean ,实体(entity)bean 消息驱动的(message driven)bean

会话bean又可分为有状态(stateful)和无状态(stateless)两种

实体bean可分为bean管理的持续性(bmp)和容器管理的持续性(cmp)两种

79、客服端调用ejb对象的几个基本步骤

设置jndi服务工厂以及jndi服务地址系统属性,查找home接口,从home接口调用create方法创建remote接口,通过remote接口调用其业务方法。

80、如何给weblogic指定大小的内存? 

在启动weblogic的脚本中(位于所在domian对应服务器目录下的startservername),增加set mem_args=-xms32m -xmx200m,可以调整最小内存为32m,最大200m

81、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?

可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set production_mode=true。

82、如何启动时不需输入用户名与密码?

修改服务启动文件,增加 wls_user和wls_pw项。也可以在boot.properties文件中增加加密过的用户名和密码.

83、在weblogic管理制台中对一个应用域(或者说是一个网站,domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?

保存在此domain的config.xml文件中,它是服务器的核心配置文件。

84、说说weblogic中一个domain的缺省目录结构?比如要将一个简单的helloworld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javabean该如何办?

domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是web应用,应用目录需要满足web应用目录要求,jsp文件可以直接放在应用目录中,javabean需要放在应用目录的web-inf目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

85、在weblogic中发布ejb需涉及到哪些配置文件

不同类型的ejb涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlcmp实体bean一般还需要weblogic-cmp-rdbms-jar.xml

86、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置

缺省安装中使用demoidentity.jks和demotrust.jks  keystore实现ssl,需要配置服务器使用enable ssl,配置其端口,在产品模式下需要从ca获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此ssl连接是单向还是双向的。

87、如何查看在weblogic中已经发布的ejb?

可以使用管理控制台,在它的deployment中可以查看所有已发布的ejb

88、corba是什么?用途是什么? 

corba 标准是公共对象请求代理结构(common object request broker architecture),由对象管理组织 (object management group,缩写为 omg)标准化。它的组成是接口定义语言(idl), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。

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

90、说说在weblogic中开发消息bean时的persistent与non-persisten的差别

persistent方式的mdb可以保证消息传递的可靠性,也就是如果ejb容器出现问题而jms服务器依然会将消息在此mdb可用的时候发送过来,而non-persistent方式的消息将被丢弃。

91、servlet执行时一般实现哪几个方法?

public void init(servletconfig config)

public servletconfig getservletconfig()

public string getservletinfo()

public void service(servletrequest request,servletresponse response)

public void destroy()

92、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(责任链模式)

工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。

93、ejb需直接实现它的业务接口或home接口吗,请简述理由。

远程接口和home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。

94、排序都有哪几种方法?请列举。用java实现一个快速排序。

    排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

/ /使用快速排序方法对a[ 0:n- 1 ]排序

从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点

把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点

递归地使用快速排序方法对left 进行排序

递归地使用快速排序方法对right 进行排序

所得结果为l e f t + m i d d l e + r i gh t