java软件开发面试题
Java软件开发的面试问题你有了解了吗?面试前的准备很重要,以下是小编帮你们整理的java软件开发面试题,一起来学习啦。
java软件开发面试题(一)
1.描述J2EE框架的多层结构,并简要说明各层的作用。
1)Presenttation layer(表示层)
A.表示逻辑(生成界面代码)
B.接受请求
C.处理业务层抛出的异常
D.负责规则验证(数据格式,数据非空等)
E.流程控制
2)Service layer(服务层、业务层)
A.封装业务逻辑处理,并且对外暴露接口
B.负责事务、安全等服务
3)Pesistence layer(持久层)
A.封装数据访问的逻辑,暴露接口
B.提供方便的数据访问方案(查询语言,API,映射机制等)
4)Domain layer(域层)
A.业务对象以及业务关系的表示
B.处理简单的业务逻辑
C.域层的对象可以穿越表示层,业务层,持久层
软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。
2.请谈谈对SOA的认识。
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组建模型,他将相应程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,他应该独立与实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
3.简要描述如何结合Struts、hibernate、spring开发web应用?
Struts可以将jsp页面的表单关联起来,就是把JSP页面的表单数据封装成javaBean,这样的话,在action中再也不需要使用创痛的request.getParameter(“name”);还有struts有一个控制器,在Struts变成中的控制器(XxxAction)都是继承总的ActionServlet,他能集中处理请求,然后转到相关的页面。还有struts的表单验证组件,不能自己写js验证了,只需要配置一下文件就可以了。另外struts的令牌机制可以防止表单的重复提交。
Spring是一个轻量级容器,非侵入性,包含依赖注入,AOP等。他是为了解决企业开发应用程序复杂性而构建的。框架的主要优势之一就是其分层架构,分层架构允许选择是用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
Hibernate他可以让我们一OO的方式操作数据库,这让我们看到了Hibernate的强大之处,体验到操作数据的方便。但是Hibernate最耀眼之处是Hibernate的缓存机制,而不是以OO的方式操作数据库。Hibernate的缓存机制不外乎是一级缓存session,二级缓存sessionfactory,和第三方缓存如ehcache。也就是hibernate的最强大的地方就是它的缓存,理解了这个才能真正的理解hibernate,Hibernate的命名查询/命名参数查询,就是讲hql语句放在一个单独的xml文件之中,他仍然让人们以面向对象的方式操纵数据库,而不用在以OO的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些sql语句。但是Hibernate不仅做了这些,它的native sql查询方式,完全满足sql语句的偏爱者,他就像ibatis一样,将sql语句放在配置文件中。
4.说明反转控制(IOC)和面向方面编程(AOP)在Spring中的应用。
Spring核心容器(Core)提供Spring框架的基本功能。核心容器的主要组建市BeanFactory,它是工厂模式的实现。beanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。Spring的声明式事务基于AOP实现,却不需要程序开发者成为AOP专家,亦可轻易使用Spring的声明式事务管理。
java软件开发面试题(二)
1.列出自己常用的jdk包
Java.lang:这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package
Java.io:这里面是所有输入输出有关的类,比如稳健操作等。
Java.net:这里面是与网络有关的类,比如URL,URLConnection等。
Java.util:这个是系统辅助类,特别是集合类Collection,List,Map等。
Java.sql:这个是数据库操作类,Connection,Statement,ResultSet等
2.列出自己常用的jdk中的数据结构
线程表,链表,hash表都是常用的数据结构
3.List,Map,Set三个接口存储元素时各有什么特点?
1)List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下表)来访问List中的元素,这类似于Java的数组。
2)Set是一种不包含重复元素的Collection,即任意的两个元素e1和e2都有e1..equals(e2)=false,Set最多有一个null元素。
3)Map接口:Map没有继承Collection接口,Map提供Key到Value的映射
4.简述基于Struts框架Web应用的工作流程
在Web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把他们存放到各种配置文对象中,当ActionServlet接收到一个客户的请求时,将执行如下流程:
1)检索和用户请求匹配的ActionMapPing实例,如果不存在,就返回请求路径无效信息。
2)如果ActionForm实例不存在,就创建ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
3)根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的validate()方法;
4)如果ActionForm的validate()方法返回null或者返回一个不好喊ActionMessager的ActionErrors对象,就表示表单验证成功;
5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向JSP组件生成动态网页,返回给客户。
java软件开发面试题(三)
1.在项目中用过Spring的哪些方面?及用过哪些Ajax框架?
在项目中使用过SpringIOC,AOP,DAO,ORM,还有上下文环境
在项目中使用过JQuery,EXtjs等Ajax框架。
(Ajax框架:最长用的就是,prototype、jquery 和EXtjs,Jquery用起来比较方便,EXtjs可能对初学者比较困难。
常用的基本就是Dojo,Extjs,GWT,Prototype,JQuery ,MooTools,Backbase
这些了,他们使用的概率大约是
Prototype jQuery Ext Script.aculo.us Mootools YUI JSON Dojo Backbase
34.1% 29.3% 22.5% 22.3% 14.3% 13% 12.9% 11.8% 8.3%)
2.Abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让他指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的自雷为他们父类中的所有抽象方法提供实现,否则他们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其他类可以再类中实现这些方法。
接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是public static final的。一个类可以实现多个接口,当类实现接口时,必须实现接口的所有方法。抽象类在java语言中表示的是一种单继承的关系,对于interface来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。
抽象类中可以定义自己的成员变量,也可以包含非抽象类的方法,而在接口中只能由静态的敞亮,所有的方法必须是抽象的;实现抽象类是可以实现其中的部分方法,而是要实现一个接口的话就必须实现这个接口中的所有抽象方法。
3.MVC模式中M、V、C每个代表的含义,并简述在Struts中的MVC的表现的方式。
MVC是MOdel-View-Controller的缩写,Model代表的是应用的业务逻辑(通过JaveBean,EJB组件实现),View是应用的表示层(由JSP页面产生),Controller是通过应用的处理过程控制,(一般是一个servert)通过这种设计模型把应用逻辑,处理过程和现实逻辑分成不同的组件实现,这些组件可以进行交互和重用。
在Struts框架中Controller功能由ActionServlert和ActionMapping对象构成,核心是一个Servlet类型的对象ActionServlet,他用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到具体的Model部分的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象可以通过定义属性描述客户端表单数据,开发者可以从他派生子类对象,并利用它和Struts提供的自定义标记库相结合,可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对他进行读写,而不再需要和request、response对象进行数据交互。通过ActionForm组件对象实现了对View和model之间的交互支持(View部分是通过JSP技术实现的)。Struts提供了自定义的标记库,通过这些自定义标记库可以非常容易地和系统Model部分交互,通过使用这些自定义标记库创建的JSP表单,可以实现对Model部分中的ActionForm的映射,完成对用户数据的封装。
看了“java软件开发面试题”