邓宗玉面试题集由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“性能测试面试题集”。
1.2. 介绍下自己以及项目经验。都用过什么报表组件。
FineReport接受参数是:[?id?]传参和jsp页面传参一样都是id=2&c=3, Jfreechar(了解过,网上也有例子。用map写)。
3. Struts1.2和struts2的区别。Struts2以前叫什么。与struts1有没有关系
Action 类:
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为
其他JavaBean不能用作ActionForm,开发者经 常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。
Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。
表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索
引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--“Object Graph Notation Language”(OGNL).绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 “ValueStack”技术,使taglib能够访问值而不需要把你的页面(view)
和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进
行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
校验:
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
Action执行的控制:
• Struts1支持每一个模块有单独的Request Proceors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命
周期。堆栈能够根据需要和不同的Action一起使用。
4. 简单讲讲Ioc。Ioc有几种注入方式。
可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java 的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是 把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性降低耦合度。当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,Ioc有3中方式:
第一种:接口注射,这种方式要求我们的类必须实现容器给定的一个接口,然后容器会
利用这个接口给我们这个类注射它所依赖的类。
第二种:通过setter方法注射,这种方式也是Spring推荐的方式。
第三种:通过构造方法注射类,这种方式Spring同样给予了实现,它和通过setter方式
一样,都在类里无任何侵入性,但是,不是没有侵入性,只是把侵入性转移了,显然第1种方式要求实现特定的接口,侵入性非常强,不方便以后移植。
5.针对简历说Extjs的了解。ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。其中可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变grid大小,grid
说说Java技术方面。比如JavaBean。用过EJB没。之间推拽一或多行,甚至可以在tree和grid之间进行拖拽,可以排序,显示隐藏列等。6.
JavaBean实际上就是一个类,这些类遵循一定的接口格式,其最大的优点就是可以实现代码的重用性,易维护便于传输。
EJB相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但
EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。
7. 控制翻转的原理。反射调用的原理。
组件之间的依赖关系由容器在运行期决定,形象地说,即由容器动态地将某种依赖关系注入到组件之中。
反射,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象 在生成时才决定要生成哪一种对象。反射的应用是很广泛的,象Hibernate、String中都是用“反射”做为最基本的技术手段。车与宝马的关系,你可以通过研究宝马来知道这个是个车。。。
8.9. 单例模式再什么情况下用。打个比方说说。Xml解析用的是dom4j。说下怎么用。
支持JSON、XML和EVAL三种方式给客户端接受数据
10. 一句话说明白Ajax。4个字母代表什么。
“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术
11. 说下同步异步的区别。
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。(提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事)
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。(请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕)
12. Ajax的数据返回是怎么返回的。返回形式有几种。都怎么获得。
支持JSON、XML和EVAL三种方式给客户端接受数据
返回值以json数组的形式返回给客户端,这时直接用eval的方法将返回值赋给某个javascript变量就可以使用了。
以xml返回给客户端的。
13. Java中多线程开发。知道怎么做么?
14. Java中的集合类都有什么。Vector用过么,与list区别是什么。Set:无序,唯一。
List::有序,可重复。
Map:key/value来存放的key不可以重复。
vector适用:对象数量变化少,简单对象,随机访问元素频繁,每次增加一倍的存储空间。
list适用:对象数量变化大,对象复杂,插入和删除频繁
15. Hashmap与hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
16. 数据库用的什么,得到当前日期的函数是什么。字符转成时间的函数是什么。表的分区!!
Oracle,sysdate,to_date,表的分区: