1、wait方法底层原理
object中的方法,可以暂停线程,期间会释放对象锁,不像sleep方法,线程休眠期依然持有锁,wait方法的线程,必须调用notify或notifyAll方法唤醒线程
2、Java有哪些特性,举个多态的例子。
特性:封装,继承,多态
例子:1.父类的引用指向子类对象,当调用父类中方法时,实际上调用的是子类的方法
2.同一个类中有多个重名的方法,方法的参数类型或个数不同,调用相同的方法名,传递的参数不同,会调用不同的方法实现
3、String为啥不可变?
底层的数组是用final修饰的
4、类和对象的区别
类是对象的抽象,对象是类的实例
5、请列举你所知道的Object类的方法。
toString,hashCode,wait,notify,notifyAll,equals,getClass
6、重载和重写的区别?相同参数不同返回值能重载吗?
重载:同一个类中的方法名相同而参数不同
重写:子类覆盖父类的方法
不能
7、”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
static:静态,被static修饰的变量,在内存中只有一份,被所有对象共享,被static修饰的方法叫静态方法,从属于类,静态方法中不能访问非静态变量和方法。
不能覆盖private修饰的方法
覆盖static调用的仍然是父类的静态方法
8、String能继承吗?
不能,被final修饰的类不能被继承
9、StringBuffer和StringBuilder有什么区别,底层实现上呢?
StringBuffer与StringBuilder都继承自AbstractStringBuilder,底层实现上差不多
但StringBuffer有synchronized关键字修饰,是线程安全的
StringBuilder是非线程安全的
10、类加载机制,双亲委派模型,好处是什么?
BootStrap–>Extension–>Application
双亲委派模型:不管那个类加载器加载这个类,都委派给顶层的启动加载去去加载,保证了加载的类是同一个,保证内库更安全,缺点效率低
11、静态变量存在哪?
方法区
12、讲讲什么是泛型?
泛型多用于容器中,往容器中方数据,事先约定什么类型数据,放的时候会检查,不是正确的类型放入时会报错,这样可以建立安全的数据,也避免了强制类型转换
13、解释extends 和super 泛型限定符-上界不存下界不取
14、是否可以在static环境中访问非static变量?
不能直接访问,java类加载主要分为加载,验证,准备,解析,初始化,静态变量是在准备阶段进行初始化,非静态变量是在初始化阶段才初始化。可以通过创建对象,通过对象来访问非static变量
15、谈谈如何通过反射创建对象?
16、Java支持多继承么?
Java中的类单继承,一个类只能继承一个类,但可以实现多个接口
Java中的接口可以多继承,一个接口可以继承多个接口
17、接口和抽象类的区别是什么?
相同点:都不能被实例化
接口:无构造方法,方法都是抽象的,变量都是final修饰,可以继承多个接口
抽象类:有构造方法,可以包含普通方法,可以继承一个抽象类和实现多个接口
18、Comparable和Comparator接口是干什么的?列出它们的区别。
19、面向对象的特征有哪些方面
封装,继承,多态
20、final, finally, finalize的区别。
21、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
22、abstract class和interface有什么区别?
23、Static Nested Class 和 Inner Class的不同
24、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
25、Java的接口和C++的虚类的相同和不同处。
26、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
27、内部类可以引用他包含类的成员吗?有没有什么限制?
28、两个对象值相同(x.equals(y) == true),但却可有不同的hash code说法是否正确?
29、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
30、如何通过反射获取和设置对象私有字段的值?
31、谈一下面向对象的"六原则一法则"。
单一职责原则,里氏替换原则,依赖倒置原则,开闭原则,接口隔离原则,合成聚合复用原则和迪米特法则
32、请问Query接口的list方法和iterate方法有什么区别?
33、Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
34、Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
35、hashCode()和equals()方法有什么联系?