Java面试题(二)

1.throw和throws的区别

throw:
(1)throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
(2)throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常。

throws:
(1)throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
(2)throws主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。
(3)throws表示出现异常的一种可能性,并不一定会发生这种异常。

2.String类能被继承吗?

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。

3.Error和Exception的区别

Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复。

Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。

4.如何实现数组和List之间的转换?
  • List转换成为数组:调用ArrayList的toArray方法。
  • 数组转换成为List:调用Arrays的asList方法。
5.什么是反射?

在运行状态中,对于任意一个类都能知道它的所有属性和方法,对于任意一个对象都能调用它的任意方法和属性,这种动态获取信息及调用对象方法的功能称为反射。缺点是破坏了封装性以及泛型约束。

6.什么是自动装箱、自动拆箱?
  • 自动装箱:将基本数据类型包装为一个包装类对象,例如向一个泛型为Integer的集合添加int元素。
  • 自动拆箱:将一个包装类对象转换为一个基本数据类型,例如将一个包装类对象赋值给一个基本数据类型的变量。

注意:比较两个包装类数值要用equals,而不能用==。

7.程序计数器是什么?

程序计数器是一块较小的内存空间,可以看作当前线程所执行字节码的行号指示器。字节码解释器工作时通过改变计数器的值选取下一条执行指令。分支、循环、跳转、线程恢复等功能都需要依赖计数器完成。是唯一在虚拟机规范中没有规定内存溢出情况的区域。

特点:
1.线程私有;
2.JVM规范中唯一没有规定OutOfMemoryError情况的区域;
3.如果正在执行的是Native 方法,则这个计数器值为空。

8.事务有啥特性?
  • 原子性 atomicity
    一个事务在逻辑上是必须不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说不可能只执行其中的一部分。

  • 一致性 consistency
    数据库总是从一个一致性的状态转换到另一个一致性的状态。

  • 隔离性 isolation
    针对并发事务而言,隔离性就是要隔离并发运行的多个事务之间的相互影响,一般来说一个事务所做的修改在最终提交以前,对其他事务是不可见的。

  • 持久性 durability
    一旦事务提交或者回滚后,其修改就会永久保存到数据库中,此时即使系统崩溃,修改的数据也不会丢失

9.堆跟栈的区别
  • 存储
    栈存储:变量、对象的引用,堆存储实例对象(数组也是对象)
  • 速度
    栈:存取速度快
    堆:存取速度慢
  • 线程访问
    栈:每个线程都有一个栈区
    堆:所有线程共享一个堆区
  • 垃圾回收
    栈:比较频繁
    堆:不频繁
10.迭代器Iterator 有什么特点?
  • Iterator 功能比较简单,并且只能单向移动
  • 使用方法 iterator() 要求容器返回一个 Iterator。第一次调用 Iterator 的 next() 方法时,它返回序列的第一个元素。注意:iterator() 方法是 java.lang.Iterable 接口,被 Collection 继承。
  • 使用 hasNext() 检查序列中是否还有元素
  • 使用 next() 获得序列中的下一个元素
  • 使用 remove() 将迭代器新返回的元素删除
  • Iterator 是 Java 迭代器最简单的实现,为 List 设计的 ListIterator 具有更多的功能,它可以从两个方向遍历 List,也可以从 List 中插入和删除元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值