前言
上篇文章给大家介绍在java面试中常见一些面试问题并给出了相应的参考答案,主要包括Java SE中的多线程问题、反射中常见的一些面试题以及对象的拷贝和Java Web中常见的一些问题。本文继续给大家介绍java中的常见面试题,首先给大家介绍的就是java中常见的异常问题:
一、异常
1、 throw 和 throws 的区别?
• throws:是声明可能会抛出一个异常。
2、 final、finally、finalize 有什么区别?
• final:是修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。
• finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果 finally 部分存在,则一定会执行 finally 里面的代码。
• finalize: 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。
3、try-catch-finally 中哪个部分可以省略?
try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须后面跟一个 catch 或者 finally。
4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
finally 一定会执行,即使是 catch 中 return 了,catch 中的 return 会等 finally 中的代码执行完之后,才会执行。
5、常见的异常类有哪些?
• NullPointerException 空指针异常
• ClassNotFoundException 指定类不存在
• NumberFormatException 字符串转换为数字异常
• IndexOutOfBoundsException 数组下标越界异常
• ClassCastException 数据类型转换异常
• FileNotFoundException 文件未找到异常
• NoSuchMethodException 方法不存在异常
• IOException IO 异常
• SocketException Socket 异常
二、 网络
1、http 响应码 301 和 302 代表的是什么?有什么区别?
301:永久重定向。
302:暂时重定向。
它们的区别是:
301 对搜索引擎优化(SEO)更加有利;
302 有被提示为网络拦截的风险。
2、forward 和 redirect 的区别?
forward 是转发 和 redirect 是重定向:
• 地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变;
• 数据共享:forward 可以共享 request 里的数据,redirect 不能共享;
• 效率:forward 比 redirect 效率高。
3、简述 tcp 和 udp的区别?
tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。 在面试中被问到并发知识的时候,大多都会被问到“请你说一下自己对于AQS原理的理解”。下面给大家一个示例供大家参加,面试不是背题,大家一定要假如自己的思想,即使加入不了自己的思想也要保证自己能够通俗的讲出来而不是背出来。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为