不少人都知道Java开发岗位的工资比较高,但是你们可能不知道想要找到Java开发工作同样不是一件简单的事情,不仅需要我们有着扎实的开发技术,还需要我们对于面试题有一定的了解,这样才能在面试期间有更好的变现,今天就给大家带来了java面试题及答案整理(java面试题基础题)
1.在 Java 中如何跳出当前的多重嵌套循环?
答案:在外层循环前加一个标记如outfor,然后用break outfor;可以跳出多重循环。例如以下代码:
public class TestBreak {
public static void main(String[] args) {
outfor: for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
if (j == 5){
break outfor;
}
System.out.println("j = " + j);
}
}
}
}
运行结果如下所示:
j = 0
j = 1
j = 2
j = 3
j = 4
2.HashSet 里的元素是不能重复的, 那用什么方法来区分重复与否呢?
答案:往集合在添加元素时,调用 add(Object)方法的时候,首先会调用Object的 hashCode()方法判断hashCode 是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的 equals()方法判断是否返回 true,如果为true则说明元素已经存在,如为false则插入元素。
3.请写出几个常见的运行时异常?
答案:NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IndexOutOfBoundsException - 下标越界异常
NumberFormatException - 数字格式异常
4.为什么Java语言的开发者,把String类定义为final的呢?
答案:因为只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的,那么String interning将不能实现,因为这样的话,如果变量改变了它的值,那么其它指向这个值的变量的值也会一起改变。如果字符串是可变的,那么会引起很严重的安全问题。譬如,数据库的用户名、密码都是以字符串的形式传入来获得数据库的连接,或者在socket编程中,主机名和端口都是以字符串的形式传入。因为字符串是不可变的,所以它的值是不可改变的,否则黑客们可以钻到空子,改变字符串指向的对象的值,造成安全漏洞。
因为字符串是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享。这样便不用因为线程安全问题而使用同步。字符串自己便是线程安全的。
因为字符串是不可变的,所以在它创建的时候HashCode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。
5.抽象类(abstract class)和接口(interface)有什么异同?
答案:不同点:
● 抽象类中可以定义构造器,接口不能;
● 抽象类可以有抽象方法和具体方法,接口不能有具体方法;
● 接口中的成员全都是 public 的,抽象类中的成员可以使用private、public、protected、默认等修饰;
● 抽象类中可以定义成员变量,接口中只能是常量;
● 有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法;
● 抽象类中可以包含静态方法,接口中不能有静态方法;
● 一个类只能继承一个抽象类,一个类可以实现多个接口;
相同点:
● 不能够实例化;
● 可以将抽象类和接口类型作为引用类型;
● 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类;
6.Java 出现 OutOfMemoryError(OOM)的原因有那些?出现 OOM 错误后,怎么解决?
答案:触发 java.lang.OutOfMemoryError:常见的原因就是应用程序需要的堆空间是大的,但是 JVM 提供的却小。这个的解决方法就是提供大的堆空间即可。
除此之外还有复杂的原因:内存泄露:特定的编程错误会导致你的应用程序不停的消耗更多的内存,每次使用有内存泄漏风险的功能就会留下一些不能被回收的对象到堆空间中,随着时间的推移,泄漏的对象会消耗所有的堆空间,触发java.lang.OutOfMemoryError: Java heap space 错误。
解决方案:你应该确保有足够的堆空间来正常运行你的应用程序,在 JVM 的启动配置中增加如下配置:-Xmx1024m,流量/数据量峰值:应用程序在设计之初均有用户量和数据量的限制,某一时刻,当用户数量或数据量突然达到一个 峰 值 , 并 且 这 个 峰 值 已 经 超 过 了 设 计 之 初 预 期 的 阈 值 , 那 么 以 前 正 常 的 功 能 将 会 停 止 , 并 触 发java.lang.OutOfMemoryError: Java heap space 异常解决方案,如果你的应用程序确实内存不足,增加堆内存会解决 GC overhead limit 问题,就如下面这样,给你的应用程序 1G 的堆内存:java -Xmx1024m com.yourcompany.YourClass。
以上就是对于Java面试题的介绍,当然这只是我们在面试中经过会出现的几个问题,如果你想自己能够有一个更好的面试结果,可以参加南京北大青鸟的Java培训课程,不仅有着实战项目练习,而且我们还有着专业的就业老师为您提供模拟面试,带你体验面试中的每个流程。