您的位置:首页 > 职场人生

面试系列之常见问题

2018-03-09 18:20 169 查看
1.Spring MVC运行顺序



1)用户发送请求至前端控制器DispatcherServlet。2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。3)处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4)DispatcherServlet调用HandlerAdapter处理器适配器。5)HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。6)Controller执行完成返回ModelAndView。7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。8)DispatcherServlet将ModelAndView传给ViewReslover视图解析器。9)ViewReslover解析后返回具体View。10)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。11)DispatcherServlet响应用户。说明:Handler: 也就是处理器,直接对应着MVC中的C也就是控制层。SpringMVC中用@RequestMapping标注的方法都可以看成一个Handler。也就是只要可以实际处理的请求就是Handleer。HandlerMapping: 用来查找Handler。HandlerAdapter: 适配器。因为SpringMVC中的Handler可以是任意形式,只要能处理请求就可以,但是Servlet需要的处理方法的结构是固定的,都是用request和response为参数的方法(比如doService方法)。如何让固定的Servlet处理方法调用灵活的Handler来进行处理?这就是HandlerAdapter所做的事情。View: 用来展示数据。ViewResolver: 用来查找View。
2.Spring IOC 反射
正常方式:通过完整的类名—>通过new实例化—>取得实例化对象
反射方式:实例化对象—>getClass()方法—>通过完整的类名
3.JDK 动态代理与cglib代理有什么区别:
JDK是实现接口的方式来进行代理,cglib通过继承的方式来进行代理。
jdk动态代理实际上是将定义一个InvocationHandler的实现类,在通过构造函数将代理类注入。再实现invoke方法(在方法中写入代理方法之前和之后的加入的通知),在实际使用中,通过Proxy.newProxyInstance()来产生一个代理对象,通过代理对象调用各种方法。
4.java8 新特性
lambda 表达式,函数式编程,流式操作
流式操作,对集合来说方便了我们的对集合过滤、排序、映射的操作。相当于一个高级版的迭代器,普通的只能串行,流式操作可是实现并行,放在多个线程中实现,通过join等方式。
比如说stream.filter 对集合中元素的过滤、sorted对集合中元素进行排序(默认升序),map按照相应的规则变成相应的元素
5.JVM是如何加载GC的?
GC是后台守护进程,在初始化饿时候就会存在,但是优先级比较低,但会随着JVM可用内存低到一定限制就会提升优先级自行启动。(GC也是也是进程也会消耗CPU的资源)

6.进程间的通信方式:
管道(pipe)、信号、消息队列、共享内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试