xtransfer Java社招一面面经
面试题目
- 项目经历:介绍项目的分层结构。
- JVM:ZGC和G1对比优劣,实际生产中观察了哪些指标?
- 接口性能:怎么对比写接口的性能?
- 业务场景:订单一致性,如何保证两个系统间库存的一致性?
- 幂等设计:幂等怎么做的?如果加了分布式锁后订单落库失败,如何处理?
- 算法题:下一个排列。
参考解析
- JVM对比:G1适用于大内存,通过Region划分堆,追求停顿时间可控;ZGC通过着色指针和读屏障实现超低停顿(亚毫秒级)。关注指标:GC吞吐量、最大停顿时间(Max GC Pause)、内存占用及分配速率。
- 库存一致性:核心是分布式事务或补偿机制。可采用RocketMQ事务消息、Seata (AT/TCC模式) 或基于状态机的TCC模式,确保两端数据最终一致。
- 幂等与锁失败:幂等通常用全局唯一流水号+数据库唯一索引实现。若分布式锁成功但落库失败,需在finally块中释放锁,并捕获异常进行补偿或抛出异常触发重试,确保数据库数据的一致性。
- 算法题(下一个排列):从后往前找第一个非递增位置,在该位置右侧找比它大的最小值进行交换,然后将原位置右侧部分翻转为升序即可。