【面试题解析】--20200118Java软件开发工程师面试题解析

1. 谈谈HashMap的实现原理?

HashMap是数组与链表共同组成的,所以HashMap的随机访问以及插入删除的效率都非常的高。HashMap中的HashCode可以通过key值计算得来,在JDK1.8中如果HashMap的大小到了一定的阈值那么就会由一个单向链表转换成红黑树。

2. 谈谈你对垃圾回收机制的理解(GC机制)

GC(垃圾回收机制)是JVM提供的一种能力,它可以以不定时的方式清除内存中无任何引用的对象,这里需要注意的是垃圾回收机制回收的是被回收对象占据的内存空间而非对象本身。当一个对象被赋值为null或没有任何指针指向它的时候那么它就会被垃圾回收机制回收掉,垃圾回收机制使得Java程序员不用担心内存分配的问题在一定程度上减少了内存的溢出。

3. 你了解的消息队列有哪些?

ActiveMQ、RabbitMQ、Redis(Redis中也有消息队列的实现)。

4. 内存泄漏与内存溢出的区别是什么?

内存泄漏指的是程序申请对象的空间之后,该对象不被使用的时候不能够释放占有的内存。
内存溢出指的是申请的空间超出对象的实际大小比如将一个超过Integer的最大值的一个数赋值给一个Integer对象就会产生内存溢出。

5. 接口与抽象类之间的区别是什么?

  1. 抽象类可以有静态方法,而接口不能有。
  2. 抽象类中能够有非抽象的普通方法,而接口只能有抽象方法,并且默认为public abstract类型。
  3. 抽象类中能够有静态成员变量,而接口中的变量只能是public final类型的。
  4. 抽象类中的方法的作用域能够任意定义,而接口只能为public abstract类型,并且默认为这个类型。
发布了56 篇原创文章 · 获赞 17 · 访问量 6175

猜你喜欢

转载自blog.csdn.net/qq_43199016/article/details/104035072