java面经问题及其回答
String类问题
-
为什么String定义为final?
总体来说是从保障安全及提高效率两方面出发。参考文章www.zhihu.com/question/31…
枚举类
-
为什么使用枚举实现单例的方式最好?
枚举类里的值是在类被加载时初始化。当一个Java类第一次被真正使用到的时候静态资源被初始化、Java类的加载和初始化过程都是线程安全的。所以,创建一个enum类型是线程安全的。更多内容可以参考www.hollischuang.com/archives/19…
异常
-
Error和Exception的区别
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError。对于这类错误,Java编译器不去检查他们。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ) 更多内容可以参考 blog.csdn.net/goodlixueyo…
线程
-
创建线程的方式
1.继承Thread类创建线程
2实现Runnable接口创建线程
3使用Callable和Future创建线程
4使用线程池例如用Executor框架
-
线程生命周期
新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态