面向对象的特性
https://blog.csdn.net/qq_43037478/article/details/114319125
Java中访问修饰符访问范围
String跟StringBuffer跟StringBulider区别?
String是不可变的,每次修改都会分配一块内存空间
StringBuffer是线程安全的,长度可变
StringBuilder是非线程安全的,长度可变
JDK和CGLib的区别
- JDK动态代理只能对实现了接口的类生成代理,而不能针对类
- CGLib是针对类实现代理,主要是对指定的类生成一个子类(使用字节码技术生成代理类),覆盖其中的方法(继承)
Spring在选择用JDK还是CGLib的依据
- 当Bean实现接口时,Spring就会用JDK的动态代理
- 当Bean没有实现接口时,Spring使用CGLib来实现
抽象类跟接口的区别?
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
普通类和抽象类有哪些区别?
普通类:不能有抽象方法,可以直接实例化
抽象类:可以有抽象方法,不能直接实例化
枚举类跟常量类的区别?
1、枚举常量更简单,枚举只需要定义每个枚举项,不需要定义枚举值,而接口常量(或类常量)则必须定义值(还需要修饰符public static final),否则编译通不过
2、枚举具有内置方法,因为每个枚举都是java.lang.Enum的子类,该类提供了如排序值ordinal,compareTo比较方法,简化了常量访问。
如:for(枚举类 s: 枚举类.values()){
system.out.print(s);
}
3、枚举常量稳定:不用校验已经限定了XX枚举,如果想要输入一个int类型是不通过的,这也是我们最看重枚举的地方:在编译期限定类型
4、枚举常量的缺点:不可继承,无法扩展,但是一般常量在构件时就定义完毕了,不需要扩展。
JAVA三大内置注解
@Override 注解:方法重写
@Suppresswarnings 注解:可以达到抑制编译器编译时产生警告的目的
@Deprecated 注解:被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的
HashCode相同,对象一定相同吗?
回答:HashCode相同,对象不一定相同,因为通过对象计算HashCode的时候可能发生Hash碰撞,导致不同对象为相同的Hash值,而对象相同的话,HashCode一定相同。
Java类的加载过程?(比较重要,面试问的多的,同时也是考察你对内存分配的了解)
1、类加载
查找并加载类的二进制数据
2、链接
字节码校验器校验生成的字节码是否正确
分配内存并初始化默认的静态变量
内存引用被方法区的原始引用取代
3、初始化
类加载的最后阶段,为所有静态变量赋予初始值,并执行静态块代码
Set,List,Map的区别?
详细区别传送门:https://blog.csdn.net/qq_43037478/article/details/112439992
get 和 post 请求有哪些区别?
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
深拷贝和浅拷贝区别是什么?
浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。
深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。
== 和 equals 的区别是什么?
一、对象类型不同
1、equals():是超类Object中的方法。
2、==:是操作符。
二、比较的对象不同
1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。
2、==:用于比较引用和比较基本数据类型时具有不同的功能。
调用第三方接口有几种方式?
远程rpc,pom文件依赖,直接jar包导入