zoukankan      html  css  js  c++  java
  • 一个个题目--自我准备

    http://www.cnblogs.com/zjdxr-up/p/6655092.html

    1.spring框架的作用和优点?

    2.bean的作用域有几种?

    3.spring经常有哪些注解?作用是什么?

    4.springmvc的工作流程?

    5.spring有什么缺点?3点

    6.spring的IOC和AOP功能,它们在项目中能起到什么作用?举例说明?

    7.AOP的底层实现原理是什么?动态代理分为哪几种?区别是什么?

    AOP技术指的是在我们程序运行的时候,可以利用这个动态代理技术在内存中创建一个新的类,并且实例化调用它。

    动态代理工作的基本模式就是将自己的方法功能的实现交给 InvocationHandler角色,外界对Proxy角色中的每一个方法的调用,Proxy角色都会交给InvocationHandler来处理,而InvocationHandler则调用具体对象角色的方法。在调用代理对象中的每一个方法时,在代码内部,都是直接调用了InvocationHandler 的invoke方法,而invoke方法根据代理类传递给自己的method参数来区分是什么方法。在这种模式中,Proxy和RealSubject应该要实现相同的功能。所以有两种实现方式,jdk动态代理使用的是实现统一的接口,cglib使用的是继承RealSubject这个类。

    区别:jdk动态代理是由java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的;总的来说,反射机制在生成类的过程中比较高效,而asm在生成类之后的相关执行过程中比较高效;jdk动态代理的应用前提,必须是目标类基于统一的接口。如果没有上述前提,jdk动态代理不能应用。由此可以看出,jdk动态代理有一定的局限性,cglib这种第三方类库实现的动态代理应用更加广泛,且在效率上更有优势。

    8.为什么要使用AOP?

    少写很多代码;就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情。这些其他的事情包括:安全,事物,日志等等。

    9.AOP基本概念的理解:

    1、join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。
    2、point cut(切入点):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。
    3、advice(通知):是point cut的执行代码,是执行“方面”的具体逻辑。
    4、aspect(方面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。
    5、introduce(引入):为对象引入附加的方法或属性,从而达到修改对象结构的目的。

    10.Spring切面5中通知类型:

    1. Before——在方法调用之前调用通知
    2. After Returning--在方法执行成功之后调用通知
    3. After Throwing--在方法抛出异常后进行通知
    4. After--在方法完成之后调用通知,无论方法执行成功与否
    5. Around--环绕通知,在被通知的方法调用之前和调用之后执行自定义的行为

    11.什么是事务?事务是指单个逻辑单元执行的一系列操作,也就是说,将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并且使应用程序更加可靠。

    12.事务的四个特性是什么?

    13.事务的传播行为?当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。接下来介绍7种传播行为。

    14.事务的隔离级别?级别最高的是?最低的是?大多数数据库默认的隔离级别是?Mysql的默认隔离级别是?

    15.并发事务所导致的问题?

     解释什么是幻读?什么是不可重复读?什么是脏读?

    16.spring是如何管理事务的?有几种管理方法?

    spring中的事务管理是通过AOP代理来实现的,对被代理对象的每个方法进行拦截,在方法执行前启动事务,方法执行后根据是否有异常和异常的种类进行提交或者回滚。spring事务有两种管理方法。

    编程式事务管理是指:将事务管理代码嵌入到业务方法中来控制事务的提交和回滚,在编程式事务中,必须在每个业务操作中包含额外的事务管理代码;

    声明式事务管理是指:大多数情况下比编程式事务管理更好用。它将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。事务管理作为一种横切关注点,Spring通过Spring AOP框架支持声明式事务管理。步骤:1.配置  声明事务管理组件 开启事务注解扫描   2.在类或者方法上添加注解@Transactional,若类和方法都有,则以方法为准。

    17.对SSH开发框架的理解?

    18.三大框架中高内聚低耦合是由哪个框架实现的,怎么实现的?举例?--权限拦截、性能监控、事务管理。

    19.什么是mybatis?

    mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。

    20.mybatis的体系结构?

    21.mybatis常用api?

    主配置文件--映射文件--SqlSessionFactoryBuilder---SqlSessionFactory--SqlSession--sqlSession.selectList("com.tarena.dao.EmpMapper.findAll"); sqlSession.selectOne("com.tarena.dao.EmpMapper.findById", id); SqlSession.insert("com.tarena.dao.EmpMapper.save", e);SqlSession.update("com.tarena.dao.EmpMapper.update", e);SqlSession.commit();SqlSession.rollback();

    22.Hibernate和Mybatis的区别?

    Hibernate是完整的对象/关系映射解决方案,Mybatis是半自动化的ORM框架。

    Hibernate对对象的维护和缓存要比MyBatis好。

    它提供了对象状态管理功能,采用了更自然的面向对象的视角来持久化 Java 应用中的数据。而MyBatis在这一块没有文档说明,用户需要对对象自己进行详细的管理。

    23.为什么要用struts2?

    24.struts的发展历史?---只要问到了struts,就要联想到MVC模式。

    25.struts2和struts1的区别?

    26.什么是MVC模式?

    MVC的全称是Model、View、Controller,是模型、视图、控制器的缩写。MVC模式的好处是将业务逻辑、数据、界面进行分离,降低了层与层之间的依赖,使程序更加灵活,便于日后系统的维护与升级。最经典的

    MVC模式是jsp+servlet+javabean。当用户发送一个请求时,servlet接收到这个请求后调用javabean来完成业务,调用dao层执行数据库操作,完成业务后控制器跳转到某个jsp,最后jsp将

    数据显示给用户。

    27.什么是MVC框架?MVC模式存在哪些不足?

    MVC模式:

    所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大,web.xml就太庞大,并且不能实现模块化管理。

    接受参数比较麻烦,只能通过request一个个的接收,接收后再封装为model,不能通过model进行接收。

    降低了系统的性能。如果不采用分层结构,很多业务可以直接访问数据库,以此获得相应的数据,而现在却必须通过中间层来访问。

    有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码
    感受最深的是很多时候容易把简单的事情搞复杂了,其实很多项目如果只是简单的功能,完全可以不用mvc模式。

    28.struts2如何实现MVC?

    29.spring MVC如何实现MVC?两者的区别?

    30.struts如何向页面传参?

    31.什么是OGNL?OGNL工具的构成?

    OGNL引擎、Root存储区、Context存储区--负责存储map类型的数据,前者表达式格式为"属性",后者格式为#key。

    32.OGNL表达式有几种?

    33.strut

    28.Hibernate查找对象如何应用缓存?

    一级缓存---二级缓存--如果二级缓存中也没有,就从数据库中去查找,查找出来后通过session.flush()更新缓存。

    29.

  • 相关阅读:
    Django使用manage.py test错误解决
    Notepad++的find result窗口恢复
    qrcode 配套 PIL 或者 Image + ImageDraw
    pymssql.OperationalError: (20017 问题解决
    ConfigParser使用:1.获取所有section为list,2.指定section具体值,并转换为dict
    selenium&Firefox不兼容问题:Message: Unable to find a matching set of capabilitie;Can't load the profile. Profile;Message: 'geckodriver' executable needs to be in PATH
    使用宏实现透视表部分功能,将AB列数据合并统计.
    反射
    类的多态
    封装
  • 原文地址:https://www.cnblogs.com/lchzls/p/6875214.html
Copyright © 2011-2022 走看看