Skip to content

好多kafka难题啊,看看其中的化解之道

这是一篇关于更加面向项目和技术的面经详解,第一次遇见问那么多kafka的问题,看看这个粉丝是怎么回答的。

先来看看 职位描述

岗位职责:

  • 负责基于 Go 的后端服务的设计、开发和维护;
  • 参与系统架构设计,确保系统的高可用性、高性能和可扩展性;
  • 编写高质量、可维护的代码,并进行代码评审;
  • 解决复杂的技术问题,优化系统性能;
  • 与跨职能团队合作,确保项目按时交付;
  • 编写技术文档和开发规范,提升团队整体开发效率;
  • 参与新技术的研究和引入,推动技术创新。

岗位要求:

  1. 计算机科学或相关专业本科及以上学历,思维逻辑清晰;
  2. 5年以上软件开发经验,至少3年Go语言开发经验;
  3. 熟悉 Go 语言的标准库和常用框架,了解 Go 语言的内存管理和并发模型;
  4. 具备微服务架构设计和开发经验,熟悉 gRPC、Protobuf 等技术;
  5. 熟悉常见的数据库(如 MySQL、PostgreSQL)和缓存技术(如 Redis);
  6. 有良好的代码风格和编写高质量单元测试的习惯;
  7. 熟悉 Docker、Kubernetes 等容器技术,具备一定的 DevOps 经验;
  8. 具备较强的分析和解决问题的能力,良好的沟通和团队协作能力;
  9. 有开源项目贡献者或个人技术博客者优先。

加分项:

  • 有 Rust 开发经验,熟悉其他编程语言(如 Python、C++等);
  • 有金融行业交易系统开发经验,如行情报价、交易、风控等。

面试流程

来看看面试的全过程:

  1. 自我介绍

  2. 说一下项目的业务,怎么做的,难点在哪,如何解决?

    • 消息队列:数据倾斜问题,数据不丢,重复消费
    • redis:使用hash以及Pipline,bigkey拆解
    • 数据库:性能优化,分库分表
  3. 数据库优化设置lock_timeout是哪个锁的超时

    数据库优化设置中的 lock_timeout 主要是针对行锁的超时设置。当一个事务在等待获取行锁时,如果超过了 lock_timeout 设置的时间,就会抛出超时错误,避免事务长时间等待而导致系统性能下降。

  4. kafka集群规模

    我们的 Kafka 集群规模为 5 台服务器,能够支持 50 万的并发量。通过合理的配置和优化,我们可以进一步提高 Kafka 集群的性能和并发能力。

  5. kafka为什么支持高并发

    Kafka 支持高并发主要有以下几个原因:

    1. 分区:Kafka 将数据分成多个分区,每个分区可以在不同的服务器上进行存储和处理,从而实现了水平扩展,提高了系统的并发能力。
    2. 零拷贝:Kafka 采用了零拷贝技术,减少了数据在内存中的复制次数,提高了数据的传输效率。
    3. 网络压缩:Kafka 支持网络压缩,可以减少