招银网络Java开发一面
面试时间:2023/09/08。
面试体验很好,虽然面试官迟到了8分钟,但是也说明了理由(上一个候选人时间有点超了),我在回答问题的时候,面试官也会进行点头和口头嗯的回应,让感到舒适。
1.在之前的实习经历中,最能代表Java技术能力的工作或者成果是什么?简单介绍一下
2.Kafka Connector在读取数据时,宕机了,如何保证下次读取的可靠性?
Kafka Connector会用一个connector topic来存储读取的进度的。
3.讲一下Kafka中消费者Group的作用
4.讲一下Kafka的rebalance
Kafka 的 rebalance(重新平衡)是一个过程,其中 Kafka Consumer Group 中的消费者实例动态地重新分配 topic 的 partitions。这是 Kafka 的一个强大特性,允许消费者组动态地缩放和适应负载变化。
出现场景:
- 新增消费者:当新的消费者加入消费者组时。
- 消费者离开:当现有的消费者离开消费者组或宕机时。
- Topic 的 partition 数量变化:当被消费的 topic 的 partition 数量改变时。
- 手动触发:也可以通过编程方式手动触发 rebalance。
原因:
- 负载均衡:确保每个消费者都能处理大致相等数量的 partitions。
- 容错:当某个消费者失败时,其分配的 partitions 可以被快速转移到其他健康的消费者。
- 动态扩展:允许你根据需求增加或减少消费者数量。
过程:
- 触发条件:首先,满足上面所述的一个或多个触发场景。
- 停止消费:所有消费者暂停消费数据。
- 重新分配:Kafka 的 Group Coordinator 将可用 partitions 重新分配给当前活跃的消费者。
- 同步状态:消费者获取新的 partition 分配,并更新其本地状态。
- 恢复消费:完成 rebalance 后,消费者开始按照新的分配消费 partitions。
注意事项:
- 消费者状态:在 rebalance 过程中,消费者通常不能读取或提交数据,这可能会导致短暂的延迟。
- 数据重复或丢失:如果在 rebalance 之前没有正确地提交 offset,可能会导致数据重复或丢失。
- 成本:频繁的 rebalance 可能会对系统性能产生负面影响。
总的来说,Kafka 的 rebalance 是一种强大但复杂的特性,需要仔细管理以最大化其优点并最小化潜在的缺点。
5.如果我想提升Kafka的处理消息的能力和效率,有哪些方式?
生产者根据业务需要发送消息到指定分区,各个消费者并行读取不同分区的消息进行处理。
6.Kafka如何保证一条消息只会被消费一次?
offset topic来保证、kafka事务的二阶段提交
7.MySQL日志的二阶段提交说一下
8.讲一下MySQL的redolog和binlog的区别
9.Spring的传播机制说一下
10.Spring如何处理循环依赖的问题?
三级缓存
11.Spring MVC处理请求的流程是怎样的?
12.Java中加载类的流程?
13.不同版本的数据库,比如MySQL5和MySQL8,它们的驱动不同,类名可能也不同,你如何处理这些兼容?从Java层面上说该怎么做?
我答了使用适配器模式。也许这个问题的答案是想让我从classloader的角度来考虑?
14.简单题算法题
"fdsa2314fgdg[]23gkl98"中把所有数字反转,变成:"fdsa4132fgdg[]32gkl89"
#招银#