您的位置 首页 java

Java面试技术问答宝典(2)——Int 和 Integer 的区别

我们参加 Java 培训学习都是希望能够毕业后找到满意的工作,然而培训机构只是推荐就业,我们仍然需要进行面试,提高面试技术问答的正确率有助于增加面试官的满意度。本系列全面汇总了企业Java面试的技术问题,希望能够帮助大家。

本文列举的技术问题有:

  • 说出 ArrayList, Vector , LinkedList 的存储性能和特性?
  • 内存泄漏 和内存溢出?
  • 反射中,Class.forName()和 ClassLoader.loadClass()的区别?

更多Java面试技术问答后续会继续提供,想要一口气获得所有答案的小伙伴可以评论交流哦~

3、说出 ArrayList,Vector, LinkedList 的存储性能和特性?

ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

4、内存泄漏和内存溢出?

内存泄漏(memoryleak),是指应用程序在申请内存后,无法释放已经申请的内存空间,一次内存泄漏危害可以忽略,但如果任其发展最终会导致内存溢出(outofmemory)。如读取文件后流要进行及时的关闭以及对数据库连接的释放。

内存溢出(outofmemory)是指应用程序在申请内存时,没有足够的内存空间供其使用。如我们在项目中对于大批量数据的导入,采用分批量提交的方式。

5、反射中,Class.forName()和 ClassLoader.load Class ()的区别?

Class.forName(className)方法,内部实际调用的方法是Class.forName(className,true,classloader);

第 2 个 boolean 参数表示类是否需要初始化, Class.forName(className)默认是需要初始化,一旦初始化,就会触发目标对象的 static 块代码执行,static 参数也也会被再次初始化 ,ClassLoader.loadClass(className) 方 法 , 内 部 实 际 调 用 的 方 法 是ClassLoader.loadClass(className,false);第 2 个 boolean 参数,表示目标对象是否进行链接,false 表示不进行链接,由上面介绍可以,不进行链接意味着不进行包括初始化等一些列步骤,那么静态块和静态对象就不会得到执行。

前章回顾:

更多Java面试技术问答后续会继续提供,想要一口气获得所有答案的小伙伴可以评论交流哦~

文章来源:智云一二三科技

文章标题:Java面试技术问答宝典(2)——Int 和 Integer 的区别

文章地址:https://www.zhihuclub.com/185281.shtml

关于作者: 智云科技

热门文章

网站地图