全程80分钟,电话面,八股+项目+反问
【八股】30min
全是Java八股
- 你的技术栈是Java,讲一下Java面向对象的特点
- 你实际应用过“多态”吗,举一个具体例子,和重载有什么关系?
- Java中的HashMap了解吗?
- 聊聊HashMap的底层结构
- 为什么要引入红黑树,而不用其他树?
- 红黑树和二叉搜索树、AVL树有什么区别?
- HashMap会出现红黑树一直增高变成无限高的情况吗?
- HashMap读和写的时间复杂度是多少?
- HashMap是线程安全的吗?怎么解决?
- 解决线程安全问题还有哪些办法?
- volatile关键字是如何保证内存可见性的?底层是怎么实现的?
- 为什么需要保证内存可见性?
- volatile为什么要禁止指令重排,能举一个具体的指令重排出现问题的例子吗
- Synchronized的底层原理是什么,锁升级的过程了解吗?
- 线程是怎么确定拿到锁的?锁信息具体放到哪的?
- Synchronized加锁和ReentrantLock加锁有什么区别?
- 线程池了解过吗?有哪些核心参数?
- 为什么核心线程满了之后是先加入阻塞队列而不是直接加到总线程?
- 核心线程数一般设置为多少?
- IO密集型的线程数为什么一般设置为2N+1?
- 聊聊MySQL的索引结构,为什么使用B+树而不用B树
- 你是怎么建立索引的?一般是建立哪些字段的索引呢?
- 怎么确定语句是否走了索引?
- 如果要建立联合索引,字段的顺序有什么需要注意吗?
【项目】40min
分布式的场景是因为我项目中大量使用,如果自己项目没有用的话一般不会询问
- 你的项目中微服务通信是怎么实现的?
- 怎么保证分布式事务,具体的场景是什么?
- Seata的TCC模式是如何保证confirm或cancel会成功执行的?
- 除了Seata还有什么方式解决分布式事务吗?
- RocketMQ是怎么保证分布式事务的,如果半消息commit失败了怎么办?如果其中有一方网络有问题消息丢失怎么办?
- Dubbo实现服务调用的过程,实现动态代理的细节是怎么样的?为什么传入一个接口就可以实现一个代理对象?
- 你提到了Netty,聊聊对Netty的理解?
- 什么是NIO,什么是BIO?
- 你对epoll的执行流程了解吗?
- 平时怎么数据存储,后面穿插八股,见【八股】第9题
当场约了一场笔试(非系统的统一笔试),约到第二天,是部门考察代码能力的笔试,是非算法的场景编程题,预计一个半小时(还不知道具体会是什么场景)