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.

  • 相关阅读:
    java Activiti 工作流引擎 SSM 框架模块设计方案
    自定义表单 Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    数据库设计的十个最佳实践
    activiti 汉化 stencilset.json 文件内容
    JAVA oa 办公系统模块 设计方案
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    集成 nacos注册中心配置使用
    “感恩节 ”怼记
    仓颉编程语言的一点期望
    关于System.out.println()与System.out.print("\n")的区别
  • 原文地址:https://www.cnblogs.com/lchzls/p/6875214.html
Copyright © 2011-2022 走看看