货拉拉后端开发实习一面面经

货拉拉 · 后端开发实习 · 一面 · 2026-03

面试题目

项目拷打

  • 这里的异步消息为什么选RocketMQ事务消息来做?
  • 业务对账有没有出现误告警?
  • 交易对账这种对金钱比较敏感的业务,为什么不是实时对账而是天级别的对账?
  • 出现误告警怎么处理异常数据呢?

Java基础

  • Java的基本数据类型。
  • String为什么是不可变的?为什么要设计为不可变?
  • java的等号和equals的区别。
  • StringBuffer和StringBuilder的区别?StringBuffer和字符串拼接的加号有什么区别?
  • static关键字有什么作用?什么场景下会使用static去修饰类方法?
  • static修饰的静态代码块的执行顺序。
  • java反射中class.forName和对象.getClass这两者的区别是什么?

集合与并发

  • HashMap的put方法会执行什么操作?
  • HashMap的key是有序的吗?哪种map的key是有序的?
  • HashMap的key可以是null吗?
  • Java线程池的参数。
  • 发现频繁的 Full GC 以后,你会怎么去做 GC 参数调优?
  • 平时经常用到的一些公平锁和非公平锁分别有哪些呢?

算法题

  • 手撕:3.无重复字符的最长字串

参考解析

  • RocketMQ事务消息:用于解决分布式事务中的本地事务与消息发送的一致性。通过发送半消息(Half Message)确认本地事务状态,确保本地业务执行成功后消息才对消费者可见。
  • String不可变性:不可变是为了线程安全、缓存Hash值(如HashMap key)、以及字符串常量池的实现,节省内存空间。
  • HashMap put流程:计算Key的Hash值,定位桶位置,若冲突则利用链表或红黑树存储;JDK 8中若链表长度超过8且数组容量大于64则转为红黑树。
  • Full GC调优:先通过jstat/jmap分析堆内存分布;检查大对象分配、频繁创建临时对象或元空间溢出;调整新生代/老年代比例,优化G1/CMS的回收阈值。
  • 公平/非公平锁:公平锁如ReentrantLock(true),按请求顺序排队获取;非公平锁如synchronized及ReentrantLock(false),允许插队以减少线程切换带来的上下文切换开销。