珍林网络 Java 面试题
《面试题目》
- ipv6比ipv4有哪些优点
- Java泛型,以及如何解除泛型
- 查看内存使用情况
- 电商系统防止超卖
- redis和分布式锁如何设计数据结构
- 如何设计一个比较好的索引
- 事务可以嵌套吗
- Java中finally 直接return会怎样
- Bean 的相关知识
- spring boot 注解举例
- 场景题:线程并发从一个 API 取得数据,如何设计
《参考解析》
- IPv6优点:拥有更大的地址空间,简化了报文头部,支持自动配置,并强制支持IPsec提供更好的安全性。
- Java泛型与擦除:Java泛型在编译后会被擦除(Type Erasure),可通过反射绕过编译检查插入不同类型数据。
- 防止超卖:采用Redis Lua脚本原子扣减库存,或利用数据库乐观锁(CAS)防止超卖。
- 分布式锁数据结构:通常使用Redis的String类型配合SETNX命令,建议设置过期时间并使用UUID防止误删。
- 数据库索引优化:遵循最左前缀原则,避免在索引列使用函数,控制索引长度,覆盖索引减少回表。
- 事务嵌套:Spring中通过
Propagation.NESTED支持嵌套事务,底层依赖JDBC的Savepoint实现。 - finally返回:若finally块中有return语句,它会覆盖try/catch中的返回值,并抑制try块中的异常。
- 高并发API调用:使用CompletableFuture异步编排,配合线程池和信号量(Semaphore)进行限流与异常处理。