Java面试汇总----概念题

1、集合:

    Vector、Hashtable是线程安全的集合对象,

    ArrayList、Vector对象的底层是由数组实现的,

    LinkedList是线程不安全的,底层是由链表实现的,

    Map 是键值对集合,HashMap和Hashtable都是map的实现类,Hashtable线程安全,不可以存放null。HashMap线程不安全,可以存放null,

2、Spring:

        1)低侵入式的轻量级容器框架,

        2)解耦、易于扩展和维护,

        3)核心:IoC和AOP,

        4)提供了丰富的模块(JDBC、ORM、WEB、TEST、事务....),便于集成其他优秀框架,

3、IoC:

        1)Inversion of Controller :控制反转

        2)对象创建交给spring的bean工厂来代理创建,

        3)实现了代码的解耦,便于维护

4、AOP:

        1)Aspect-Oriented Programming 面向切面编程

        2) 将重用的功能代码提取出来,(关注点代码和业务代码)

        3)将功能按需插入到切面,比如:事务管理、权限控制、日志记录、性能统计等,

        4)提高了代码的维护性,减少了工作量,

        5)关键词: Aspect、JoinPoint、Advice、arount、before、after、afterThrowling、Annotation、

5、SpringMVC的请求流程:

        第一步:发送请求到前端控制器:DispatherServlet,

        第二步:前端控制器请求HandlerMapping查找Handler可以根据Xml配置、注解等进行查找,

        第三步:处理器映射器HandlerMapping向前端控制器返回Handler

        第四步:前端控制器调用处理器适配器去执行Handler,

        第五步:处理器适配器执行Handler

        第六步:Handler执行完成给适配器返回ModelAndView

        第七步:处理器适配器想前端控制器返回ModelAndView,

        第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(JSP、FreeMarker、Thyemleaf等),

        第九步:视图解析器像前端控制器返回View、

        第十步:前端控制器进行试图渲染,将数据模型填充到request域里面,

        第十一步:前端控制器响应用户的请求结果。

Java面试汇总----概念题_第1张图片

6、SpringMVC和Struts2的对比:

        1)Struts2是类级别的拦截,一个类对应一个request上下文、springmvc是基于方法级别的拦截,一个方法对应一个request上下文,方法跟url相对应,容易实现restful风格的请求路径。

        2)springmvc的方法之间是独立的,独享request response资源数据,而struts2的类方法可以共享变量,

        3)springmvc集成Ajax,使用方便,提供@ResponseBody 

7、代理模式

        基本作用:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.

Java面试汇总----概念题_第2张图片

        

静态代理:


Java面试汇总----概念题_第3张图片

    

静态代理总结:
1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.
2.缺点:

  • 因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

动态代理之 JDK代理---必须实现接口

    类加载器、ClassLoader loader,

    接口的类型(泛型实现)、Class[] interfaces,

    InvocationHandler :事件处理


动态代理之Cglib代理

    可以不用实现接口



你可能感兴趣的:(学习,工作,面试)