面试题(背诵)

1.Mysql 与 Oracle的区别

  • mysql默认端口:3306,默认用户:root
  • oracle默认端口:1521,默认用户:system
  • mysql的安装卸载很简单,oracle很麻烦
  • mysql默认是自动提交,可以修改为手动提交
  • oracle默认不自动提交,需要手动提交,需要在写commit指令或点击commit按钮。
  • mysql是repeatable read的隔离级别,而oracle是read commited的隔离级别;

2.mybatis缓存机制

一级缓存: 默认开启

一级缓存是SqlSession级别的缓存(默认是支持一级缓存,不需要再配置文件中配置一级缓存),当在同一个SqlSession中执行两次相同的sql语句时,第一次执行完毕会将数据写到内存中,第二次查询不执行sql直接从内存中获取。

二级缓存:二级缓存是mapper级别的缓存,使用二级缓存时,多个SqlSession使用同一个Mapper的sql语句去操作数据库,则第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次查询时会从缓存中获取数据,不再去底层数据库查询,从而提高查询效率。

Mybatis默认没有开启二级缓存,需要在setting全局参数中配置开启二级缓存。

3.Mybatis的执行流程

1、加载配置文件。需要加载的配置文件包括全局配置文件(mybatis-Config.xml)和SQL(Mapper.xml)映射文件,其中全局配置文件配置了Mybatis的运行环境信息(数据源、事务等),SQL映射文件中配置了与SQL执行相关的信息。

2、创建会话工厂。MyBatis通过读取配置文件的信息来构造出会话工厂(SqlSessionFactory)。

3、创建会话。拥有了会话工厂,MyBatis就可以通过它来创建会话对象(SqlSession)。会话对象是一个接口,该接口中包含了对数据库操作的增删改查方法。

 4、创建执行器。因为会话对象本身不能直接操作数据库,所以它使用了一个叫做数据库执行器(Executor)的接口来帮它执行操作。

5、封装SQL对象。在这一步,执行器将待处理的SQL信息封装到一个对象中(MappedStatement),该对象包括SQL语句、输入参数映射信息(Java简单类型、HashMap或POJO)和输出结果映射信息(Java简单类型、HashMap或POJO)。

6、操作数据库。拥有了执行器和SQL信息封装对象就使用它们访问数据库了,最后再返回操作结果,结束流程。

4.resultType和resultMap的区别

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在。

5.什么是跨域?

由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题

同源策略即:同一协议,同一域名,同一端口号。当其中一个不满足时,我们的请求即会发生跨域问题。

6.怎么解决跨域?

JSONP和CORS

7.事务的隔离级别,什么是事务,事务的特点

read-uncommitted,(读未提交)

read-committed(读已提交)(oracle的默认隔离级别

repeatable-read(重复读)(mysql的默认隔离级别

set tx_isolation='serializable';串行化

什么是事务: 事务是保证数据的完整性要不一起成功要不一起失败,事务也就是会话中的一系列ddl和dml语句的操作(连接上数据库的用户就是一个会话

事务的特点:原子性,一致性,持久行,隔离性

8.spring mvc执行流程

(1)用户发送请求至前端控制器DispatcherServlet。

(2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。

(3)、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

(4)、DispatcherServlet调用HandlerAdapter处理器适配器。

(5)、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

(6)、Controller执行完成返回ModelAndView。

(7)andlerAdapter将controller执行结果ModelAndView返回给 DispatcherServlet。

9.RestController和Controller的区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

10,varchar和char的区别

区别一:定长和变长

varchar是有大就占用多大的内存,char是直接占用规定大小的内存

区别二:存储容量不同

char是255,varchar是65532

11.Mysql三种常见引擎的区别

Mysql常见的三中存储引擎为InnoDB、MyISAM、MEMORY。

区别:

特性InnoDBMyISAMMEMORY
事物安全支持不支持不支持
对外建的支持支持不支持不支持
存储限制64TB
空间使用
内存使用
插入数据的速度

12.bean的生命周期

  1. 实例化 Instantiation
  2. 属性赋值 Populate
  3. 初始化 Initialization
  4. 销毁 Destructio

 bean的作用域:

bean的作用域目前有五种:

singleton在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范 围的默认值。
prototype每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()。
request每次HTTP请求都会创建一个新的Bean,该作用域仅适用于web的Spring WebApplicationContext环境。
session同一个HTTP Session共享一个Bean,不同Session使用不同的Bean。该作用域仅适用于web的Spring WebApplicationContext环境。
application限定一个Bean的作用域为ServletContext的生命周期。该作用域仅适用于web的Spring WebApplicationContext环境。

 13.redis的支持类型和应用场景

支持的数据类型:

        string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。

使用场景:

1.    配合关系型数据库做高速缓存 ,缓存高频次访问的数据,降低数据库io, 分布式架构,做session共享

2.    可以持久化特定数据。利用zset类型可以存储排行榜 利用list的自然时间排序存储最新n个数据

14.如何拿到配置文件里面的数据

 (未完成)

15.spring和spring mvc有什么区别

        1.Spring是一个轻量级的控制反转 (IoC)和面向切面 (AOP)的容器框架。 Spring使你能够编写更干净、更可管理、并且更易于测试的代码。 SpringMVC是基于Spring功能之上添加的Web框架

 16.spring boot 自动配置的原理是什么?

1.Spring Boot启动的时候首先加载主配置类,开启了自动配置的功能(@EnableAutoConfiguration)

@EnableAutoConfiguration 底层源码是:@Import(AutoConfigurationImportSelector.class)自动配置导入选择

List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);是获取候选的配置,也就是获取所有配置。

getCandidateConfigurations//获取候选配置,核心方法

@AutoConfigurationPackage自动配置包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值