1.Java中内存泄漏产生的原因可能有哪些?
- 静态集合类引起内存泄漏;
- 当集合里面的对象属性被修改后,再调用remove()方法时不起作用;
- 监听器
- 各种连接
- 内部类和外部模块的引用
- 单例模式
2.面向对象的基本特征是什么/什么是面向对象/你是如何理解面向对象的
- 封装 有选择的隐藏和暴露一些数据和方法
- 继承 子类可以直接实现父类中的方法,有选择的扩展
- 多态 调用同一个方法展示出来不同的方式。
- 抽象 把共同的特性抽取到一个类中
3.讲一下你对OOP的理解
面向对象具有四大特性,分别是
抽象 - 将一些事物的共性抽离出来归为一个类。 - 如对于动物,具有生命体征、活动能力等区别于其它事物的共同特征
封装 - 有选择地隐藏和暴露数据和方法 - 比如有U盘这个类,我希望隐藏内部组成和实现,只暴露USB接口以供使用
继承 - 子类可以直接使用父类的部分数据和方法,可以有选择的扩展 - 比如鸟是动物,但鸟扩展了飞行的能力。
多态 - 同一类的对象调用相同方法可以表现出不同的行为 - 比如动物实现了say()方法,猴子、马等动物重写了say()方法来表现不同的交流语言。
4.Java中实现多态的机制是什么?
Java中,靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,
而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,
也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
5.Overload和Override的区别?
- 方法重写(overriding):
- 也叫子类的方法覆盖父类的方法,要求返回值、方法名和参数都相同。 - 子类抛出的异常不能超过父类相应方法抛出的异常。(子类异常不能超出父类异常) - 子类方法的的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
- 方法重载(overloading):
- 重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,
方法体也不相同,最常见的重载的例子就是类的构造函数