Java面试(五)

Java面试时遇到的问题:

1.请解释一下IOC和AOP的区别?

答:①AOP:面向(方面)切面的编程,Filter(过滤器)也是一种AOP,AOP是一种新的方法论,是对传统OOP的补充,AOP的主要编程对象是切面,而切面模块化横切关注点,可以举例通过事务说明

       ②IOC:控制反转也称为DI(依赖注入)其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动的将推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源,这种行为也被称为查找的被动形式。

2.请解释Java的架构。

答:Java的三层架构:

①表现层(UI):展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

②业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

③数据访问层(DAL):直接操作数据库,对数据表CRUD(增删改查)操作。

3.请解释MVC的三种开发模式。

答:

4.请解释MVC的执行过程。

答:

①首先客户端发起用户请求,以http形式进入到servlet容器中,servlet容器解析http数据成为一个endpoint对象,endpoint对象包含了请求url、http header以及解析完或者读取完的body数据流。

②然后进入用户自定义的filter,在filter中用户可以对request进行处理,然后经过多个filter处理完后,进入到dispatcherservlet,也就是springmvc的入口。

③然后会先进入到一些常用的解析器中,比如用来解析上传文件的MultipartResolver,如果请求是Multipart,也就是说header包含Multipart,springmvc就会解析上传的请求里面的上传文件,解析成字节流,以及把一些字符串k、v读出来,封装到对象中以供后续的comtroller进行接收,从解析器出来后,就是根据请求url寻找handler(controller)的过程。

④由于我们在controller方法中使用requestMapping注解定义了url映射,在启动过程中springmvc就会将controller及对应的方法注册到HandlerMapping中,如果无法在handlerMapping中找到请求对应的controller,就会报404错误。

⑤找到controller后进入到HandlerInterceptor,即拦截器,在拦截器中可以进行打印日志,身份鉴权等操作。

⑥经过拦截器后,springmvc会对数据进行绑定(与方法参数进行绑定),及数据验证,反射调用我们的controller方法,执行方法体中的业务逻辑,执行完成后创建ModelAndView。model就是数据,此时的view只是个viewName(String)。

⑦如果我们定义了异常处理器,在拦截器处理数据绑定、数据验证、业务处理这些所有环节,只要出现了异常,都会被异常处理器拦截,可以在异常处理中返回相应的错误页面。

⑧如果正常执行,会通过ViewResolver进行view的资源定位,找到view之后就会进入渲染页面的过程,实际是将数据进行模版的变量替换的过程,数据来源于request,modelMap,session中。

⑨渲染之后就经过dispatcherservlet返回,再经过filter后续的处理,最终通过servlet容器形式http响应返回给客户端。

5.请解释AOP的实现方式。

答:①代理模式静态的实现AOP  ②aspectj静态代理实现AOP   ③jdk动态代理实现AOP  ④cglib动态代理实现AOP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值