java面试题有哪些?资深java面试题及答案

今天我们就给大家分享一些资深的java面试题,让大家了解一下面试会出一些怎样的题目,同时也大家也可以巩固一些知识,提高自己的专业技能!java面试题答案也会给大家一起分享哦!

1.ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?

Linkedlist集合的优势:添加元素时可以指定位置,比ArrayList集合添加元素要快很多。

Linkedlist在get很慢,LinkedList在get任何一个位置的数据的时候,都会把前面的数据走一遍。尽量不使用,而使用foreach LinkedList的方式来直接取得数据。

这两种方式各有优缺,为更好的使用可以将这两者进行联合使用,使用Linkedlist集合进行存储和添加元素,使用Arraylist集合进行get获取元素。

2.内存溢出是怎么回事?请举一个例子?

内存溢出(out of memory)通俗理解就是内存不够,在计算机程序中通俗的理解就是开辟的内存空间得不到释放。

OOM有堆溢出,栈溢出,方法区溢出(主要是动态生成class的处理过多)

3.hashCode方法的作用?

hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;

如果两个对象相同,就是适用于equals(Java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;

如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;

两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。

4.JVM内存结构,为什么需要GC?

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存,简化代码开发。

5.java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

这些都是一些有价值的题目,作为java人员,可以将这些题目收藏,空闲的时候巩固一下,或许面试还能排上用场哦!最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。

推荐阅读:

java编码格式怎么改?为什么需要编码?

json文件的修改和保存怎么做?JSON文件含义是什么?

java架构师有哪些面试题?java架构师面试宝典和答案