Java程序员面试13文档格式.docx
《Java程序员面试13文档格式.docx》由会员分享,可在线阅读,更多相关《Java程序员面试13文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
__________________________________________________________________________________________
正确答案:
()
解析:
cookie是在HTTP下,服务器或脚本可以维护客户工作站上信息的一种方式。
它是由Web服务器保存在用户浏览器上的小文件,可以包含有关用户的信息(如身份识别号码、密码等信息)。
session是指用来在客户端与服务器端之间保持状态的解决方案以及存储结构。
尽管二者都能够进行信息存储,但是也存在着区别。
具体而言,二者有以下几个方面的区别:
1)cookie机制采用的是在客户端保持状态的方案,即数据存放在客户的浏览器上;
而session机制采用的是在服务器端保持状态的方案,即数据放在服务器上。
2)cookie安全性不够。
由于cookie信息存放在客户端,其他人可以很容易地得到存放在本地的cookie,并进行cookie欺骗;
而session信息存放在服务器端,因此较为安全。
3)cookie性能更高一些。
由于session会在一定时间内保存在服务器上,因此当访问量增多时,会降低服务器的性能。
4)单个cookie保存的数据不能超过4KB,很多浏览器都限制一个站点最多保存20个cookie;
而session不存在此问题。
鉴于以上几点区别,一般情况下,将用户登录信息等重要信息存放至session中,而其他需要保留的信息可以放在cookie中。
2.什么是J2EE
1J2EE(Java2Platform,EnterpriseEdition)是Java平台企业版的简称,是用来开发与部署企业级应用的一个架构,它提供了一种统一的、开放标准的多层平台,该平台主要由构件、服务和通信3个模块构成。
构件包含客户端构件和服务器端构件两种类型,其中,客户端构件主要包含两类Applets和ApplicationClients,服务器端构件分为两类Web构件(Servlet与JSP)和EJBs(EnterpriseJavaBeans)两种。
服务由J2EE平台提供商实现,分为ServiceAPI(开发时使用)和运行时服务。
通信由容器提供的支持协作构件之间的通信。
从本质上来讲,J2EE只是一个行业标准,主要用来通过Java开发服务器端应用提供一个独立的、可移植的、多用户的企业级平台,从而能够简化应用程序的开发和部署。
正是由于J2EE只是一个标准而不是一个成熟的产品,因此目前有很多不同类型的J2EE服务器。
只要开发的应用程序符合J2EE的标准,就都可以部署在遵循了J2EE开发标准的J2EE服务器上。
这种标准使得开发人员只需要专注于各种应用系统的商业逻辑与架构设计,而不用过多地考虑底层繁琐的程序编写工作,系统的开发与部署效率大幅提升。
常见笔试题:
在J2EE中,属于Web层的组件有______。
A.ServletB.EJBC.AppletD.HTML
答案:
A。
见上面讲解。
3.J2EE中常用的术语有哪些
J2EE中常用的术语有Web服务器、Web容器、EJB容器、Applet容器、ApplicationClient容器、JNDI、JMS、JTA、JAF、RMI等。
下面将分别对它们进行解释。
(1)Web服务器
Web服务器是指驻留在Internet上的计算机程序。
它是一种服务程序,其主要工作是接收来自于客户端的请求,然后把对请求的处理结果返回给客户端。
用户可以通过浏览器来请求所需资源,这些资源可以是HTML页面、图片、音频、视频或者PDF文档等,Web服务器接收到请求后会去查找用户请求的资源,然后把找到的资源返回给用户。
需要注意的是,它是一个被动的程序,只有当收到来自客户端的请求后,才会发送响应。
目前最流行的两大Web服务器是:
IIS(InternetInformationServices)和ApacheHttpServer(简称Apache)。
(2)Web容器
Web容器也被叫作Web应用服务器,它是一种服务程序,用来给运行在其中的程序(例如Servlet、JSP等)提供一个运行的环境。
由于Web容器的存在,Servlet只需要关注业务逻辑的处理而不用关注与客户端的交互,因为这些交互都已经由Web容器来协助完成了。
常见的Web容器有Tomcat、JBoss、WebLogic和WebSphere等。
下面以Tomcat为例介绍一下Web容器主要完成了哪些工作:
当Web服务器(例如Apache)接收到一个客户端对Servlet的请求后,不是直接把这些请求交给Servlet来处理,而是交给Web容器来处理,由Web容器负责给Servlet提供HTTP请求与响应对象,同时容器调用Servlet的doGet()或doPost()方法来处理用户的请求。
(3)EJB容器
EJB容器是一个服务器端容器。
EJB(EnterpriseJavaBean)是J2EE应用的业务层的技术标准,只要满足J2EE规范的组件就能在EJB容器中运行,这个组件就会被EJB容器高效地管理。
同时,EJB容器还给运行在其中的组件提供了安全而优越的服务环境,例如事务管理、邮件服务等。
需要注意的是,EJB组件不能显式地使用EJB容器的API(ApplicationProgrammingInterface,应用程序接口)来请求容器提供的中间件服务,但可以隐式地让EJB容器知道它们的需求,例如在基于XML的部署描述符中制定所需的配置信息,在Bean类中使用部署注释请求中间件服务。
EJB容器为EJB组件隐式地提供中间件服务。
(4)Applet容器
Applet容器是一个客户端容器,包含的组件为Applet。
Applet是一种嵌入在浏览器中的轻量级客户端,一般而言,只有当使用Web页面无法充分地表现数据或应用界面时,才会使用它。
Applet是一种替代Web页面的手段,开发人员只能够使用J2SE开发Applet,出于安全性的考虑,Applet无法使用J2EE的各种Service和API。
(5)ApplicationClient容器
ApplicationClienf容器是一个客户端容器,包含的组件为ApplicationClient。
相对Applet而言,ApplicationClient是一种较重量级的客户端,它能够使用J2EE的大多数Service和API。
(6)JNDI
JNDI全称为JavaNamingandDirectoryInterface,译为Java命名和目录接口。
它提供了一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可使用名称来访问对象。
通过使用JNDI,一方面实现了快速查找和定位分布式应用程序的功能,另一方面使得程序有了更好的可扩展性。
由于JNDI是独立于目录协议的,因此应用还可以使用JNDI访问各种特定的目录服务,例如轻量级目录访问协议(LightweightDirectoryAccessProtocol,LDAP)、网络数据服务(NetworkDataService,NDS)和域名系统(DomainNameSystem,DNS)等。
(7)JMS
JMS全称为JavaMessageSetvice,译为Java消息服务。
它是一个Java平台中面向消息中间件的API,主要实现各个应用程序之间进行异步通信,包括创建、发送、接收、读取消息等。
通过使用JMS,能够最大限度地提升消息应用的可移植性。
JMS既支持点对点的消息通信,也支持发布/订阅式的消息通信。
(8)JTA
JTA全称为JavaTransactionAPI,译为Java事务服务。
它提供各种分布式事务服务(在多个网络计算机上进行数据访问和更新),为J2EE实现分布式事务处理提供了重要的支撑。
(9)JAF
JAF的全称为JavaBeansActivationFramework,译为JavaBeans激活框架。
它是一个专用的数据处理框架,提供了一种统一处理不同数据格式的方法。
(10)RMI
RMI全称为RemoteMethodInvocation,译为远程方法调用,它主要用于远程调用服务,通过它,可以像调用本地函数一样调用另外一台计算机上运行的程序,而不需要关心远程计算机所使用的系统或所使用的语言,也就是说,只要满足一定的规范,就可以实现在不同的计算机上进行函数调用。
JNDI可用于如下哪些应用场景?
______
A.配置信息存储B.异步信息发送
C.数据库连接池查找D.远程对象查找
D。
4.EJB有哪些不同的类别
EJB是EnterpriseJavaBean的简称,相当于分布式组件对象模型(DistributedComponentObjectModel,DCOM),它是一种服务器端组件体系结构,用于开发和部署多层的、分布式的以及面向对象的应用系统的跨平台体系结构。
EJB简化了Java开发企业级的分布式组件应用程序的过程,它定义了一组可重用的组件——EnterpriseBeans,开发人员可以利用这些组件,像搭积木一样建立各种分布式应用。
所以,使用EJB可以写出可扩展的、健壮的、安全的应用程序,而不需要开发人员自己去编写复杂的分布式组件框架。
依据特性的不同,EJB可以分为以下3种类型:
SessionBean(会话Bean),EntityBean(实体Bean)和MessageDrivenBean(消息驱动Bean)。
下面将分别对这3种Bean进行介绍。
(1)SessionBean
SessionBean用来实现服务器端的业务逻辑,同时协调Bean之间的交互。
SessionBean仅存在于客户应用与服务器交互的时间段内,SessionBean中的数据是不保存在数据库中的。
根据SessionBean是否有状态又可以分为两种类型:
StatelessSessionBean(无状态的SessionBean)和StatefulSessionBean(有状态的SessionBean)。
StatelessSessionBean在方法调用期间不维护任何状态,所有事务处理都是在一个方法中处理完成,因此一个StatelessSessionBean可以被多个客户共享,即一个StatelessSessionBean可以同时处理多个客户应用的请求;
而StatefulSessionBean则不同,它可以记录客户应用请求的状态,例如在线购物系统中,每个客户都拥有购物车(StatefulBean),而装载的货物和货物的数量