面试题整理(持续修改)
1.private修饰的方法可以通过反射访问,那么private的意义是什么
反射通过setAccessible(true),这行代码取消了java的权限控制检查;private并不是解决安全问题的,如果想让解决代码的安全问题,请用别的办法。
private的意义是OOP(面向对象编程)的封装概念。
2.在java中代码的初始化顺序
普通类:
静态变量 静态代码块 普通变量 普通代码块 构造函数
继承的子类:
父类静态变量 父类静态代码块 子类静态变量 子类静态代码块 父类普通变量 父类普通代码块 父类构造函数 子类普通变量 子类普通代码块 子类构造函数
抽象的实现子类: 接口 - 抽线类 - 实现类
接口静态变量 抽象类静态变量 抽象类静态代码块 实现类静态变量 实习类静态代码块 抽象类普通变量 抽象类普通代码块 抽象类构造函数 实现类普通变量 实现类普通代码块 实现类构造函数
接口注意:
- 声明的变量都是静态变量并且是final的,所以子类无法修改,并且是固定值不会因为实例而变化
- 接口中能有静态方法,不能有普通方法,普通方法需要用defalut添加默认实现
- 接口中的变量必须实例化
- 接口中没有静态代码块、普通变量、普通代码块、构造函数
3.一个java文件有3个类,编译后有几个class文件
不管这个文件的类构成是什么样的,哪怕包含接口,几个类就生成几个class文件。
4.ReadWriteLock读写之间互斥吗?