Java经典面试,来帮你应对hr的提问!
首先:
博主是一个帅气的boy👦,你可以叫我山鱼君
山鱼🐟牛客🐂的🖱 ⌨个人主页:https://www.nowcoder.com/users/335664988
💖💖如果对你有帮助的话希望三连下👍⭐✍支持一下博主🌊
今天呢,依旧是整理了一些面试题,希望这些面试题会对小伙伴们有所帮助哦!
下面是今天的答题时间!
1.try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的代码会不会被执行,什么时候被执行,在 return 前还是后?
try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说 return 语句先执行,finally 语句后执行,但 return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回!但此时会出现两种情况:①、如果finally中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!;
②、如果finally中没有return,则在执行完finally中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;
2.Java 语言如何进行异常处理,关键字:throws、throw、try、catch33、finally 分别如何使用?
catch块表示一个异常捕获块。当程序执行try块引发异常时,这个异常对象将会被后面相应的catch块捕获。throw用于手动地抛出异常对象。throw后面需要一个异常对象。throws用于在方法签名中声明抛出一个或多个异常类,throws关键字后可以紧跟一个或多个异常类finally块代表异常处理流程中总会执行的代码块。try块中可以抛出异常。
3.运行时异常与受检异常有何异同?
受检异常(checked exception):这类异常是由一些外部的偶然因素所引起的。Java编译器强制要求处理。也就是说,程序必须进行对这类异常进行处理。Exception异常,要求编程人员进行处理,RuntimeException:这类异常再程序中,可以进行处理,也可以不处理
4.列出一些你常见的运行时异常?
1.ArrayIndexOutofBoundsException:数组索引越界异常.2.NullPointException:空指针异常。3.ClassCastException:类型转换异常.4.ArithemticException:数***算异常.5.NumberFormatException:数字转换异常。
5.什么是 DAO 模式?
DAO 模式实际上是两个某时的组合,Data Accessor模式和Active Domain Object模式。
Data Accessor 模式: 封装了数据访问实现的机制,通过提供黒盒式数据存取接口,实现数据访问和业务逻辑的分离。
Active Domain Object 模式: 实现业务数据的对象化封装。
6.阐述 final、finally、finalize 的区别。
final 用于声明 属性(属性不可交变)、方法(方法不可覆盖)、类(类不可继承)。finally 是 异常处理语句结构 的一部分,不管是否有异常,他的语句总是执行。finalize 是Object类的一个方法,主要是在收集器执行的时候会调用被回收对象的此方法,进行资源回收,例如关闭文件等。
7.阐述 ArrayList、Vector、LinkedList 的存储性能和特性。
ArrayList 和 Vector 都是使用数组方式存储数据,但性能上较ArrayList差LinkedList使用双向链表实现存储,所以插入速度较快。Vector属于遗留容器,Java早期的版本中提供的容器。
8.Collection 和 Collections 的区别?
是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。Collection接口是Set接口和List接口的父接口Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作。最根本的是Collections是一个类,Collections 是一个包装类,Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素, 而另一些则不允许,一些 collection 是有序的,而另一些则是无序的。
9.List、Map、Set 三个接口存取元素时,各有什么特点?
1.List集合能够存放有序可重复的数据2.Set集合存放无序不可重复的数据3.Map集合一次能够存两列数据,并且key不可重复Map集合中 entrySet返回的是Entry的Set集合(写键值对的Set集合也可以)。
10.线程的 sleep()方法和 yield()方法有什么区别?
1.sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会
2.yield()方法只会给相同优先级或更高优先级的线程以运行的机会
3.线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态
4.sleep()方法声明会抛出InterruptedException,而yield()方法没有声明任何异常
5.sleep()方法比yield()方法具有更好的移植性(跟操作系统CPU调度相关)
今天的Java常见面试题就到这里了,之后会持续更新的🐂!
原 创 不 易 , 还 希 望 各 位 牛友们 支 持 一 下开心😁原创✨不 易,还希望各位大佬支持一下点赞👍:您的赞赏是我前进的动力!收藏⭐:您的支持我是创作的源泉!评论✍:您的建议是我改进的良药!山鱼🐟牛客🐂的个人主页:https://www.nowcoder.com/users/335664988