- 为什么使用内部类:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否继承或者实现了接口都没有影响;内部类可以用多个实例,且每个实例都有自己的状态信息,与其他外围对象的信息相互独立;在单个外围类当中,可以让多个内部类以不同的方式继承同一个类或者实现一个接口;创建内部类的时刻并不依赖于外围类对象的创建;内部类并没有令人迷惑的”is-a“关系,他就是一个独立的实体;内部类提供了更好的封装,除了外围类其它类都不能访问
-
i++ 与 ++i
public class TestIncr { public static void main(String args[]) { int i = 0; i = i++ + i;//当前操作在两个地方完成 局部变量表 操作数栈 //自增自减操作都是在局部变量表中完成的 // "+" 操作是在操作数栈完成的,当”+“操作时才会把局部变量表中的 i=1 //拿出来计算 System.out.println("I =" +i);// i = 1 } }
-
序列化与反序列化:序列化就是指把Java对象转换为字节序列的过程,反序列化,反之亦然;序列化的作用:就是在传递和保存对象时保证对象的完整性和可传递性。有序的字节流便于在网络上传输或者是保存在本地文件中;反序列化的作用:保证对象的重建
-
String,StringBuilder和StringBuffer的区别:
运行速度:StringBuilder>StringBuffer>String String最慢是因为它是字符串常量,StringBuffer和StringBuilder是字符串变量 同时,StringBuffer是线程安全的,它的代码块由synchronized修饰的,考虑到代码运行速度,单线程的时候尽量使用StringBuilder
-
Spring和SpringBoot:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架;
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它;
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持
从本质上来说SpringBoot并不是一门新的技术,只能说是Spring的拓展,相较于Spring它多了一个自动配置功能,减少了xml形式的繁琐配置,降低了代码开发的难度。整合了一些中间件,例如redis、Kafka等 -
Spring中Bean的作用域与生命周期:
作用域:Singleton,在SpringIoc容器中仅存在一个Bean实例,Bean以单例方式存在
Prototype,每次从容器中调用Bean时,都会返回一个新的实例
Session,同一个Http Session共享一个Bean,不同的session使用不同的bean,仅 适用于WebApplicationContext环境
Request,每次HTTP请求都会创建一个新的bean,该作用域仅适用于 WebApplicationContext环境
GlobalSession,一般用于Portlet应用环境,该作用域仅适用于 WebApplicationContext环境
生命周期:(图片地址:Spring中bean的作用域与生命周期_缘自天方的博客-CSDN博客_bean的作用域)
2022面经~篇一
最新推荐文章于 2022-09-21 14:50:21 发布