• SSM常见面试题


    一:有哪些不同类型的IOC (依赖注入)方式?解释说明下

    答:1.Setter方法注入

    属性需要封装Setter方法

    2.构造方法注入

    public UserServiceImpl(UserDao dao) {
    this.dao=dao;
    }
    <bean id="service" class="service.impl.UserServiceImpl">
    <constructor-arg><ref bean="dao"/></constructor-arg>
    </bean>
    3.p命名空间注入

    p命名空间注入也是基于Setter方法的一种注入方式,他需要在xml文件里引用命名空间

    xmlns:p="http://www.springframework.org/schema/p"

    在bean节点的属性里使用p:属性名="值"  或者 p:属性名-ref="Bean的id"的方式进行注入的

    4.注解注入

     @Resource或者@Autowire

    @Autowired是spring自己定义的注解,@Resource是J2EE的,由JSR-250规范定义

    1. @Autowired默认byType自动注入,如果实例结果不唯一,那么将会抛出异常
    2. @Resource默认按byName自动注入
      但是@Resource有两个属性是比较重要的,分别是name和type;
      如果使用name属性,则使用byName的自动注入策略; .
      而使用type属性时则使用byType自动注入策略;

    二.最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

    xml映射文件中的namespace值就是Dao接口的全限名,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement

    Dao接口里的方法,是不能重载的,因为是全限名+方法名的,保存和寻找策略。

    Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

    三:Mybatis是如何进行分页的?分页插件的原理是什么?

    Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。

    分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。

    四:java中9大隐式对象有哪些?


      对象        类型                       用法

    1. request             javax.servlet.http.HttpServletRequest                  该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据
    2. response           javax.servlet.ServletResponse response             代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端
    3. session             HttpSession session                   对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。
    4. out                JspWriter out                             对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区
    5. pageContext           继承JspContext                               pageContext 对象的作用是取得任何范围的参数
    6. config           ServletConfig config                        对象的主要作用是取得服务器的配置信息。
    7. page            Object page                           对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针
    8. exception           Throwable                对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用
    9. application       ServletContext                     对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

    五:数据库里 面的索引和约束是什么?

    索引索引在MySQL中也叫是一种“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。
    索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。
    索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。

    数据库约束是防止非法记录的规则,约束保存在数据字典(data
    dictionary)中,约束可以被定义在列级或者表级。

    数据库常用的五大约束

      1、主键约束(Primay Key Coustraint) 唯一性,非空性
      2、唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
      3、检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等)
      4、默认约束 (Default Counstraint)该数据的默认值
      5、外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的列

  • 相关阅读:
    深入探究JVM之垃圾回收器
    深入探究JVM之对象创建及分配策略
    深入探究JVM之内存结构及字符串常量池
    【深度思考】如何优雅告知用户,网站正在升级维护?
    Redis系列(九):Redis的事务机制
    [C#.NET 拾遗补漏]07:迭代器和列举器
    [C#.NET 拾遗补漏]06:单例模式最佳实践
    深入理解 EF Core:使用查询过滤器实现数据软删除
    简化RESTful开发,Spring Data REST让你少掉发
    如何查看Docker容器环境变量,如何向容器传递环境变量
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/11752394.html
Copyright © 2020-2023  润新知