A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[技术面试] java面试-西安软通

© 就业高冷派 黑马粉丝团   /  2018-11-23 16:09  /  7701 人查看  /  128 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

公司名称:西安软通动力
注册规模:10000人以上
公司地址:西安市长安区沣东新城
公司图片: 微信图片_20181123160135.jpg 微信图片_20181123160141.jpg
面试经历:
1:简单说说springMVC的运行原理?

  1.springmvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。

  2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

  3.DispatcherServlet将请求提交到目标Controller

  4.Controller进行业务逻辑处理后,会返回一个ModelAndView

  5.DispathcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象;

  6.视图负责将结果显示到客户端;

2:Struts工作机制?为什么要使用Struts?

工作机制:

Struts的工作流程:

在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,当ActionServlet接收到一个客户请求时,将执行如下流程.

  (1)检索和用户请求匹配的Action Mapping实例,如果不存在,就返 回请求路径无效信息;

  (2)如果Action Form实例不存在,就创建一个Action Form对象,把客户提交的表单数据保存到Action Form对象中;

  (3)根据配置信息决定是否需要表单验证.如果需要验证,就调用Action Form的validate()方法;

  (4)如果Action Form的validate()方法返回null或返回一个不包含Action Message的 ActuibErrors对象,就表示表单验证成功;

  (5)Action Servlet 根据Action Mapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;

  (6)Action的execute()方法返回一个Action Forward对象,Action Servlet再把客户请求转发给 Action Forward对象指向的JSP组件;

  (7)Action Forward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:

JSP、Servlet,JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

3:如何优化Hibernate?

     1. 使用双向一对多关联,不使用单向一对多

  2.灵活使用单向一对多关联

  3.不用一对一,用多对一取代

  4.配置对象缓存,不使用集合缓存

  5.一对多集合使用Bag,多对多集合使用Set

  6.继承类使用显式多态

  7.表字段要少,表关联不要怕多,有二级缓存撑腰

4:spring的工作原理?

Spring 已经用过一段时间了,感觉Spring是个很不错的框架。

内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。

Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。

Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

5:拦截器和过滤器的区别

  1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。

  2、拦截器不依赖于servlet容器,过滤器依赖于servlet容器。

  3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。

  4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

  5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

6:怎么使用Spring配置事务?

Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。

声明式事务管理的配置方式,通常有以下4种:

  (1)使用TransactionProxyFactoryBean为目标Bean生成事务代理的配置。此方式是最传统、配置文件最臃肿、最难以阅读的方式。

  (2)采用Bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。

  (3)采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。

  (4)采用DefaultAdvisorAutoProxyCreator,直接利用Spring的AOP框架配置事务代理的方式,效果非常不错,只是这种配置方式的可读性不如第3种方式。

7:.什么是AOP,AOP的作用是什么?

面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。

除了类(classes)以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。

Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP,提供声明式企业服务,特别是为了替代EJB声明式服务。

最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。

允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强.

总结:面试官对实际开发经验比较看重, 对框架的使用也比较看重,以上是我面试的经过。





128 个回复

倒序浏览
感谢分享~
回复 使用道具 举报
回复 使用道具 举报
66666666666666666666
回复 使用道具 举报
                             
回复 使用道具 举报
6666666666666666666
回复 使用道具 举报
感谢分享
回复 使用道具 举报
感谢分享
回复 使用道具 举报
点个赞。。。6666666666666
回复 使用道具 举报

感谢分享
回复 使用道具 举报
66666666666666666666666666666
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
感谢分享66666666666666666666666
回复 使用道具 举报
666666
回复 使用道具 举报
回复 使用道具 举报
66666666666666666666666
回复 使用道具 举报
感谢分享~
回复 使用道具 举报
格子衫真的是程序员的标配
回复 使用道具 举报

感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马