文末有面经共享群

前面已经分享过几篇面试了,这是一篇关于更加面向项目和技术的面经详解,第一次遇见问那么多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 支持网络压缩,可以减少网络传输的数据量,提高系统的性能和并发能力。
  6. 说一下什么是零拷贝

    零拷贝是一种技术,主要通过减少数据在内存中的复制次数来提高数据的传输效率。在 Kafka 中,零拷贝技术主要通过使用 mmap 函数实现。mmap 函数将文件映射到内存中,使得应用程序可以直接访问文件内容,而不需要进行数据的复制。这样可以减少数据在内存中的复制次数,提高数据的传输效率。

  7. 为什么选择kafka

    首先,Kafka 具有很高的并发处理能力,能够满足金融交易系统对高吞吐量的要求。其次,Kafka 的扩容性非常好,可以很容易地增加服务器节点来提高系统的性能。此外,Kafka 天生适合集群部署,并且使用 Java 和 Scala 编写,便于进行问题排查和维护。相比之下,RabbitMQ 的集群部署相对复杂,而且使用 Erlang 语言,对于一些开发人员来说可能不太熟悉,问题排查也比较困难。

  8. Api 网关用来做什么的?

    Api 网关主要用于对第三方调用进行流量限制和安全控制。它可以对请求进行过滤、路由和负载均衡,确保系统的稳定性和安全性。同时,Api 网关还可以提供一些额外的功能,如身份验证、授权、监控和统计等。

  9. 支付模块这块怎么做的

    参与的项目中,支付模块是由其他同事负责开发的。我主要是通过调用支付模块提供的 API 来实现相关业务功能。在调用 API 时,我会确保参数的正确性和安全性,同时对返回结果进行合理的处理和错误处理。

  10. 说一下你们微服务的架构是怎么样的

    我们的系统采用了无服务和微服务的混合架构。这种架构可以充分发挥无服务架构的弹性和高效性,同时又能利用微服务架构的灵活性和可扩展性。在具体实现中,我们将一些通用的功能模块封装成无服务函数,通过事件驱动的方式进行调用。而对于一些复杂的业务模块,则采用微服务架构,进行独立开发和部署。

  11. 差分升级是怎么实现的

    通过对比不同版本的代码,找出差异部分,然后将这些差异部分抽取出来进行计算 MD5 值等操作,以确定是否需要进行升级。在升级过程中,我们会确保数据的完整性和一致性,同时尽量减少对系统的影响。

  12. 编译服务类似CI/CD

    通过修改 Git 命令,实现了类似于 Web Hook 的功能。当有代码提交并打上 tag 时,系统会自动进行 Git clone 操作,然后进行测试和编译。这样可以确保代码的质量和稳定性,同时提高开发效率。

  13. C/C++是开发固件的吧

    是的,我曾经使用 C/C++ 和 Lua 的组合开发过智能网关。不过,由于我这次是应聘后端开发岗位,所以没有将这部分内容写在简历中。

  14. 你很喜欢用redis?

    是的,我非常喜欢使用 Redis。Redis 就像一个数据结构数据库,它提供了丰富的数据结构和操作接口,使用起来非常方便。在项目中,我们使用 Redis 实现了很多业务功能,比如缓存热点数据、实现分布式锁、进行任务队列管理等。

  15. 反问

结尾

大家可以看出来,在这场深入的技术面试中,需要应试者具备强大的技术功底和应对各种挑战的能力。面试官询问的方向好像大多是 Kafka 的高并发处理的问题,不知道这次的面经有没有给你带来哪些学习要点呢?也希望通过分享这位面试者的经历,能给正在求职或致力于技术提升的你带来启发和帮助。

欢迎关注

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:【博客园】。

好多kafka难题啊,看看其中的化解之道的更多相关文章

  1. DISC社交风格测试题--老虎 孔雀 考拉 猫头鹰

    凭直觉,迅速回答 "我是谁",而不是"我应该是谁,或我想我是谁". 1.关于人生观,我的内心其实是: A 希望能够有尽量多的人生体验,所以会有非常多样化的想法. ...

  2. 基于Kafka Connect框架DataPipeline可以更好地解决哪些企业数据集成难题?

    DataPipeline已经完成了很多优化和提升工作,可以很好地解决当前企业数据集成面临的很多核心难题. 1. 任务的独立性与全局性. 从Kafka设计之初,就遵从从源端到目的的解耦性.下游可以有很多 ...

  3. 【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题

    问题描述 经过前两篇文章,分别使用VM搭建了Kafka服务,创建了Azure Function项目,并且都在本地运行成功. [Azure Developer]在Azure VM (Windows) 中 ...

  4. 4 亿用户,7W+ 作业调度难题,Bigo 基于 Apache DolphinScheduler 巧化解

    点击上方 蓝字关注我们 ✎ 编 者 按 成立于 2014 年的 Bigo,成立以来就聚焦于在全球范围内提供音视频服务.面对 4 亿多用户,Bigo 大数据团队打造的计算平台基于 Apache Dolp ...

  5. RabbitMQ和Kafka

    转自通九大神的博客 起因 最近公司RabbitMQ的集群出了点问题,然后有些亲就说RabbitMQ慢且不好用,是一个瓶颈,不如换成Kafka.而我本人,使用RabbitMQ有一点久了,认为这个事情应当 ...

  6. 四万字32图,Kafka知识体系保姆级教程宝典

    本文目录: 一.消息队列 Apache Pulsar Pulsar 与 Kafka 对比 二.Kafka基础 三.Kafka架构及组件 四.Kafka集群操作 五.Kafka的JavaAPI操作 六. ...

  7. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  8. Spark Streaming+Kafka

    Spark Streaming+Kafka 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端, ...

  9. Kafka使用入门教程

    转载自http://www.linuxidc.com/Linux/2014-07/104470.htm 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自 ...

  10. kafka入门教程链接

    http://www.aboutyun.com/forum.php?mod=viewthread&tid=12882 经典入门教程 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创 ...

随机推荐

  1. 【进阶篇】Java 项目中对使用递归的理解分享

    [进阶篇]Java 项目中对使用递归的理解分享 目录 [进阶篇]Java 项目中对使用递归的理解分享 前言 一.什么是递归 1.1基本概念 1.2优缺点 1.3与迭代的区别 二.实际案例 三.改进方案 ...

  2. Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了!

    Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了!   想要在Power BI中让度量值也能像维度一样灵活筛选?没问题,这里就为你揭秘如何将度量值转化为切 ...

  3. Avalonia应用在基于Linux的国产操作deepin上运行

    deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用,安全可靠的 Linux发行版.deepin项目于2008年发起,并在2009年发布了以 linux de ...

  4. 韦东山freeRTOS系列教程之【第九章】任务通知(Task Notifications)

    目录 系列教程总目录 概述 9.1 任务通知的特性 9.1.1 优势及限制 9.1.2 通知状态和通知值 9.2 任务通知的使用 9.2.1 两类函数 9.2.2 xTaskNotifyGive/ul ...

  5. 解决方案 | 外接键盘win+d失效,绿联键盘win+d,win+e失效

    按下fn + 右边的win键 即可解决.如下图所示.

  6. .NET科普:.NET简史、.NET Standard以及C#和.NET Framework之间的关系

    最近在不少自媒体上看到有关.NET与C#的资讯与评价,感觉大家对.NET与C#还是不太了解,尤其是对2016年6月发布的跨平台.NET Core 1.0,更是知之甚少.在考虑一番之后,还是决定写点东西 ...

  7. 数据仓库建模工具之一——Hive学习第四天

    Hive的基本操作 1.3HIve的表操作(接着昨天的继续学习) 1.3.2 显示表 show tables; show tables like 'u*'; desc t_person; desc f ...

  8. QT 开发快速入门

    本人 qt 业余,但有的时候要用到 qt,而又没有系统的学习,用到哪里看哪里. 环境: vs2012+ qt-vsaddins+qt5.5 qt 的按钮点击事件出发的基本要素: 1. 按钮触发函数为 ...

  9. ffmpeg一些笔记: 代码调试数据

    1.AAC,MP3他的解码数据格式不支持,程序中给的是这个AV_SAMPLE_FMT_FLTP,  Screen-Cpature-Recoder的codec-id为AV_CODEC_RAW_VIDEO ...

  10. appium模拟键盘事件

    原方法: 1 def press_keycode(self, keycode, metastate=None): 2 """Sends a keycode to the ...