米居两面面经 已offer
一面:
1、介绍项目
2、线程池的运行全过程介绍一下
3、线程池的提交执行方法除了有execute,还有个submit,了解吗?为什么不用这个?
4、索引分别有哪几种?
5、如何根据我们的业务建立合适的索引?
6、使用唯一性索引和普通索引,修改数据命中索引时有什么区别?
7、一条数据查询的全过程?
8、BinLog和Redolog分别有什么作用?
9、你提到了逻辑日和和物理日志,怎么理解?
10、BinLog位于哪一层?RedoLog位于哪一层?
11、比如对于HBase或者RocketMQ只需要一个日志文件即可,为啥MySQL是两个?
12、只有BinLog,没有RedoLog可以吗?
13、只有RedoLog,没有BinLog可以吗?
14、为什么MySQL需要二阶段提交?
15、主从同步的过程,存在什么问题?
16、同步复制、异步复制、半同步复制有什么区别?为什么需要有半同步复制?
二面:
1、了解SpringCloud吗?
2、介绍一下Nacos和Apollo的区别?nacos不太了解。
3、Apollo如何实现配置的动态更新?
4、什么是长轮询?为什么要使用长轮询去获取配置信息?
5、Apollo自定义的BeanPostProcessor起到了什么作用?
6、Apollo集群通常是一台节点还是多台节点部署,有什么区别?
7、配置的动态更新是Apollo集群通过推模式给到服务端的还是服务端通过拉模式从Apollo集群获取的?我回答用拉模式。
8、为什么这时候需要使用拉模式,使用推模式的话当前场景有什么缺点?
9、为什么Kafka消息消费的时候是拉模式,如果是推模式有什么问题吗?
10、我们的应用服务端(作为客户端)连接Apollo集群的时候是连接其中的一个节点还是多个节点,为什么?我回答类似ZK集群,连接一个节点即可
11、为什么连接一个节点即可,ZK的一致性怎么保证的?
12、ZK可以保证读一致性还是写一致性?分别怎么保证的?
13、既然ZK没有办法保证读一致性,那么如果当前有请求到节点上请求数据,正好这个节点上的数据发生了更新,没有同步到最新的结果, 我们需要得到最新的结果,有几种实现方案?我回答:1、同步等待一致后再读取,集群短暂时间不可用的方案 2、使用一个mapping表,记录所有的节点存在这个数据的版本信息,轮询后对请求进行转发请求最新数据的方案。
14、面试官对我的回答不满意,问我还有没有方案。我回答暂时没有想到恳请提示。
15、面试官提示读写分离有没有做过。回答有。有什么办法解决主从不一致呢,借鉴到ZK当前这个设计问题?
16、我回答了Mysql可以采用强制走主库、Sleep方案、show slave status命令查看主从延迟、对比位点、对比GTID方案。ZK的话也可以用这些思路去拓展 。
17、堆外内存的使用场景优缺点,有做过性能调优吗?
#上海米居网络#