頭一次見問這么多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 支持網絡壓縮,可以減少網絡傳輸的數據量,提高系統的性能和并發能力。
  6. 說一下什么是零拷貝

    零拷貝是一種技術,主要通過減少數據在內存中的復制次數來提高數據的傳輸效率。在 Kafka 中,零拷貝技術主要通過使用 mmap 函數實現。mmap 函數將文件映射到內存中,使得應用程序可以直接訪問文件內容,而不需要進行數據的復制。這樣可以減少數據在內存中的復制次數,提高數據的傳輸效率。

  7. 為什么選擇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 的高并發處理的問題,不知道這次的面經有沒有給你帶來哪些學習要點呢?也希望通過分享這位面試者的經歷,能給正在求職或致力于技術提升的你帶來啟發和幫助。

堅定不移,聽話照做,按部就班,早日上岸!

關注我,免費領面經,升職加薪,備注:面經。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95589.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自底向上了解CPU的運算

文章目錄 引言 CPU如何實現邏輯運算 NMOS和PMOS 基于MOS管組合下的邏輯門運算 邏輯運算下運算的實現 ALU的誕生 CPU的誕生 關于二進制運算的研究 十進制轉二進制基礎換算 為什么負數要使用補碼進行表示 為什么反碼就能解決正負數相加問題,我們還需要用補碼來表示負數呢? 小數…

apache poi與Office Open XML關系

以下內容來自AI https://ecma-international.org/publications-and-standards/standards/ecma-376/ 官方規范 https://poi.apache.org/components/oxml4j/index.html java中針對Office Open XML的實現 Apache poi中各個組件 https://poi.apache.org/components/index.html …

S32K328上芯片內部RTC的使用和喚醒配置

1:RTC介紹 1.1 RTC基礎功能介紹 參考《S32K3xx Reference Manual》,S32K328芯片內部自帶RTC功能,并且支持從低功耗狀態下喚醒設備;1.2 RTC電源介紹 由以下三張圖可知 1:RTC由V11供電,V11依賴外部V15供電&am…

【Python】數據可視化之分類圖

目錄 條形圖 箱形圖 散點圖 分簇散點圖 小提琴 分簇小提琴 條形圖 條形圖是一種直觀的圖表形式,它通過不同長度的矩形條(即“條形”)來展示數值變量的中心趨勢估計值,其中每個矩形的高度直接對應于該組數據的某個中心量度&…

RabbitMQ模型詳解與常見問題

項目demo地址:https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ組件概念 1.1 Server:接收客戶端的連接,實現AMQP實體服務。 1.2 Connection:連接 應用程序與Server的網絡連接,TCP連接。 1.3 Channel&…

網絡:相比于HTTP,HTTPS協議到底安全在哪?

網絡:相比于HTTP,HTTPS協議到底安全在哪? 我們知道HTTPS也是一種應用層協議,它在HTTP的基礎上有一層加密,因為HTTP的數據傳輸都是以明文方式傳輸的,所以加密主要是為了防止數據在傳輸的時候被篡改 今天我…

AI 基礎設施新范式,百度百舸 5.0 技術深度解析

本文整理自 2025 年 8 月 29 日百度云智大會 —— AI 算力平臺專題論壇,百度智能云 AI 計算首席科學家王雁鵬的同名主題演講。大家下午好!昨天在主論壇,我們正式發布了百度百舸 AI 計算平臺 5.0,并展示了多項亮眼的性能數據。今天…

IO進程線程;多線程;線程互斥同步;互斥鎖;無名信號量;條件變量;0905

思維導圖多線程打印ABC運用無名面量 實現進程同步#include<myhead.h> //定義 無名信號量 sem_t sem1; sem_t sem2; sem_t sem3; //線程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 運動控制卡完全使用指南:從硬件部署到高階應用

固高 GTS-800 系列運動控制卡作為中端工業控制領域的標桿產品,以其 8-16 軸同步控制能力、豐富的插補功能和穩定的性能,廣泛應用于激光加工、PCB 制造、精密裝配等自動化設備中。本文將系統講解 GTS-800 的硬件架構、開發環境搭建、核心功能實現及工程實踐技巧,幫助工程師快…

STM32F103_Bootloader程序開發15 - 從Keil到vscode + EIDE + GCC的遷移實踐

導言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 鏈接腳本限制 Flash 區域 STM32 - Embedded IDE - GCC - 如何在工程中定義一段 NoInit RAM 內存 STM32 - Embedded IDE - GCC - 如何將編譯得到的.bin固件添加CRC32校驗…

HTTP協議——理解相關概念、模擬實現瀏覽器訪問自定義服務器

文章目錄HTTP協議理解相關概念HTTP相關背景知識認識URLHTTP協議在網絡通信的宏觀認識urlencode & urldecodeHTTP請求和應答的格式模擬實現瀏覽器訪問自定義服務器關于http requesthttp request的請求行——URI使用瀏覽器完成靜態資源的訪問常用的報頭屬性http response狀態…

【服務器】英偉達M40顯卡風冷方案心得

在之前的博文中&#xff0c;博主說到最近準備自己組裝一臺服務器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顧一部分AI機器學習的工作&#xff0c;于是博主就入手了一張英偉達Tesla M40的12G顯卡GPU。本來博主也糾結過是買M40還是M60&#xff0c;后來在網上看到說M60看…

Java中的鎖升級機制

目錄 核心思想 Java對象頭&#xff08;Object Header&#xff09;與Mark Word 鎖升級的詳細步驟 1. 無鎖&#xff08;No Lock&#xff09; 2. 偏向鎖&#xff08;Biased Locking&#xff09; 3. 輕量級鎖&#xff08;Lightweight Lock&#xff09; 4. 重量級鎖&#xff…

Scikit-learn Python機器學習 - 特征預處理 - 標準化 (Standardization):StandardScaler

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

windows下wsl2 ubuntu開發配置

配置環境變量# 設置方式 命令/文件 生效范圍 適用場景 # 臨時 export FORCE_UNSAFE_CONFIGURE1 當前終端 臨時編譯軟件 # 用戶級永久 ~/.bashrc或~/.profile 當前用戶 長期使用&#xff08;單用戶&#xff09; # 系統級永久 /etc/environment或/…

網絡編程 05:UDP 連接,UDP 與 TCP 的區別,實現 UDP 消息發送和接收,通過 URL 下載資源

一、概述 記錄時間 [2025-09-02] 前置文章&#xff1a; 網絡編程 01&#xff1a;計算機網絡概述&#xff0c;網絡的作用&#xff0c;網絡通信的要素&#xff0c;以及網絡通信協議與分層模型 網絡編程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分類&#xff0c;通過 …

告別線纜束縛!AirDroid Cast 多端投屏,讓分享更自由

AirDroid Cast 是一款功能強大的跨平臺投屏應用&#xff0c;能夠輕松實現手機、電腦之間以及手機之間的屏幕共享與控制。無論是工作演示、在線教學還是游戲直播&#xff0c;AirDroid Cast 都能提供流暢穩定的投屏體驗。 1. 下載與安裝 您可以通過以下鏈接下載 AirDroid Cast&…

從零開始學大模型之大模型訓練流程實踐

大模型訓練流程實踐 本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型開發 學習視頻/籽料/面試題 都在這>>Github<< >>Gitee<< 6.1 模型預訓練 在上一章&#xff0c;我們逐步拆解了 LLM 的模型結構及訓練過程&#xff0c;從零手…

一文從零部署vLLM+qwen0.5b(mac本地版,不可以實操GPU單元)

第一步&#xff1a;下載anaconda for mac https://zhuanlan.zhihu.com/p/350828057 知乎保姆級教程 https://www.anaconda.com/docs/getting-started/anaconda/install#macos-linux-installation 下載地址 第二步&#xff1a;部署vllm的虛擬環境 https://www.53ai.com/news/Op…

Go語言Range用法全解析

引言Go 語言中的 range 關鍵字是集合遍歷的核心語法結構&#xff0c;它提供了一種高效且類型安全的方式來迭代各種數據結構。range 的設計完美體現了 Go 語言的工程哲學 - 通過最小化的語法提供最大化的功能。標準庫中的許多關鍵組件&#xff08;如 sync.Map、bufio.Scanner 等…