1. 数据库冗余与备份?

    冗余:数据有多份,单不等于备份,只能防止机器故障带来的数据丢失,如:主从模式,集群等
    备份:能够防止由于机器故障和误操作带来的数据丢失,如:将数据库文件(物理文件,日志文件+数据文件+配置文件)保存到其他位置

    1. stringBuffer和stringBuilder的区别?

    线程安全:stringBuffer是线程安全的,在其类中的方法上有synchronize关键字修饰,stringBuilder没有synchronize关键字修饰;
    缓冲区:stringBuffer每次获取toString都会直接使用缓存区的toStringCache值来构造一个字符串,stringBuilder每次都需要复制一次字符串数组,在构造一个字符串;
    性能:由于stringBuffer有synchronize关键字修饰,线程安全的,所以stringBuilder性能优于stringBuffer。

    1. 多线程创建的几种方式?

    四种方式:继承Thread类、实现Runnable接口、通过ExecutorService和Callable实现有返回值的线程、基于线程池

    1. spring注入一个bean的几种方式?

    常见的注入方式:filed注入、构造器注入、setter注入
    在XML配置时代,依赖注入主要有两种方式:构造器注入和setter注入,在XML中定义bean的同时通过上述方式完成注入;
    在注解时代,推荐使用@Autowired,该注解是spring提供的注解,用来完成自动装配(依赖注入),默认按照类型注入;如果一个类型有多个bean的时候,再配合@Qualifier指定名称告诉spring具体装配那个对象。也可以使用@Resource(java提供)完成注入,默认按照名称进行注入,不过该注解在jdk11中已被移除,如需使用,需要单独引入依赖。

    1. spring aop?
    2. spring ioc?

    ioc核心:通过反射机制创建对象、操作对象。ioc容器会帮助我们创建对象并管理它,当我们需要使用的时候,直接通过ioc容器获取,不用自己去new对象,解决了对象之间的耦合问题。

    1. BeanFactory和FactoryBean的区别?

    BeanFactory是一个工厂类,定义了IOC容器的最基本形式,并提供了IOC容器应遵守的最基本的接口,其职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
    一般情况下,Spring通过反射机制实例化Bean实例,在某些情况下,实例化Bean过程比较复杂,用户可以通过FactoryBean接口定制实例化Bean逻辑,该接口方法还有三个方法,分别为:

    • T getObject():返回创建Bean,若isSingleton()返回true,则会将实例放到spring容器的单实例化缓存池中;
    • boolean isSingleton():返回由FactoryBean创建的Bean实例对象的作用域是singleton还是prototype。
    • Class getObjectTyoe():返回由FactoryBean创建的Bean类型。
    1. spring的事务传播行为、数据库的隔离级别?
    2. MySQL索引失效有哪几种?

    mysql中,索引是存储引擎实现的,不同的存储引擎索引工作的方式不一样,由于MySQL默认的存储引擎为innoDB,所以以下都是基于innoDB的例子。

    1. 查询条件中有or
    2. like查询是以’%’开头,解决以%开头的,想使用索引,需要使用覆盖索引,即只查询带索引字段的列
    3. 对查询的列上有运算或者函数的
    4. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
    5. 左连接查询或者右连接查询关联的字段编码格式不一样
    6. 如果MySQL估计使用全表扫描要比使用索引快,则不使用索引
    7. 连接查询中,按照优化器顺序的第一张表不会走索引
    8. 如果查询中没有用到联合索引的第一个字段,则不会走索引