面试常见问题总结

2018-08-20  本文已影响19人  艾剪疏

1 结合项目谈谈你对MVC的理解

MVC 是Model-View-Control的简称。即模型-视图-控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC中的模型、视图、控制器分别负担着不同的任务。

项目中的MVC对应:View对应项目中的JSP,Controler对应Action,Model对应service+dao层的业务逻辑和持久层的操作。

2 项目为什么要使用SSH

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

3 挑选一个你做的个说说SSH框架的应用原理

  1. 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接受响应(Response),然后Struts根据配置文件(*-struts.xml)将ActionServlet接收到的Request委派给相应的Action处理。
  2. 在业务层中,管理服务足迹的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
  3. 在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

结合上面的描述,将某个项目的该过程描述一遍。

4 Struts工作原理

详细回答

image.png

(1) 客户端(Client)向Action发用一个请求(Request)
(2) Container通过web.xml映射请求,并获得控制器(Controller)的名字
(3) 容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExecuteFilter
(4) 控制器(Controller)通过ActionMapper获得Action的信息
(5) 控制器(Controller)调用ActionProxy
(6) ActionProxy读取struts.xml文件获取action和interceptor stack的信息。
(7) ActionProxy把request请求传递给ActionInvocation
(8) ActionInvocation依次调用action和interceptor
(9) 根据action的配置信息,产生result
(10) Result信息返回给ActionInvocation
(11) 产生一个HttpServletResponse响应
(12) 产生的响应行为发送给客服端。

简单回答

5 Struts优缺点

优点:

缺点:

6 为何使用spring

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

7 spring在项目中如何使用充当黏合剂

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

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

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

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

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

关于这个问题,回答系统使用了Hibernate的二级缓存就好。

10 Jpuery异步获取数据的方式有几种?

  1. load载入远程HTML文件代码并插入到DMO中;
  2. get;
  3. post;
  4. ajax;
  5. getJSON;
  6. getScript通过GET方式请求载入并执行一个Javascript文件;

11 系统并发量如何,如何解决大并发量的请求?

系统并发量不大,但是有在应用服务器中间件weblogic和Nginx上做负载均衡的配置;

12 项目中遇到问题如何解决?

自行解决 -- 网络搜索 -- 团队讨论

上一篇 下一篇

猜你喜欢

热点阅读