1. 程式人生 > >以訊息對列為例:淺談面試123

以訊息對列為例:淺談面試123

  在面試中,面試官首先先看了一下你的簡歷。(哎呀,我擦。正好了現在專案中正好用到MQ來了省的再上手了。先看看掌握的咋樣。)

 

面試官:你在系統中使用過訊息佇列嗎?(由淺入深慢慢來別給這小夥子太大壓力了)

 

候選人:用過啊!(不假思索的就說了出來)

 

面試官:那你講一下在你們的系統中是怎麼用訊息佇列的?

 

候選人:我們做的某某系統將某某型別的訊息放到佇列中,其他系統進行消費啥的。(這裡很多同學的回答中只涉及到專案中使用訊息佇列做了什麼,自己是怎麼使用訊息佇列的。

比如:我們有個訂單系統,訂單系統會每次下一個新的訂單的時候,就會發送時一條訊息到ActiveMQ裡面去,後臺有個庫存系統負責獲取了訊息然後更新庫存。)

 

面試官:那你們為什麼要使用訊息佇列啊?(擦,獲取訊息就更新庫存啦?)

 

候選人:……,架構師搭建的,所以……(沒考慮這個問題啊!老大讓用啥就用啥唄,可憐這也是為什麼漲不了薪資的原因啊!)

 

面試官:(這小子行不行啊!連這些問題都沒考慮過,感覺沒啥潛力呢?再看看基礎掌握的咋樣。)

 

面試官:那你講一下訊息佇列都有那些優點和缺點呢?

 

候選人:這個……(擦,以前也沒考慮過啊!不就是進行訊息的同步嗎?雖然知道這樣講不行,死馬當作活馬醫吧!開始語無倫次起來了。)

 

面試官:(得了,有點夠嗆啊!都開始胡謅了!自己使用過的技術都沒想過。)

 

面試官:那kafka、activemq、rabbitmq、rocketmq都有什麼區別呢?(在專案使用中沒想過,總對這些常用訊息對列做過對比吧!)

 

候選人:我們專案中只用到了activemq,其他的暫時還不太瞭解。(有點臉紅)

 

面試官:(完犢子,這小子啥都沒想過啊!這些年都是怎麼過來的啊!)

 

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

 

候選人:這個……我平時就是簡單走api呼叫一下,不太清楚訊息佇列怎麼部署的……

 

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

 

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

 

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

 

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

 

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

 

候選人:順序性?什麼意思?我為什麼要保證訊息的順序性?

 

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

 

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

 

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

 

候選人:(我只是在專案中用過,只是用過……想哭的趕腳)

 

  以上,是面試的一個過程。大家有沒有發現自己的問題呢?

  假如,在面試過程中的確遇到自己不會的問題了怎麼辦?總不能讓這場面試草草十幾分鍾結束戰鬥吧!

  這個時候大家不妨嘗試轉移面試官的話題。更甚於告訴面試官訊息佇列我只是在專案中應用了,redis這塊我瞭解的更深入一點,將面試官所想要問的問題轉移到自己所準備的問題上來,至少不至於一敗塗地。

 

  一般我在面試過程中我會就一個點由淺入深逐步進行拓展,從而更好的瞭解到你對知識點的掌握程度。所以不妨就這樣的一種形式來準備自己的面試話術。即便面試官真的只是問一下你對MQ的瞭解而你將他說成了一套理論。那麼,這也會成為你的加分項。

 

  最後,我再加上幾個建議!

  1. MQ的概念是怎樣的?
  2. 我為什麼要使用MQ,使用它解決了什麼問題?
  3. 在使用MQ的過程中我遇到了什麼問題?
  4. 為什麼會出現這些問題呢?
  5. 針對於這些問題我是如何思考,如何解決的呢?
  6. 通過對它的使用,給我帶來了怎樣的收穫和提高?

 

  希望,能夠對你有所幫助!