武汉小药药Java后端
《面试题目》
攒人品!!!
- 实习亮点,难点;
- es原理知道吗,为什么比mysql快?
- es分片集群了解吗?想要提高性能,对于分片有什么要求?
- 项目里秒杀业务怎么实现的?
- 怎么保证秒杀的稳定性和一致性?(应该是想问库存一定会扣减吗)
- 悲观锁和乐观锁怎么实现?
- 数据库层面怎么实现呢?
- 场景题:导出一个excel导出200万数据,excel一个表里面,然后比较慢,要优化一下;(不了解深度分页)
- 索引的数据结构;
- 索引的类型及区别;
- 主键索引和非主键索引的区别;
- 索引下推了解吗?(这个不了解)
- ArrayList和LinkedList的区别?
- 那并发场景用哪个集合呢?
- 学过C语言没有?
- 说一下spring的ioc和AOP
- 那传统的filter和springmvc里面的拦截器有什么区别?
- 使用jwt和session有什么区别?分布式场景下呢?
- 微服务的RPC框架了解哪些?(这个是说了Feign远程调用)
- dubbo了解吗(不了解)
- cannal监听mysql的原理?
- mq消息得可靠性怎么保证的?
- 项目怎么使用这个中间件的,详细一点;
- AI工具用过哪些?
- 项目上线之后cpu彪高怎么排查?
- seata实现分布式事务一致性得原理说一下;
- 微服务项目比单机项目的优势在哪里?
- 工作场景题:如果提交到仓库的代码冲突了,你怎么解决?
《参考解析》
-
MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。
-
Spring框架:Spring IoC容器管理Bean生命周期,核心是依赖注入(DI)。AOP面向切面编程通过动态代理(JDK/CGLIB)实现横切关注点(日志/事务/权限)。Spring事务传播行为:REQUIRED(加入现有或新建)、REQUIRES_NEW(挂起当前,新建)、NESTED(嵌套事务)等。
-
Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。
-
消息队列:消息队列解决异步解耦、流量削峰。消息可靠性:生产者confirm确认;Broker持久化;消费者手动ACK。幂等性:消费端通过唯一ID+Redis或DB乐观锁实现。顺序消息:同一业务Key路由到同一分区/Queue,单线程消费。消息积压:扩消费者+增加分区+临时跳过非关键消息。