Java实习生常规技术面试题每日十题Java基础(四)

目录

1.String 和StringBuffer的区别。

2.数组有没有length()这个方法? String有没有length()这个方法? 

3.final, finally, finalize的区别。 

4.Errror , Exception,RuntimeException区别 

5.Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用。

6.throw和throws有什么区别?

7.请说一下你常用的几种异常? 

8.线程的基本概念?线程的基本状态以及状态之间的关系 

9.sleep() 和 wait() 有什么区别? 

10.多线程有几种实现方法? 


1.String 和StringBuffer的区别。

1、String是个不可变长度的字符串,而StringBuffer是个可变长度的字符串;

2、在对String类进行操作的时候(例如增加字符),实际上是在内存中产生了一个新的String对象; 而StringBuffer是给原对象增加字符,不是新创建一个对象;

2.数组有没有length()这个方法? String有没有length()这个方法? 

数组没有length()这个方法,有length的属性。String有length()这个方法。

3.final, finally, finalize的区别。 

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用

4.Errror , Exception,RuntimeException区别 

Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题。比如:内存资源不足等。对于这种错误,程序基本无能为力,除了退出运行外别无选择,它是由Java虚拟机抛出的。

Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

Exception又分为运行时异常,受检查异常。

运行时异常,表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常。

受检查异常,是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。

Exception体系包括RuntimeException体系和其他非RuntimeException的体系:

① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。 

②其他非RuntimeException(IOException等等):这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

5.Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用。

throws是获取异常

throw是抛出异常

try是将会发生异常的语句括起来,从而进行异常的处理,

catch是如果有异常就会执行他里面的语句,

而finally不论是否有异常都会进行执行的语句。

6.throw和throws有什么区别?

throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。

7.请说一下你常用的几种异常? 

空指针异常;  NullPointerException

数组下标越界; ArrayIndexOutOfBoundsException

类型转换异常; ClassCastException

算数异常,例如除数为零;ArithMeticException

IO异常,比如说找不到文件; FileNotFoundException

找不到类异常;  ClassNotFoundException

sql异常,例如sql语句不能正常运行;

8.线程的基本概念?线程的基本状态以及状态之间的关系 

1、是程序执行流的最小单元。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

2、开始时:就绪状态,等待cpu调用后进入运行状态,运行过程中遇到阻塞事件,进入阻塞状态,等待阻塞事件结束后,重新进入就绪状态;如果没有阻塞事件,运行结束后,则进入结束状态。

9.sleep() 和 wait() 有什么区别? 

     sleep就是暂停当前线程一段时间,把cpu让给其他线程使用,到时后会自动恢复。调用sleep不会释放对象锁。 wait方法导致本线程放弃对象锁,进入等待,只有等到本对象的notify方法(或notifyAll)后本线程才进入就绪状态,等待执行。 

10.多线程有几种实现方法? 

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

 

其他面试题:

Java实习生常规技术面试题每日十题Java基础(八)

Java实习生常规技术面试题每日十题Java基础(七)

Java实习生常规技术面试题每日十题Java基础(六)

Java实习生常规技术面试题每日十题Java基础(五)

Java实习生常规技术面试题每日十题Java基础(四)

Java实习生常规技术面试题每日十题Java基础(三)

Java实习生常规技术面试题每日十题Java基础(二)

Java实习生常规技术面试题每日十题Java基础(一)

相关文章

暂无评论

暂无评论...