Java常见面试问题(附答案),你自己回答了几个?
A: final是最终的意思。final可以用来定义变量、方法和类,但是它有不同的含义。声明为final的类不能被继承。
父类的构造函数可以被子类覆盖(重写)吗?
答:父类的构造方法不能被子类覆盖,因为父类和子类的类名不能相同。
2.请说出String和StringBuffer的区别。
答:String类定义的对象是用来存储“定长”字符串的。
StringBuffer类定义的对象是存储“可变长度”的字符串。
3.如果有A和B两个类(注意不是接口),你想同时使用这两个类的函数,你会怎么写这个C类?
答:因为A类和B类不是接口,所以不能直接继承。但是A类和B类可以定义为亲子类,然后C类可以实现A类和B类的功能..如果A是B and B的父类,C是C的父类,那么C可以实现A和B的功能..
4.谈谈你对抽象类和接口的理解。
答:定义一个抽象类的目的是提供一个可以被它的子类享受的通用形式。子类可以根据自己的需要扩展抽象类,抽象类不能实例化,抽象方法没有函数体,抽象方法必须在子类中实现。他用延伸来继承。
接口:一个接口允许一个类从几个接口继承。Java程序一次只能继承一个类,但是可以实现几个接口。接口不能有任何特定的方法,接口也可以用来定义一组类可以使用的常量。其实现方法是接口。
5.什么是Java中的竞争条件?
答:竞态条件会导致并发条件下程序出现一些bug。当多个线程竞争某些资源时,就会出现竞争情况。如果第一个要执行的程序竞争失败,后来执行,那么整个程序就会出现一些不确定的bug。这种bug很难发现,而且会因为线程之间的随机竞争而重复出现。
6.如何在Java中停止一个线程?
答:Java提供了丰富的API,但是没有提供停止线程的API。JDK 1.0原本有stop()、suspend()和resume()等一些控制方法,但在随后的JDK版本中因为潜在的死锁威胁而被放弃。在那之后,Java API的设计者没有提供一个兼容且线程安全的方法来停止一个线程。当run()或call()方法完成时,线程将自动结束。如果想要手动结束线程,可以使用volatile布尔变量来退出run()方法的循环,或者取消任务来中断线程。单击此处查看示例代码。
7.线程运行时发生异常会怎样?
答:简单来说,如果没有捕捉到异常,线程就会停止执行。线程。UncoughtException Handler是一个嵌入式接口,用于处理由未捕获的异常引起的线程突然中断。当一个uncaughtException将中断线程时,JVM将使用thread。getUncaughtExceptionhandler()来查询线程的uncount exception处理程序,并将线程和异常作为参数传递给处理程序的uncount exception()方法进行处理。