java面试之项目面试问题--不看面试会后悔的

1.请描述下你做的项目:

XXX系统是什么什么,主要目的是XXX,整个系统包含了哪些功能模块,然后说包含了哪些模块,自己做了哪些模块。

2.结合项目谈谈你对MVC的理解

MVC是model-view-controler的简称。也就是模型-视图-控制器。mvc是一种设计模式,他强制性的把应用程序的输入、处理和输出分开。mvc中的模型、视图、控制器分别担任着不同的任务。
视图:视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
模型:模型表示业务数据和业务处理。相当于javaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性。
控制器:当用户单击web页面中的提交按钮时,控制器接收请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结构。
MVC的处理过程:首先控制器接收用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结构。并通过视图呈现给用户。如在项目中要对应MVC的话;View对应项目中的jsp,controler对应action,model对应service+dao层的业务逻辑和持久层的操作。

3.项目中为什么要使用ssh(三大框架的优点)

1.使用struts是因为struts是基于mvc模式的,很好的将应用程序进行了分层,使开发者更关注业务逻辑的实现;struts有着丰富的标签库,能大大的提高开发效率。
2.使用Hibernate;是因为Hibernate为java应用提供了一个易用的、搞效率的对象关系映射框架。hibernate是个轻量级的持久层框架,功能丰富。
3.使用spring;是因为spring基于ioc(控制反转)和aop框架多层j2ee系统的框架

4.挑选一个你做的功能说明ssh框架的应用原理

1.在表示层中,首先通过jsp页面实现交互界面,负责传送请求(request)和接收响应(response),然后struts根据配置文件(struts。xml)将actionServlet接收到的request委派给响应的action处理。
2.在业务层中,管理服务组件的spring ioc容器负责向action提供业务模型(model)组件和组件的协作对象数据处理(dao)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
3.在持久层中,则依赖于hibernate的对象化映射和数据库交互,处理dao组件请求的数据,并返回处理结果。

综合上面的概述;然后可以把我们做的信息发布管理模块用上述的方式实例化描述一遍。

5.struts工作原理

——-按照struts工作原理图说
1.客户端发出一个指向servlet容器的请求;
2.请求会经过strutsPrepareAndExecuteFilter过滤器;
3.过滤器和请求将访问strut2的底层框架结构。在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转换成相应的类。
如:ConfigurationManager、ActionMapper和Objectfactory.ConfigurationManager存有配置文件的一些基本信息,ActionMapper存有action的配置信息。在请求过程中所有的对象(Action,results,Interceptors,等)都是通过Objectfactory来创建的。过滤器会通过询问ActionMapper类来查找请求中需要用到的Action。
4.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象。ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类。
5.ActionProxy创建一个ActionInvocation的实例。ActionInvocation在ActionProxy层之下,它表示了Action的执行状态,或者说它控制的action的执行步骤。它持有Action实例和所有的Interceptor。
6.ActionInvocation实例使用命名模式来调用,1.ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor.2.通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。在调用action的过程前后,涉及到相关拦截器(Interceptor)的调用。
7.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

————–通俗的说————
发送http请求
web服务器(tomcat、weblogic)
执行struts核心过滤器StrutsprepareAndExecuteFilter
加载struts配置文件中配置信息,找到对应的Action类并实例化
执行各类拦截器和action中对应方法
配置文件中找到返回结果
转发到具体页面或其他操作

6.struts有什么优缺点

————–优点————
1.实现MVC模式,结构清晰;
2.丰富的struts的标记库,利用好能大大提高开发效率
3.全局结果与声明式异常;
4.可使用OGNL进行参数传递
5.各类方便使用的拦截器

————–缺点————-
1.转到表现层时,需要配置结果页面;页面多了比较繁杂;
2.对Servlet的依赖性过强
3.struts标签稍微比el表达式繁重

7.为何使用spring

spring是一个轻量级的控制反转(ioc)、面向切面(AOp)、面向接口、事务管理、包容促进其他框架;使系统中用到的其他框架的耦合程度大大降低,扩展性强、简单易用好管理。

8.spring在项目中如何充当粘合剂

1.在项目中利用spring的ioc(控制反转或依赖注入),明确的定义组件接口(如UserDao),开发者可以独立开发各个组件,然后根据组件间的依赖关系组装(UserAction依赖于UserService,UserService依赖于Userdao)运行,很好的把struts(Action)和hibernate(dao的实现)结合起来;
2.spring的事务管理把hibernate对数据库的操作进行了事务配置

9.描述在系统中如何使用了spring的事务控制

spring事务包括编程事务和声明式事务。在系统中使用了声明式的事务管理是用spring的AOP来实现的;配置了只读事务和回滚事务(传播行为为REQUIRED)当出现错误后进行事务回滚操作。在项目中通过aop切入事务到service层,这样做能使一次业务逻辑操作如果包括几个数据库操作都控制在一个事务中。

10.Hibernate工作原理以及为什么要用?

原理:
1.读取并解析配置文件
2.读取并解析映射信息,创建SessionFactory
3.打开Session
4.创建事务Transaction
5.持久化操作
6.提交事务
7.关闭Session
8关闭SessionFactory

为什么要用:
1.对Jdbc访问数据库代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度上简化DAO层的编码工作。3.Hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4.Hibernate的性能非常好,因为他是一个轻量级框架。映射的灵活性很出色。他支持各种关系数据库,从一对一到多对对的各种复杂关系。

11.Hibernate在系统中使用的优化策略

Hibernate对数据的缓存包括两个级:一级缓存,在Session的级别上进行,主要是对象缓存,以其id为键保存对象,在Session的生命期间存在;二级缓存,在SessionFactory的级别上进行,有对象缓存和查询缓存,查询缓存以查询条件为键保存查询结果,在SessionFactory的生命期间存在,默认地,Hibernate只启用一级缓存

12.列举你在开发中常用的struts标签

property、iterator、if、date、form、a、url、textfiled、textarea、select、radio、checkboxlist、
hidden、param

13.Jquery异步获取数据的方式有几种?有何区别?

1.load载入远程Html文件代码并插入至Dom中
2.get
3.post
4.ajax
5.getJSON
6.getScript通过get方式请求载入并执行一个JavaScript脚本。

14,简述UML并书名你是用Rose常用于什么情况,画什么图?

UML是统一建模语言;用于在软件开发各个阶段中用图形的方式描述流程和功能需求;IBM
Rational Rose是uml建模工具之一比较多的在需求阶段,常用于画例图,类图,时序图。

15.请简述导入导出的工具类;并说明你导出过的最大数据量

POI(合并单元格对象和背景色的应用)

最后这里还找到了百度文库当中的一些面试题:内容很多,就不一一列举出来了。
传送门:最全的ssh框架面试题

ssm框架面试题:http://www.2cto.com/kf/201702/603919.html

你可能感兴趣的:(面试题)