java面试(1)
1.面向对象的基本特征
封装、继承、多态、
封装:把客观事物封装成类
继承:继承一个类,就可以使用这个类的所有功能,并且在无需编写原来类的情况下对这些功能进行扩展
多态:子对象调用父对象,父对象会根据当前调用的子对象以不同的方式运作
实现多态:覆盖,重载
2.final\finally\finalize的区别
final声明方法、属性、类,分别表示方法不可覆盖、属性不可变、类不可继承
finally是异常处理中的一部分,表示总是执行
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用此方法。可以覆盖此方法提供垃圾收集时其他资源的回收,JVM 不保证此方法总被调用
3,int和integer
int是Java八大基本类型之一,integer是int的封装类
int初始值为0,integer初始值为null
不能互用
4.重载和重写
重载Overload,表示一个类中有多个名字相同的方法,但其参数列表不同
重写:子类中的某个方法与父类完全一致,相当与完全覆盖父类中的这个方法,这样子类会比父类抛出更少的异常。
5.抽象类和接口
参数 | 抽象类 | 接口 |
默认的方法实现 | 可以有默认的方法实现 | 完全抽象的,不存在方法的实现 |
实现 | extends、如果子类不是抽象类,则需要提供抽象类中所声明的所有方法的实现 | implements需要提供接口中所有声明方法的实现 |
构造器 | 可以有 | 不能有 |
与正常java类的区别 | 不能实例化,其他没区别 | 完全不同的类型 |
访问修饰符 | public/protected/default | public、jdk9可以用private |
main方法 | 可以有main方法,并且可以运行 | 没有 |
继承 | 可以继承一个类和实现多个接口 | 只能继承一个或多个接口 |
速度 | 快 | 满,需要时间寻找实现方法 |
添加新方法 | 可以提供默认的实现 | 必须改变实现类 |
6.反射的用途和实现
运用反射可以在运行期间获取对象的类型信息
实现:
getClass()方法、class.forName()方法、使用类.class、使用类加载器实现getClassLoader()
7.Session和Cookie的区别、
- cookie存放在浏览器上,session存放在服务器
- cookie不安全,session安全
- session会在一定时间内保存在服务器中,会占用服务器,影响性能
- 单个cookie保存的数据不能超过4k,很多浏览器只能保存20个cookie
- 登陆信息放在session,其他放在cookie