每日十道面试题(五)

1. Servlet的基本架构

Servlet是Server与Applet的缩写,是服务端小程序的意思。是SUN公司提供的一门用于开发动态Web资源的技术。 Servlet本质上也是Java类,但要遵循Servlet规范进行编写,没有main()方法,它的创建、使用、销毁都由Servlet容器进行管理(如Tomcat)。Servlet是和HTTP协议是紧密联系的,其可以处理HTTP协议相关的所有内容。这也是Servlet应用广泛的原因之一。提供了Servlet功能的服务器,叫做Servlet容器,其常见容器有很多,如Tomcat, Jetty, resin, Oracle Application server, WebLogic Server, Glassfish, Websphere, JBoss等。

public class ServletName extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
}

Servlet详解

2. JDO是什么?

JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

3. xml的有哪些解析技术?区别是什么?

解析方式思想优点缺点
DOM将整个xml文件读入内存,建立一个dom树来解析每个结点a、由于整棵树在内存中,因此可以对xml文档随机访问 b、可以对xml文档进行修改操作 c、较sax,dom使用也更简单。a、整个文档必须一次性解析完 a、由于整个文档都需要载入内存,对于大文档成本高
SAX部分解析,基于事件驱动,可以注册自己感兴趣的事件,比如 EntityResolver, DTDHandler, ContentHandler, ErrorHandler接口,分别用于监听解析实体事件、DTD处理事件、正文处理事件和处理出错事件,默认实现类为DefaultHandlera、无需将整个xml文档载入内存,因此消耗内存少 b、可以注册多个ContentHandlera、不能随机的访问xml中的节点 b、不能修改文档
JDOM纯java,API大量使用了Collection类,且仅使用具体类而不使用接口,自身不包含解析器,它通常使用SAX2解析器来解析和验证输入xml文件,也可以将以前构造的DOM表示作为输入,包含转换器可以将JDOM表示输出为SAX2事件流、DOM模型或XML文本文档a、DOM方式的优点 b、具有SAX的Java规则a、DOM方式的缺点
DOM4目前在xml解析方面是最优秀的(Hibernate、Sun的JAXM也都使用dom4j来解析XML),它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理最优秀的一个,集易用和性能于一身。

XPath 是一门在 XML 文档中查找信息的语言, 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。
XPath非常类似对数据库操作的SQL语言,或者说JQuery,它可以方便开发者抓起文档中需要的东西。(dom4j也支持xpath)

4. 你在项目中用到了xml技术的哪些方面?如何实现的?

用到了数据存储,信息配置两方面,在做数据交换平台的时候,将数据组装成xml文件,然后将xml文件压缩加密后通过网络传送给接收者,接收解密与解压缩后再次xml文件中还原相关信息进行处理,在做软件配置时,利用xml可以很放百年的进行,软件的各种配置都可以存储在xml文件中,比如SharedPrefences。

5. EJB 与JAVA BEAN的区别?

java bean是可复用的组件,对java bean并没有严格的规范,理论上讲,任何一个java类都可以是一个bean,但通常情况下,由于java bean是被容器所创建的,所以java bean应该具有一个无参构造器,另外还要实现SErializable接口用于实现bean的持久性。java bean实际上相当于微软com模型中的本地进程内组件,然是不能被跨进程访问的。

Enterprise java bean将挡雨dcom,即分布式组件,它是基于java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程,跨计算机),但是EJB必须被部署在诸如Webspere/WebLogic这样的容器内,EJB客户从不直接访问真正的组件,而是通过其同期访问,EJB容器是EJB组件的代理,EJB组件由容器所创建和管理,客户通过容器来访问真正的组件。

6. struts的应用

Struts是采用java servlet/javaServer pagers技术,开发web应用程序的开放源码的framework。采用struts能开发出基于mvc设计模式的应用框架,struts有如下的主要功能:

  1. 包含一个controller servlet,能将用户送到相应的action对象
  2. jsp自由tag库,并且在controller servlet中提供关联支持,帮助开发员简历交互式表单应用
  3. 提供了一系列实用对象:xml处理,通过java reflection apis自动处理javabeans属性,国际化的提示和消息。

7. forward和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,把相应内容读取过来,然后在讲这些内容发送给浏览器,浏览器根本不知道服务器发送的内容是从哪来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,高速浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

8. Servlet的生命周期,以及和CGI的区别

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其Service方法,Service方法自动派遣运行与请求对应的doXXXfangfa (doget, doPost)等,当服务器决定将实例销毁的时候调用其Destory方法。

与CGI的区别:Servlet处于服务器进程中,它通过多线程方式运行其Service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,搜易效率上低于CGI。

9. 说出ArrayList,Vector,LinkedList的存储性能和特性。

对比/种类ArrayListVectorLinkedList
实现方式数组数组双向链表
存储容量大于实际元素大于实际元素等于实际元个数
线程安全不安全安全(利用synchronized)不安全
扩充方式每次增加原来的一半每次增加原来的一倍

10. 同步和异步有什么异同,在什么情况下分别使用他们?举例说明。

如果数据在线程间共享,例如正在写的数据以后肯呢个被另一个线程读到,或者正在读的数据已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在一个对象上调用了一个需要花费时间很长执行的方法,并且不希望让程序等待方法的执行时,就应该使用异步编程,在很多情况下采用异步途径更有效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值