Java面试题几个问题

1、Java创建对象的几种方式?

1:采用new对象的方式创建
2:通过反射
3:采用clone
4:通过序列化机制
四种方法中前两种都需要显式的调用构造方法。
耦合性最高的是第一,但是在各种框架中只要设计到解耦要先减少new的使用。

2、switch能否使用String做参数?

在jdk1.7之前switch只能支持byte、short、char、int或者其它对应的封装类以及Enum类型。从jdk1.7之后开始支持String。

3、switch能否用在byte或long上?

switch能用在byte上,但是不能用在long上。

4、你对String对象的intern()熟悉吗?

intern()方法会首先从常量池中查找是否存在该常量值,如果常量池中不存在则在当前常量池中创建,如果已经存在则返回。

5、Object中有哪些公共方法?

1:equals()
2:clone()
3:getClass()
4:notify()
5:notifyAll()
6:wait()
7:toString()

6、Java中的四种引用?

强引用、软引用、弱引用、虚引用
1、强引用:如果一个对象具有强引用,则不会被垃圾回收期回收,即使当前内存不足,jvm也不会回收该对象,而是抛出OutOfMemoryError错误,使程序异常终止。如果想终端强引用喝某个对象之间的联系,可以显式的将引用赋值为null,这样jvm会在合适的时间回收该对象。
2:软引用:在使用软引用时,如果内存空间足够则软引用会继续使用,如果内存不足时软引用会被垃圾收集器回收。
3:弱引用:弱引用的声明周期更加短暂,因为当jvm进行垃圾收集时,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过垃圾回收器是一个优先级较低的线程,所以并不能迅速发现弱引用对象。
4:虚引用:如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器收集。

7、为什么要有不同的引用类型?

Java不像C语言可以控制内存的申请以及释放,
Java的内存是交给jvm来管理的,因此我们能做到就是控制对象被回收的实际,
因此就诞生了不同的引用类型,不同的引用类型是对GC回收机制不可控的妥协。

8、final有哪些用法?

	final修饰的变量不可变
	final修饰的常量会放入常量池
	被final修饰的类不可以被继承
	被final修饰的方法不可以被重写
	被final修饰的方法,jvm会尝试将其内联,以提高运行效率

9、String、StringBuffer和StringBuilder的区别?

String是字符串常量,StringBuffer、StringBuilder是字符串变量。
String是不可变对象,每次对String类型进行操作等同于产生一个新的String对象,然后只想新的String对象,
		所以进行不在对String进行大量的拼接操作,否则会产生很多的临时对昂,导致GC开始工作,影响系统性能。
StringBuffer是对对象本身操作,而不是产生新的对象,因此在有大量拼接的情况下使用StringBuffer。
StringBuffer是线程安全的可变字符串,多线程情况下使用,其内部实现都是可变数组,StringBuilder是非线程安全的,
		因此在没有多线程的情况下使用StringBuilder可以获得更好的性能。

10、为什么wait()和notify()/notifyAll()方法在同步代码块种被调用?

这是jdk强制的,wait()和notify()/notifyAll()方法在调用前都必须先获得对象的锁。

11、wait()和notify()/notifyAll()方法在放弃对象监视器时有什么区别?

wait()方法会立即释放对象监视器,notify()/notifyAll()方法则会等待线程剩余代码执行完毕才会放弃对象监视器。

12、wait()和sleep()的区别?

sleep()来自Thread类,wait()来自Object类,调用sleep方法过程中,线程不会释放对象锁,调用wait()方法线程会释放对象锁。
sleep()睡眠后不让出系统资源,wait让其它线程可以占用CPU。

13、为什么wait、notify、notifyAll这些犯法不放在Thread类中?

一个很明显的原因是Java提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程来获得,
如果线程需要等待某些锁,那么调用对象中的wait方法就有意义了。如果wait方法定义在Thread类中,
线程正在等待的是哪个锁就不明显了。简单的说,由于wait、notify、notifyAll都是锁级别的操作,
所以把他们定义在Object类中因为锁属于对象。
发布了55 篇原创文章 · 获赞 6 · 访问量 3989

猜你喜欢

转载自blog.csdn.net/qq_40126996/article/details/103865756