经验一"/>
Java实习面试经验一
Java大三实习面试经验
由于在春招大厂面试时不给力,只能靠在BOSS直聘、拉钩等网址投简历,正好学校有个毕业招聘会,过去面试了Java的后台开发,以下是面试的一些问题,分享出来,大家可以借鉴下。
-
SpringBoot和SpringMVC区别
类比来看:
spring boot 相当于 腾讯的 Wegame,里面装了自家的各种游戏 如 spring data 、spring mvc……
你通过 We game 可以轻松 快速 安装、使用(引入、整合)Wegame旗下的游戏springmvc与springboot的联系和区别:
联系: Spring最初利用工厂模式(DI)和代理模式解耦应用组件,为了解耦开发了springmvc;而实际开发过程中,经常会使用到注解,程序的样板很多,于是开发了starter,这套就是springboot。区别: 1.springboot是约定大于配置,可以简化spring的配置流程;springmvc是基于servlet的mvc框架,个人感觉少了model中的映射。 2.以前web应用要使用到tomat服务器启动,而springboot内置服务器容器,通过@SpringBootApplication中注解类中main函数启动即可。例如:
-
拦截器和过滤器区别
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。 ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。过滤器使用场景: 比如:过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符。 1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。 2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面; 3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录); 4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。 5、OpenSessionInView:如hibernate,在进入处理器打开Session,在完成后关闭Session。拦截器使用场景: 拦截未登录用户等
filter Interceptor 多个的执行顺序 根据filter mapping配置的先后顺序 按照配置的顺序,但是可以通过order控制顺序 规范 在Servlet规范中定义的,是Servlet容器支持的 spring容器内的,是Spring框架支持的。 使用范围 只能用于Web程序中 既可以用于Web程序,也可以用于Application、Swing程序中。 深度 Filter在只在Servlet前后起作用 拦截器能够深入到方法前后、异常抛出前后等 -
面试官:“当使用过滤器时,此时Spring还没有注入bean,过滤时怎么进行业务操作?”
答:“不使用过滤器,使用Interceptor”
问:“如果一定要使用过滤器呢”
答:“母鸡”
后来经过查询,其实原理很简单,具体如下:
-
解决Filter不能注入Spring 的bean问题
来自博客
我们都知道Filter的优先级大于Servlet,而springMVC又是基于Servlet来进行注入bean的,所以这就导致了Filter无法注入bean
接下来我们进行配置Filter,在web.xml中有:
<<
-
更多推荐
Java实习面试经验一
发布评论