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

41 阅读4分钟

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

第一轮: 面试官:请你讲讲 Java 中的基本数据类型有哪些? 王铁牛:有 byte、short、int、long、float、double、char、boolean 这几种。 面试官:那在这些数据类型中,int 和 long 类型的主要区别是什么呢? 王铁牛:int 类型是 32 位的整数,范围是 -2147483648 到 2147483647;long 类型是 64 位的整数,范围更大,能表示更大的数值。 面试官:说说在什么业务场景下会优先选择使用 int 而不是 long 呢? 王铁牛:如果数据的范围不会超过 int 的表示范围,使用 int 能节省空间和提高性能,比如表示年龄、数量等。

第二轮: 面试官:谈谈你对 JUC 中的 CountDownLatch 的理解? 王铁牛:CountDownLatch 主要用于协调多个线程的同步,它可以让一个或多个线程等待其他线程完成操作后再继续执行。 面试官:那在使用 CountDownLatch 时,一般会在哪些业务场景中用到呢? 王铁牛:比如在主线程等待多个子线程完成任务后再进行后续操作的场景,像批量数据处理,主线程需要等待所有子线程处理完数据后再进行汇总等。 面试官:能否举例说明如何使用 CountDownLatch 呢? 王铁牛:(思考了一下)就像这样,创建一个 CountDownLatch 对象,设置初始计数器为子线程的数量,然后每个子线程在完成任务后调用 countDown 方法减计数器,主线程调用 await 方法等待计数器归零。

第三轮: 面试官:说说你对 Spring 中的事务管理的理解? 王铁牛:事务管理可以保证一组数据库操作要么全部成功,要么全部失败回滚,确保数据的一致性。 面试官:在 Spring 中,如何配置事务管理呢? 王铁牛:可以通过在配置文件中定义事务管理器,设置事务的属性,如隔离级别、传播行为等,然后在需要事务的方法上添加事务注解。 面试官:那如果在事务中发生了异常,Spring 是如何处理的呢? 王铁牛:(挠挠头)这个……不太清楚。

面试官:好的,今天的面试就到这里,你回家等通知吧。

答案:

  • 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 两个值。
  • JUC 中的 CountDownLatch:CountDownLatch 是一个同步工具类,通过一个计数器来实现线程的同步。计数器初始值为线程的数量,每个线程在完成任务后调用 countDown 方法减计数器,主线程调用 await 方法等待计数器归零,当计数器归零后,主线程继续执行。常用于主线程等待多个子线程完成任务后再进行后续操作的场景。
  • Spring 中的事务管理:Spring 的事务管理基于 AOP(面向切面编程)实现,通过在方法上添加事务注解(如 @Transactional)或在配置文件中定义事务管理器来管理事务。事务可以保证一组数据库操作要么全部成功,要么全部失败回滚,确保数据的一致性。在事务中发生异常时,Spring 会根据事务的配置进行回滚或提交操作。如果事务配置为回滚(默认情况下),当发生未被捕获的异常时,事务会回滚;如果事务配置为提交,即使发生异常,事务也会提交。