以下是互联网大厂 Java 求职者面试的三轮问答及答案:
第一轮: 面试官:请你谈谈 Java 的基本数据类型有哪些? 王铁牛:有 byte、short、int、long、float、double、char、boolean 这几种。 面试官:那在 Java 中,int 和 Integer 有什么区别? 王铁牛:int 是基本数据类型,直接存储数值;Integer 是包装类,对象形式存储,在某些情况下会自动装箱和拆箱。 面试官:说说自动装箱和拆箱的过程吧。 王铁牛:自动装箱就是把基本数据类型自动转换成对应的包装类对象,比如 int 转换成 Integer;拆箱则是把包装类对象转换成基本数据类型,比如 Integer 转换成 int。
第二轮: 面试官:讲讲多线程的基本概念吧。 王铁牛:多线程就是在一个程序中可以同时执行多个线程,每个线程都可以独立运行。 面试官:那 Java 中创建线程的方式有哪些? 王铁牛:有继承 Thread 类和实现 Runnable 接口这两种方式。 面试官:它们有什么区别呢? 王铁牛:继承 Thread 类方式简单,但不利于代码复用;实现 Runnable 接口方式更灵活,适合多个线程共享资源的情况。
第三轮: 面试官:谈谈你对 HashMap 的理解吧。 王铁牛:HashMap 是基于哈希表实现的 Map 接口,它存储键值对,通过哈希函数快速定位值。 面试官:HashMap 的哈希冲突是怎么解决的? 王铁牛:使用链表法来解决哈希冲突,当哈希值相同时,将元素存储在链表中。 面试官:那如果哈希冲突严重,会有什么影响呢? 王铁牛:会导致链表过长,查询效率降低,甚至可能出现循环链表等问题。
面试官:今天的面试就到这里,你可以先回去等通知,我们会尽快给你回复。**
答案总结:
- Java 的基本数据类型包括 byte、short、int、long、float、double、char、boolean,基本数据类型直接存储数值,包装类对象形式存储。自动装箱是把基本数据类型转换成包装类对象,拆箱是把包装类对象转换成基本数据类型。
- 多线程是在一个程序中同时执行多个线程,Java 中创建线程有继承 Thread 类和实现 Runnable 接口两种方式,继承 Thread 类方式简单但不利于代码复用,实现 Runnable 接口方式更灵活适合多个线程共享资源。
- HashMap 是基于哈希表实现的 Map 接口,存储键值对,通过哈希函数快速定位值,哈希冲突使用链表法解决,哈希冲突严重会导致链表过长,查询效率降低甚至出现循环链表等问题。