Servlet
-
servlet的本质是什么,如何工作的?
servlet是一套通用接口规范,用于定义处理网络请求的规范。
真正处理请求的是servlet容器,比如tomcat、jetty等等,监听端口,识别请求url,映射到不同的servlet处理器。 -
servlet的生命周期
- init 只可以调用一次
- service 同一个servlet实例的情况下,多线程调用
- destroy 只可以调用一次
-
servlet的并发问题
servlet在tomcat是单实例多线程的
- init方法是线程安全的
- service方法,单个实例被多个线程执行,只要不是用到了类变量,那么也不会有线程安全问题。
-
转发与重定向的区别
转发是在服务端实现,转发之后地址是不变的,而且是一次请求,信息可以共用重定向是在客户端实现,重定向之后地址会变化,已经是两次请求,上一次请求的信息不能再用了
Mybatis
MyBatis的原理
mybatis初始化
mybatis获取数据源和连接池
mybatis的事务管理-
MyBatis的优点
我们总结一下上面对JDBC的优化和封装:(1) 使用数据库连接池对连接进行管理
(2) SQL语句统一存放到配置文件
(3) SQL语句变量和传入参数的映射以及动态SQL
(4) 动态SQL语句的处理
(5) 对数据库操作结果的映射和结果缓存
(6) SQL语句的重复
-
MyBatis如何做事务管理;
Spring
注解
如何自定义注解实现功能
-
Spring中@Autowired和@Resource注解的区别?
- autowired是spring下的注解,默认是根据beanType来匹配bean的
- resource是java下的注解,默认是根据beanName来匹配bean
Bean
-
Spring中Bean的作用域,默认的是哪一个
- singleton,默认,单例
- prototype,原型,每次新增
- request,
- session
- global session
-
session和cookies的生命周期
-
分布式session解决方案
-
Spring Bean 的生命周期
-
Spring声明一个 bean 如何对其进行个性化定制;
-
spring bean什么时候实例化
BeanFactory,在第一次getBean的时候实例化
ApplicationContext- 如果是singleton,并且lazy-init=false(不设置也为false),在容器初始化时,就实例化bean
- 如果是singleTon,并且lazy-init=true,在第一次getBean的时候实例化
- 如果是protoType,在第一次getBean的时候实例化
-
spring bean 实例化的方式
一般是从容器中getBean
IOC
-
Spring IOC 如何实现
-
好莱坞原则、依赖倒置、控制反转、依赖注入
-
依赖注入的方式
- setter
- 构造函数
- 注解:注解其实是依靠构造函数实现
BeanFactory 和 ApplicationContext 有什么区别
beanFactory是spring工厂的接口,最底层接口。
ApplicationContext也是接口,继承beanFactory,并拓展了一些属性,比如国际化,资源加载、事件处理器等等。
bean的实例化方式不同spring ioc容器初始化
Spring IOC容器的初始化过程
AOP
-
反射
Java反射机制详解- 反射可以获取到内部类的属性吗?
事务
Spring 事务实现方式、事务的传播机制、默认的事务类别
Spring 事务底层原理
Spring的@Transactional如何实现的?Spring事务失效(事务嵌套),JDK动态代理给Spring事务埋下的坑,可参考《JDK动态代理给Spring事务埋下的坑!》
Spring的事务传播级别
Spring 七种事务传播机制和四种事务隔离级别
MVC
Spring MVC 运行流程
Spring MVC 启动流程
Spring 框架中用到了哪些设计模式
Spring 其他产品(Spring Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)
有没有用到Spring Boot,Spring Boot的认识、原理