- Springboot的理解
 - Spring的理解
 - Springboot的注解有哪些
 - @restcontroller和@controller的区别
 - @restcontroller 和@service和@component都是用来干什么的
 - Restful 接口规范的理解
 - 事务的理解-特性
 - 事务的隔离级别
 - 事务的传播特性
 - 声明式事务注解的配置项
 - Mybatis的理解
 - Mybatis的标签
 - Post和get的区别 (基于tcp对比)
 - Mybatis的工作原理
 - 事务的回滚机制
 - Hashmap的了解
 - Ioc和aop的理解
 - Redis的特点
 - Redis支持的数据类型
 - Sql索引失效的情况
 - Sql语句优化
 - Springmvc的工作原理
 - Spring bean的注解有哪些
 - #{}和${}的区别
 - #{}是如何防止sql注入的
 - ES是怎么存储数据的
 - 怎么保证接口安全
 - Static修饰的方法怎么获取容器对象
 - ArrayList和hashmap的理解
 - 创建线程池时的配置项
 - 分布式事务
 - 高并发解决方案
 - 针对秒杀活动设计一个方案
 - Springboot是怎么自动装配bean的(控制反转,依赖注入)
 - Springboot starter核心包的作用
 - AOP是基于什么实现的(动态代理)
 - 线程锁
 - Mysql的索引类型
 - 索引覆盖是什么意思
 - Mysql慢查询优化
 - 怎么查看索引使用情况,扫描行数
 - 异常是怎么处理的(基于AOP)
 - JAVA8的lamda表达式用的多吗
 - MQ怎么保证数据不丢失
 - MQ消息高并发怎么做幂等
 - Oracle和Mysql有什么区别
 - Spring Cloud用到的组件都什么
 - 高并发问题
 - JDBC SQL的生命周期
 - 线程池的种类
 - 创建线程池的方式
 - 字符流和字节流的区别
 - springboot获取配置类的方式 (@value 和Environment)
 - @resource和@autowride的区别
 - 高并发代码中的解决方式
 - openfeign和feign的区别
 - ES的了解
 - gateway和拦截器的区别
 - oracle的视图
 - 数据库对千万级数据查询分页的优化
 - 事务失效的场景
 - 事务中是否可以try——catch
 - 缓存同步策略
 - JAVA的反射机制
 - 集合使用过哪些
 - springboot启动过程
 - jvm调优
 - openfeign和httpclent的区别
 
Springboot的理解
简化spring应用的创建和开发过程,是微服务的底层核心框架,整合第三方内容的集成,便捷开发
Spring的理解
- Spring是一个轻量级的 IOC / DI 和 AOP 容器的开源框架,其根本目的是为了简化Java开发。
 - IOC :控制反转,也叫依赖注入(DI),就是通过工厂模式(BeanFactory接口)自动选择类构造器、静态工厂方法或实例工厂方法为我们创建所需要的对象。使Java开发符合高内聚、低耦合的特性。
 - AOP :面向切面编程,将程序中独立于其他功能的方法抽取出来,使Java开发模块化,仅需专注于主业务即可。
Springboot的注解有哪些
@restcontroller和@controller的区别
是组合注解,@Controller和@ResponseBody
@Controller是Spring MVC用来标注业务控制层的注解
@ResponseBody表明Spring MVC的返回值不再是一个视图,而是返回一个Json字符串,并把返回值放在ResponseBody中@restcontroller 和@service和@component都是用来干什么的
@restcontroller表明返回值是JSON字符串,标注控制层注解
@service是用来标注业务层注解
@component 非业务层持久层控制层的组件都用这个来标注
@Repostiory 标注持久层注解Restful 接口规范的理解
学名:表现层状态转移,表明clent和server之间连接的方式说明,是一种风格和思想,规范化请求动作和返回结果
URL定位资源,HTTP请求动词描述动作
规范请求参数格式,字符串使用JSON格式,图片使用JPG格式等
使用HTTP状态码标注请求状态事务的理解-特性
ACID:原子性,一致性,隔离性,持久性 
原子性:事务要么全部成功,要么全部失败
一致性:事务提交前数据是一致的,提交后数据也应该是一致的
隔离性:多个事务之间不能相互影响
持久性:事务提交之后,不论数据库发生什么,数据的修改都是永久的
事务的隔离级别
spring有五种
1、使用DB:使用数据库设置的级别
2、读未提交:读取未提交的数据,会导致脏读,幻读,不可重复读
3、读已提交:只能读取别人提交后的数据,可避免脏读,会导致幻读,不可重复读
4、可重复读:禁止读取别人未提交的数据,保证多次查询结果一致,会造成幻读
5、序列化:最严格的格式,事务串行执行。可避免以上所有问题
事务的传播特性
两种情况:
一、以当前事务为准,有则进入,无则分三种情况
1、自己创建事务
2、非事务执行
3、抛异常
二、不以当前事务为准
1、有则挂起,自己新建事务
2、有则挂起,非事务执行
3、有则挂起,抛异常
4、有则新建事务嵌套执行,无的话参照1.1新建一个事务
声明式事务注解的配置项
1、配置事务管理器
2、事务的传播机制
3、事务的隔离级别
4、事务的超时时间
5、是否为只读事务
6、指定触发事务的异常
7、指定抛出的异常不触发事务回滚
Mybatis的理解
持久层框架,面向sql编程,内部封装了JDBC,解耦合,支持动态SQL
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java对象映射成数据库中的记录。
Mybatis通过xml或注解的方式将要执行的statement配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
Mybatis的标签
Post和get的区别 (基于tcp对比)
Mybatis的工作原理
1、加载mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着
