java面试题

### 单例模式 ```java public class demo1 { /* 饿汉式 : 优点 先天性线程安全 当类初始化的时候 该对象就会被创建 缺点 如果项目中使用过多的饿汉式就会发生问题,项目启动会很慢,存放在方法区中占用内存较大 */ private static demo1 singleTon = new demo1(); private demo1(){ } public static demo1 getInstance(){ return singleTon; } } public class demo2 { private static demo2 singleTon; //懒汉式的单例模式 private demo2(){ } public static demo2 getInstance(){ if(singleTon==null){ singleTon = new demo2(); } return singleTon; } } ``` ### Spring Bean 的生命周期 ``` 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 作用域 singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。 prototype : 每次请求都会创建一个新的 bean 实例。 request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。 session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。 global-session: 全局 session 作用域,仅仅在基于 Portlet 的 web 应用中才有意义,Spring5 已经没有了。 ``` ### 双亲委派 向上委派向下查找 ![image.png](1)