一、基础知识
1、java安全性
①相较于C++,用引用替换指针
②添加GC垃圾回收机制,空间的释放由JVM处理
③添加异常处理机制,对于可能存在的问题设置处理方式
④添加强制类型转换,包含封包和拆包,父类子类的转换
2、& 与 && 的区别
a & b 不管是true还是false,a和b都会去处理
a && b a若为false,则b不会去处理 。若a为true才会全去处理
类似 | 和 ||
3、重载和重写的区别
区别 | 修饰符 | 返回值 | 方法名 | 参数 | 异常 |
重载 | 无关 | 无关 | 相同 | 不同 | 无关 |
重写 | 大于等于 | 小于等于 | 相同 | 相同 | 小于等于 |
4、final,finally,finalize的区别
final被修饰的类不可继承,被修饰的方法不可被重写,被修饰的变量不可被修改
finally用于异常结果中,一般为try-catch-finally,无论是否发生异常,finally必定会被执行
finalize为垃圾回收方法,用户可调用提醒JVM来GC回收,但什么时候开始由JVM决定
5、子类初始化的执行顺序:
父类static-子类static-父类构造-子类构造
6、OOM,Memory Leak
OOM,out of memory,内存溢出。当①内存空间已满,未及时清理,然后继续向其中写入数据②写入大于分配空间的数据等情况时,造成内存溢出的情况,系统运行出错
Memry Leak,内存泄漏。虽然JVM有内存回收机制,但对于一直弱引用如ThreadLocal,key是弱引用,value是对象。key无用被回收后,value没有,后续也就不知道value的位置了,没法进行回收
7、抽象类和接口的区别
抽象类 is a——类似一个包含功能大致信息的基础类,新类可以继承抽象类来进行功能扩展。抽象类可实现接口,抽象类可继承实体类
接口 has a——类似一个包含扩展信息的基础接口,新类可以实现接口来进行功能扩展。接口可实现接口。只可用public,static修饰
8、反射
系统通过反射来在运行中加载,探知和使用编译期间完全未知的类,获取类对应的方法,属性,从而动态创建类的实例,增加程序的灵活性。如:AOC(DI)容器加载就是通过反射
9、日期格式转换
SimpleDateFormat(yyyy-mm-dd hh:mm:ss”) sdf.parse()
10、加密算法
对称:DES、3DES、AES、RC2、RC4
非对称:RSA、DSA、ECC
单向散列:MD5、SHA