消息隊列面試場景

消息隊列面試場景

 

面試官:你好。

候選人:你好。

(面試官在你的簡歷上面看到了,呦,有個亮點,你在項目裏用過 MQ,比如說你用過 ActiveMQ

面試官:你在系統裏用過消息隊列嗎?(面試官在隨和的語氣中展開了面試)

候選人:用過的(此時感覺沒啥)

面試官:那你說一下你們在項目裏是怎麼用消息隊列的?

候選人:巴拉巴拉,“我們啥啥系統發送個啥啥消息到隊列,別的系統來消費啥啥的。比如我們有個訂單系統,訂單系統每次下一個新的訂單的時候,就會發送一條消息到 ActiveMQ 裏面去,後臺有個庫存系統負責獲取消息然後更新庫存。”

(部分同學在這裏會進入一個誤區,就是你僅僅就是知道以及回答你們是怎麼用這個消息隊列的,用這個消息隊列來幹了個什麼事情?)

面試官:那你們爲什麼使用消息隊列啊?你的訂單系統不發送消息到 MQ,直接訂單系統調用庫存系統一個接口,咔嚓一下,直接就調用成功,庫存不也就更新了。

候選人:額。。。(楞了一下,爲什麼?我沒怎麼仔細想過啊,老大讓用就用了),硬着頭皮胡言亂語了幾句。

(面試官此時聽你楞了一下,然後聽你胡言亂語了幾句,開始心裏覺得有點兒那什麼了,懷疑你之前就壓根兒沒思考過這問題)

面試官:那你說說用消息隊列都有什麼優點和缺點?

(面試官此時心裏想的是,你的 MQ 在項目裏爲啥要用,你沒怎麼考慮過,那我稍微簡單點兒,我問問你消息隊列你之前有沒有考慮過如果用的話,優點和缺點分別是啥?)

候選人:這個。。。(確實平時沒怎麼考慮過這個問題啊。。。胡言亂語了)

(面試官此時心裏已經更覺得你這哥兒們不行,平時都沒什麼思考)

面試官KafkaActiveMQRabbitMQRocketMQ 都有什麼區別?

(面試官問你這個問題,就是說,繞過比較虛的話題,直接看看你對各種 MQ 中間件是否瞭解,是否做過功課,是否做過調研)

候選人:我們就用過 ActiveMQ,所以別的沒用過。。。區別,也不太清楚。。。

(面試官此時更是覺得你這哥兒們平時就是瞎用,根本就沒什麼思考,覺得不行)

面試官:那你們是如何保證消息隊列的高可用啊?

候選人:這個。。。我平時就是簡單走 API 調用一下,不太清楚消息隊列怎麼部署的。。。

面試官:如何保證消息不被重複消費啊?如何保證消費的時候是冪等的啊?

候選人:啥?(MQ 不就是寫入&消費就可以了,哪來這麼多問題)

面試官:如何保證消息的可靠性傳輸啊?要是消息丟失了怎麼辦啊?

候選人:我們沒怎麼丟過消息啊。。。

面試官:那如何保證消息的順序性?

候選人:順序性?什麼意思?我爲什麼要保證消息的順序性?它不是本來就有順序嗎?

面試官:如何解決消息隊列的延時以及過期失效問題?消息隊列滿了以後該怎麼處理?有幾百萬消息持續積壓幾小時,說說怎麼解決?

候選人:不是,我這平時沒遇到過這些問題啊,就是簡單用用,知道 MQ 的一些功能。

面試官:如果讓你寫一個消息隊列,該如何進行架構設計啊?說一下你的思路。

候選人:。。。。。我還是走吧。。。。


這其實是面試官的一種面試風格,就是說面試官的問題不是發散的,而是從一個小點慢慢鋪開。比如說面試官可能會跟你聊聊高併發話題,就這個話題裏面跟你聊聊緩存、MQ 等等東西,由淺入深,一步步深挖

其實上面是一個非常典型的關於消息隊列的技術考察過程,好的面試官一定是從你做過的某一個點切入,然後層層展開深入考察,一個接一個問,直到把這個技術點刨根問底,問到最底層。

 

爲什麼使用消息隊列?消息隊列有什麼優點和缺點?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什麼優點和缺點?

如何保證消息隊列的高可用?

如何保證消息不被重複消費?即如何保證消息消費的冪等性

如何保證消息的可靠性傳輸?即如何處理消息丟失的問題

如何保證消息的順序性?

如何解決消息隊列的延時以及過期失效問題?消息隊列滿了以後該怎麼處理?有幾百萬消息持續積壓幾小時,說說怎麼解決?

如果讓你寫一個消息隊列,該如何進行架構設計啊?說一下你的思路。

 

來源:“創享視界”,創享視界(creativeview.cn)是一個帶動全民顛覆八小時工作制,通過投稿把自己的創意智慧變現的方式創造被動收入,從而實現財務自由的平臺。我們相信,創新思維不僅有助於打造更出色的產品,還可以讓世界變得更美好,讓人人受益。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章