Java面试题(三)

1、同步和异步有何异同,在什么情况下分别使用他们?

如果数据将在线程间共享,例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

2、heap(堆)和stack(栈)有什么区别?

栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照先进后出什么时候用assert的方式进行处理。
堆是栈的一个组成元素。

3、什么时候用assertion?

assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

4、GC是什么? 为什么要有GC?

GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

5、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)==12
Math.round(-11.5)==-11

6、String s = new String("xyz");创建了几个String Object?

两个,因为String的不可变性。

7、启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。

run()方法可以产生必须退出的标志来停止一个线程。

8、Java有没有goto?

goto是java语言中的保留字,目前还没有在java中使用。

goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

9、给我一个你最常见到的runtime exception(运行时异常)

java.lang.NullPointerException:“程序遇上了空指针”,简单地说就是调用了未经初始化的对象或者是不存在的对象。

java.lang.ClassNotFoundException:“指定的类不存在”,这里主要考虑一下类的名称和路径是否正确即可。

java.lang.ArrayIndexOutOfBoundsException:“数组下标越界”,检查调用的下标是不是超出了数组的范围。

java.lang.NoSuchMethodError:“方法不存在”,当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。 

java.lang.IndexOutOfBoundsException:“索引越界异常”,当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.NumberFormatException:“数字格式异常”,当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。

java.sql.SQLException:Sql语句执行异常 

java.io.IOException :输入输出异常。

java.lang.IllegalArgumentException:方法参数错误

java.lang.IllegalAccessException:无访问权限异常

10、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口,抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

Java面试题(一)

Java面试题(二)

Java面试题(三)

Java面试题(四)

Java面试题(五)

Java面试题(六)

Java面试题(七)—— 线程

Java面试题(八)—— 泛型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值