JAVA面试常用的基础知识(3)

学人智库 时间:2018-02-10 我要投稿
【meiwen.anslib.com - 学人智库】

  getContentLength():返回请求的Body的长度

  getHeader(String name):获得HTTp协议定义的文件头信息

  getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例

  getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例

  getInputStream():返回请求的输入流,用于获得请求中的数据

  getMethod():获得客户端向服务器端传送数据的方法

  getparameter(String name):获得客户端传送给服务器端的有name指定的参数值

  getparameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例

  getparameterValues(String name):获得有name指定的参数的所有值

  getprotocol():获取客户端向服务器端传送数据所依据的协议名称

  getQueryString():获得查询字符串

  getRequestURI():获取发出请求字符串的客户端地址

  getRemoteAddr():获取客户端的Ip地址

  getRemoteHost():获取客户端的名字

  getSession([Boolean create]):返回和请求相关Session

  getServerName():获取服务器的名字

  getServletpath():获取客户端所请求的脚本文件的路径

  getServerport():获取服务器的端口号

  removeAttribute(String name):删除请求中的一个属性

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

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

  J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。

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

  public String translate (String str) {

  String tempStr = "";

  try {

  tempStr = new String(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)

  xml文档有两种定义方法:

  dtd:数据类型定义(data type definition),用以描述XML文档的文档结构,是早期的XML文档定义形式。

  schema:其本身是基于XML语言编写的,在类型和语法上的限定能力比dtd强,处理也比较方便,因为此正逐渐代替dtd成为新的模式定义语言。

  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管理,通常包含创建实例,设置上下文、创建EJB Object(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()

  init ()方法在servlet的生命周期中仅执行一次,在服务器装载servlet时执行。缺省的init()方法通常是符合要求的,不过也可以根据需要进行 override,比如管理服务器端资源,一次性装入GIF图像,初始化数据库连接等,缺省的inti()方法设置了servlet的初始化参数,并用它 的ServeltConfig对象参数来启动配置,所以覆盖init()方法时,应调用super.init()以确保仍然执行这些任务。

  service ()方法是servlet的核心,在调用service()方法之前,应确保已完成init()方法。对于HttpServlet,每当客户请求一个 HttpServlet对象,该对象的service()方法就要被调用,HttpServlet缺省的service()方法的服务功能就是调用与 HTTp请求的方法相应的do功能,dopost()和doGet(),所以对于HttpServlet,一般都是重写dopost()和doGet() 方法。