java面试常见的框架问题

上传人:tia****nde 文档编号:36948334 上传时间:2018-04-04 格式:DOC 页数:43 大小:191KB
返回 下载 相关 举报
java面试常见的框架问题_第1页
第1页 / 共43页
java面试常见的框架问题_第2页
第2页 / 共43页
java面试常见的框架问题_第3页
第3页 / 共43页
java面试常见的框架问题_第4页
第4页 / 共43页
java面试常见的框架问题_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《java面试常见的框架问题》由会员分享,可在线阅读,更多相关《java面试常见的框架问题(43页珍藏版)》请在金锄头文库上搜索。

1、1、SqlServer 和和 Oracle 的区别在于:的区别在于:一、开放性一、开放性 1. SQL Server 只能在 windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对 数据库是十分重要的。Windows9X 系列产品是偏重于桌面应用,NT server 只适合中小型 企业。而且 windows 平台的可靠性,安全性和伸缩性是非常有限的。它不象 unix 那样久经 考验,尤其是在处理大数据库。 2. Oracle 能在所有主流平台上运行(包括 windows) 。完全支持所有的工业标准。采 用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。 二、可伸缩性二

2、、可伸缩性,并行性并行性 1. SQL server 并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷, 伸缩性有限。 2. Oracle 并行服务器通过使一组结点共享同一簇中的工作来扩展 windownt 的能力, 提供高可用性和高伸缩性的簇的解决方案。如果 windowsNT 不能满足需要,用户可以把数 据库移到 UNIX 中。Oracle 的并行服务器对各种 UNIX 平台的集群机制都有着相当高的集 成度。 三、性能三、性能 1. SQL Server 多用户时性能不佳 2. Oracle 性能最高, 保持开放平台下的 TPC-D 和 TPC-C 的世界记录。 四、客户端支持

3、及应用模式四、客户端支持及应用模式 1. SQL Server C/S 结构,只支持 windows 客户,可以用 ADO、DAO、OLEDB、ODBC 连接。 2. Oracle 多层次网络计算,支持多种工业标准,可以用 ODBC、JDBC、OCI 等网络 客户连接。 五、操作简便五、操作简便 1. SQL Server 操作简单,但只有图形界面。 2. Oracle 较复杂,同时提供 GUI 和命令行,在 windowsNT 和 unix 下操作相同。 六、使用风险六、使用风险 1. SQL server 完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来 证明。并不十分兼容。

4、 2. Oracle 长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。 最 后价格上 ORACLE 贵过 SQLSRVER2、Struts1 和和 Struts2 的区别的区别1)在在 Action 实现类方面的对比实现类方面的对比: Struts 1 要求 Action 类继承一个抽象基类;Struts 1 的一个具体问题是使用抽象类编 程而不是接口。 Struts 2 Action 类可以实现一个 Action 接口,也可以实现其他接口,使可选和定制的 服务成为可能。Struts 2 提供一个 ActionSupport 基类去实现常用的接口。即使 Action 接 口不是必

5、须实现的,只有一个包含 execute 方法的 POJO 类都可以用作 Struts 2 的 Action。 2) 线程模式方面的对比线程模式方面的对比:Struts 1 Action 是单例模式并且必须是线程安全的,因为仅有 Action 的一个实例来处 理所有的请求。单例策略限制了 Struts 1 Action 能做的事,并且要在开发时特别小心。 Action 资源必须是线程安全的或同步的;Struts 2 Action 对象为每一个请求产生一个 实例,因此没有线程安全问题。 3) Servlet 依赖方面的对比依赖方面的对比: Struts 1 Action 依赖于 Servlet A

6、PI,因为 Struts 1 Action 的 execute 方法中有 HttpServletRequest 和 HttpServletResponse 方法。 Struts 2 Action 不再依赖于 Servlet API,从而允许 Action 脱离 Web 容器运行,从而 降低了测试 Action 的难度。 当然,如果 Action 需要直接访问 HttpServletRequest 和 HttpServletResponse 参数,Struts 2 Action 仍然可以访问它们。但是,大部分时候, Action 都无需直接访问 HttpServetRequest 和 HttpS

7、ervletResponse,从而给开发者更多灵 活的选择。 4) 可测性方面的对比可测性方面的对比: 测试 Struts 1 Action 的一个主要问题是 execute 方法依赖于 Servlet API,这使得 Action 的测试要依赖于 Web 容器。为了脱离 Web 容器测试 Struts 1 的 Action,必须借助 于第三方扩展:Struts TestCase,该扩展下包含了系列的 Mock 对象(模拟了 HttpServetRequest 和 HttpServletResponse 对象) ,从而可以脱离 Web 容器测试 Struts 1 的 Action 类。 Str

8、uts 2 Action 可以通过初始化、设置属性、调用方法来测试。 5) 封装请求参数的对比:封装请求参数的对比: Struts 1 使用 ActionForm 对象封装用户的请求参数,所有的 ActionForm 必须继承一 个基类:ActionForm。普通的 JavaBean 不能用作 ActionForm,因此,开发者必须创建大 量的 ActionForm 类封装用户请求参数。虽然 Struts 1 提供了动态 ActionForm 来简化 ActionForm 的开发,但依然需要在配置文件中定义 ActionForm;Struts 2 直接使用 Action 属性来封装用户请求属性

9、,避免了开发者需要大量开发 ActionForm 类的烦琐,实际上,这 些属性还可以是包含子属性的 Rich 对象类型。如果开发者依然怀念 Struts 1 ActionForm 的模式,Struts 2 提供了 ModelDriven 模式,可以让开发者使用单独的 Model 对象来封装 用户请求参数,但该 Model 对象无需继承任何 Struts 2 基类,是一个 POJO,从而降低了 代码污染。 6) 表达式语言方面的对比:表达式语言方面的对比: Struts 1 整合了 JSTL,因此可以使用 JSTL 表达式语言。这种表达式语言有基本对象 图遍历,但在对集合和索引属性的支持上则功能

10、不强; Struts 2 可以使用 JSTL,但它整合了一种更强大和灵活的表达式语言:OGNL(Object Graph Notation Language) ,因此,Struts 2 下的表达式语言功能更加强大。 7) 绑定值到视图的对比:绑定值到视图的对比: Struts 1 使用标准 JSP 机制把对象绑定到视图页面; Struts 2 使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑 定在一起。 8) 类型转换的对比类型转换的对比: Struts 1 ActionForm 属性通常都是 String 类型。Struts 1 使用 Commons-Bean

11、utils 进 行类型转换,每个类一个转换器,转换器是不可配置的; Struts 2 使用 OGNL 进行类型转换,支持基本数据类型和常用对象之间的转换。 9) 数据校验的对比数据校验的对比: Struts 1 支持在 ActionForm 重写 validate 方法中手动校验,或者通过整合 Commons alidator 框架来完成数据校验。 Struts 2 支持通过重写 validate 方法进行校验,也支持整合 XWork 校验框架进行校验。10) Action 执行控制的对比执行控制的对比: Struts 1 支持每一个模块对应一个请求处理(即生命周期的概念) ,但是模块中的所有

12、 Action 必须共享相同的生命周期。 Struts 2 支持通过拦截器堆栈(Interceptor Stacks)为每一个 Action 创建不同的生命 周期。开发者可以根据需要创建相应堆栈,从而和不同的 Action 一起使用。 11) 捕获输入:捕获输入: Struts1 使用 ActionForm 对象捕获输入。所有的 ActionForm 必须继承一个基类。因 为其他 JavaBean 不能用作 ActionForm,开发者经常创建多余的类捕获输入。动态 Bean(DynaBeans)可以作为创建传统 ActionForm 的选择,但是,开发者可能是在重新 描述(创建)已经存在的

13、JavaBean(仍然会导致有冗余的 javabean) 。 Struts 2 直接使用 Action 属性作为输入属性,消除了对第二个输入对象的需求。输入 属性可能是有自己(子)属性的 rich 对象类型。Action 属性能够通过 web 页面上的 taglibs 访问。Struts2 也支持 ActionForm 模式。rich 对象类型,包括业务对象,能够用作输入/输 出对象。这种 ModelDriven 特性简化了 taglib 对 POJO 输入对象的引用。3、Java 虚拟机的运行原理 Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行

14、Jav 才程序必不可少的机 制。编译后的 Java 程序指令并不直接在硬件系统的 CPIJ 上执行,而是由 JVM 执行。JVM 是 编译后的 Java 程序和硬件系统之间的接口,程序员可以把 JVM 看作一个虚拟的处理器。 它不仅解释执行编译后的 Java 指令,而且还进行安全检查。它是 Java 程序能在多平台间 进行无缝移植的可靠保证,同时也是 Java 程序的安全检验引擎。Java 虚拟机规范中给出了 JVM 的定义:JVM 是在一台真正的机器上用软件方式实现 的一台假想机。JVM 使用的代码存储在。class 文件中。JVM 的某些指令很像真正的 CPU 指令,包括算术运算、流控制和

15、数组元素访问等。Java 虚拟机规范提供了编译所有 Java 代码的硬件平台。因为编译是针对假想机的,所 以该规范能让 Java 程序独立于平台。它适用于每个具体的硬件平台,以保证为 JVM 编译 的代码的运行。JVM 不但可以用软件实现,而且可以用硬件实现。JVM 的具体实现包括:指令集(等价于 CPIJ 的指令集) 、寄存器组、类文件格式、栈、 垃圾收集堆、内存区。JVM 的代码格式为压缩的字节码,因而效率较高。由 JVM 字节码表示的程序必须保 持原来的类型规定。Java 主要的类型检查是在编译时由字节码校验器完成的。Java 的任何 解释器必须能执行符合 JVM 定义的类文件格式的任何

16、类文件。 网管网 bitsCN.comJava 虚拟机规范对运行时数据区域的划分及字节码的优化并不做严格的限制,它们的 实现依平台的不同而有所不同。JVM 的实现叫做 Java 运 行时系统,简称为运行时。Java 运行时必须遵从 Java 虚拟机规范,这样,Java 编译器生成的类文件才可被所有 Java 运行 时系统下载。嵌入了 Java 运行时系统的应用程序,就可以执行 Java 程序了。目前有许多 操作系统和浏览器都嵌入了 Java 运行时环境。Java 虚拟机的性能 Java 在问世之初,因其没有完全优化,并且是解释执行,因此 Java 程序的运行效率较低。同时,有着较长发展史、已非常成熟的 C+十语言仍在开发界扮演着 主要角色,人们往往拿 C+的性能效率与刚诞生的 Java 相比较,这当然失之偏颇。Java 解释器经过不断的优化,字节码的执行速度已有很大提高。另外,在字节码执行 之前可以先经过 JIT 编译器(just in time compiler)进行编译,生成针对具体平台的本机执 行代码。它的执行效率可比解

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号