《互联网大厂 Java 求职者面试三轮提问及答案》

40 阅读3分钟

以下是《互联网大厂 Java 求职者面试三轮提问及答案》:

第一轮: 面试官:请你说说 Java 中的基本数据类型有哪些? 王铁牛:有 byte、short、int、long、float、double、char、boolean 这几种。 面试官:很好,那在多线程环境下,这些基本数据类型的赋值操作是否是原子性的呢? 王铁牛:嗯……这个不太清楚。 面试官:那再问你,在 Java 中,String 是基本数据类型还是引用数据类型? 王铁牛:好像是引用数据类型吧。

答案:Java 中的基本数据类型有 byte、short、int、long、float、double、char、boolean 这 8 种。在多线程环境下,除了 long 和 double 类型的赋值操作是原子性的(64 位的 long 和 double 类型在 32 位系统中会拆分为两个 32 位的操作,不是原子性的;在 64 位系统中是原子性的),其他基本数据类型的赋值操作都不是原子性的。String 是引用数据类型,它的值存储在堆内存中,变量保存的是对象的引用。

第二轮: 面试官:说说 Java 中的集合框架都有哪些类? 王铁牛:有 ArrayList、LinkedList、HashMap、HashSet 等。 面试官:那你详细说说 ArrayList 和 LinkedList 的区别吧。 王铁牛:呃……这个有点忘了。 面试官:那再给你一个场景,在频繁插入和删除元素的情况下,应该使用哪种集合? 王铁牛:不太确定。

答案:Java 中的集合框架主要有 List、Set、Map 三大接口,以及它们的实现类,如 ArrayList、LinkedList、HashMap、HashSet 等。ArrayList 是基于数组实现的,随机访问效率高,但插入和删除元素效率低;LinkedList 是基于链表实现的,插入和删除元素效率高,但随机访问效率低。在频繁插入和删除元素的情况下,应该使用 LinkedList;在需要随机访问元素的情况下,应该使用 ArrayList。

第三轮: 面试官:讲讲 JVM 的内存结构分为哪几个区域? 王铁牛:不太清楚。 面试官:那再问你,堆内存和栈内存分别存放什么? 王铁牛:还是不太明白。 面试官:最后问你,垃圾回收主要针对哪些内存区域? 王铁牛:真不知道。

答案:JVM 的内存结构主要分为堆内存、栈内存、方法区、本地方法栈和程序计数器这几个区域。堆内存主要存放对象实例,所有对象都在堆上分配内存。栈内存主要存放局部变量、方法参数、返回值等,每个线程都有自己的栈内存。垃圾回收主要针对堆内存进行回收,回收那些没有被引用的对象所占用的内存。

总结:今天的面试就到这里,你表现得有些不稳定,有些基础知识点掌握得不够扎实。回去之后可以好好复习一下相关的知识,我们会在合适的时候再联系你。希望你能不断提升自己的技术水平,下次面试能有更好的表现。感谢你的参与。