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

94 阅读4分钟

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

第一轮: 面试官:请你谈谈 Java 中的基本数据类型有哪些? 王铁牛:有 byte、short、int、long、float、double、char、boolean 这八种。 面试官:不错,那你说说它们各自的存储范围是多少? 王铁牛:(沉默片刻后)这个……不太清楚。 面试官:那你再说说在 Java 中如何进行类型转换? 王铁牛:可以使用自动类型转换和强制类型转换。自动类型转换就是小类型自动转换为大类型,强制类型转换需要使用强制转换符。

第二轮: 面试官:讲讲 JUC 中的常用类有哪些? 王铁牛:有 CountDownLatch、CyclicBarrier、Semaphore 等。 面试官:那你能说一下 CountDownLatch 的作用吗? 王铁牛:(挠挠头)好像是用来控制线程同步的。 面试官:具体怎么控制呢? 王铁牛:(更加迷茫)不太清楚了。

第三轮: 面试官:谈谈你对 Spring 中依赖注入的理解? 王铁牛:(思索片刻)就是通过配置将对象的依赖关系注入到其他对象中。 面试官:那在 Spring 中常用的依赖注入方式有哪些? 王铁牛:有构造方法注入、setter 方法注入和注解注入。 面试官:那你能举例说明一下吗? 王铁牛:(一脸茫然)这个……不太会举例。

面试官:好了,今天的面试就到这里,你可以先回去等通知。

答案:

  • Java 中的基本数据类型及存储范围:
    • byte:占 1 个字节,范围是 -128 到 127。
    • short:占 2 个字节,范围是 -32768 到 32767。
    • int:占 4 个字节,范围是 -2147483648 到 2147483647。
    • long:占 8 个字节,范围是很大的整数。
    • float:占 4 个字节,用于表示单精度浮点数。
    • double:占 8 个字节,用于表示双精度浮点数。
    • char:占 2 个字节,用于表示字符。
    • boolean:占 1 个字节,只有 true 和 false 两个值。
  • 在 Java 中进行类型转换的方式:
    • 自动类型转换:小类型自动转换为大类型,例如 int 可以自动转换为 long。
    • 强制类型转换:需要使用强制转换符(如 (类型)),将大类型转换为小类型,但可能会导致数据丢失或精度降低,例如 (int)3.14 会得到 3。
  • JUC 中常用类的作用:
    • CountDownLatch:用于协调多个线程之间的同步,例如在一个线程完成某些操作后,通知其他线程继续执行。它通过一个计数器来实现,计数器初始值为线程的数量,每个线程调用 countDown 方法递减计数器,当计数器减为 0 时,等待的线程可以继续执行。
    • CyclicBarrier:用于多个线程之间的同步,它可以让一组线程到达某个屏障点(barrier point)时被阻塞,直到所有线程都到达该屏障点后,所有线程才会继续执行。它可以循环使用,而不像 CountDownLatch 只能使用一次。
    • Semaphore:用于控制对共享资源的访问数量,它可以限制同时访问某个资源的线程数量。通过 acquire 方法获取许可,release 方法释放许可。
  • Spring 中依赖注入的理解及常用方式:
    • 依赖注入是 Spring 框架的核心特性之一,它通过配置将对象的依赖关系注入到其他对象中,而不是在对象内部创建依赖对象。这样可以降低对象之间的耦合度,提高代码的可维护性和可测试性。
    • 常用的依赖注入方式有:
      • 构造方法注入:在对象的构造函数中接收依赖对象,并将其赋值给成员变量。
      • setter 方法注入:通过对象的 setter 方法来设置依赖对象。
      • 注解注入:使用 Spring 的注解(如 @Autowired、@Resource 等)来自动注入依赖对象。例如,@Autowired 可以根据类型自动装配依赖对象,@Resource 可以根据名称自动装配依赖对象。