武汉小药药Java后端

某互联网公司 · Java开发工程师 · 上海 · 2026-05

《面试题目》

攒人品!!!

  1. 实习亮点,难点;
  2. es原理知道吗,为什么比mysql快?
  3. es分片集群了解吗?想要提高性能,对于分片有什么要求?
  4. 项目里秒杀业务怎么实现的?
  5. 怎么保证秒杀的稳定性和一致性?(应该是想问库存一定会扣减吗)
  6. 悲观锁和乐观锁怎么实现?
  7. 数据库层面怎么实现呢?
  8. 场景题:导出一个excel导出200万数据,excel一个表里面,然后比较慢,要优化一下;(不了解深度分页)
  9. 索引的数据结构;
  10. 索引的类型及区别;
  11. 主键索引和非主键索引的区别;
  12. 索引下推了解吗?(这个不了解)
  13. ArrayList和LinkedList的区别?
  14. 那并发场景用哪个集合呢?
  15. 学过C语言没有?
  16. 说一下spring的ioc和AOP
  17. 那传统的filter和springmvc里面的拦截器有什么区别?
  18. 使用jwt和session有什么区别?分布式场景下呢?
  19. 微服务的RPC框架了解哪些?(这个是说了Feign远程调用)
  20. dubbo了解吗(不了解)
  21. cannal监听mysql的原理?
  22. mq消息得可靠性怎么保证的?
  23. 项目怎么使用这个中间件的,详细一点;
  24. AI工具用过哪些?
  25. 项目上线之后cpu彪高怎么排查?
  26. seata实现分布式事务一致性得原理说一下;
  27. 微服务项目比单机项目的优势在哪里?
  28. 工作场景题:如果提交到仓库的代码冲突了,你怎么解决?

《参考解析》

  1. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  2. Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。

  3. Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。

  4. 消息队列:消息队列解决异步解耦、流量削峰。消息可靠性:生产者confirm确认;Broker持久化;消费者手动ACK。幂等性:消费端通过唯一ID+Redis或DB乐观锁实现。顺序消息:同一业务Key路由到同一分区/Queue,单线程消费。消息积压:扩消费者+增加分区+临时跳过非关键消息。