1. abstract,和interface在应用方面有何区别,何时用抽象类,何时用接口2. 阐述一下struts,hibernate的优缺点,最好详尽些3. 请谈谈对内部类的理解(何时用它),为什么要引入内部类?4. web服务器 和 应用服务器有什么区别,常见的都有哪些?5. 资料库中有张表有1000万条记录,如何优化,常见的优化手段都有哪些,最好详细一些

解决方案 »

  1.   

    回答第一个问题
    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体
    现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建
    abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过
    实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可
    以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中
    继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然
    后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许
    使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或
    从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。关于应用就是你对对象要多理解理解,这个不好说
      

  2.   

    回答第二个问题
    Struts的优点有: 
    1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 
    2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 
    3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 
    4. 提供Exception处理机制 . 
    5. 数据库链接池管理 
    6. 支持I18N  缺点: 
         一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。     二、 Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。      三、 测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。      四、 类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。      五、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。      六、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。      七、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。      八、 对Action 执行前和后的处理. Struts处理Action的时候是基于class的hierarchies,很难在action处理前和后进行操作。      九、 对事件支持不够. 在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。 
      

  3.   

    hibernate的优缺点
    优点:   hibernate它是一个开放源码的关系对象型框架,它对jdbc进行了非常轻量级的封装。使得程序员可以随心所欲的使用对象编程思维来操作数据库。   hibernate它可以应用在任何使用jdbc的场合,即可以在java客户端程序使用,也可以在servlet/jsp的web应用中使用。更具革命意义的是,可以代替在j2ee应用中的cmp,完成数据持久的重任。   大多数开发机构经常采取创建各自的数据持久层,一旦底层数据结构发生改变时,那么修改其余部分适应这种改变将花费的代价十分巨大。而hibernate适时的填补了这一空白,它为java提供了一个易用的,高效率的关系对象映射。它是一个轻量级的持久层框架,功能十分丰富。hibernate使用java反射机制,而不是字节码增强程序来实现透明性。它性能非常好,因为它是轻量级框架,映射的灵活非常出色。它支持各种关系的数据库,从一对一到多对多的各种复杂关系。缺点
    它限制您所使用的对象模型,不能对百万以上的数据进行增删改查(在电信,股票等行业就不能应用)
      

  4.   

    http://zhidao.baidu.com/question/43745729.html
    关于第四个问题,请参观这个网址的内容
      

  5.   

    3. 请谈谈对内部类的理解(何时用它),为什么要引入内部类? 4. web服务器 和 应用服务器有什么区别,常见的都有哪些? 
    求解?