程式設計師經典面試題,消息隊列的作用,你能說出幾個?

2020-12-08 沙茶敏碎碎念

今年疫情嚴峻,希望早日控制住,有不少的朋友都打算年後找份新的工作,正好趁著這個時候好好學習,提升下自己。今天我們來聊一聊消息隊列的作用。消息隊列,相信大家都不陌生,Kafka、RMQ都是大家常用的隊列,也是程式設計師面試中的一個常見的題目。

進行削峰,減少並發

數據在後臺各個系統中流轉就跟流水線上的工人一樣,如果前面的工人幹得非常快,那麼工作就會不停地堆積,很多零件就堆積著等著下面的工人解決。如果請求一直堆積著得不到處理,用戶就只能夠一直等待,會有不好的體驗,同時,因為任務堆積,總是需要佔用內存、連接數等資源,就容易引發服務雪崩。

所以,對一些實時性要求不高的請求,我們通常可以採用異步進行削峰。一個常見的例子,在電商系統中,當用戶下單並完成支付的時候,我們通常會去通知商家的後臺,告訴他們可以發貨了。但是不同的商家的技術良莠不齊,有些速度真是跟蝸牛一樣,這個時候我們這可以採用異步的方式,使用消息隊列,慢慢地進行通知。

系統解耦

當我們開始開發一個系統的時候,邏輯總是比較清晰跟簡單,隨著需求的迭代,我們會發現系統越來越複雜,如果開發的程式設計師能力不足的話,我們會發現系統會越來越混亂,最後甚至出現一個方法幾千行代碼的情況,那麼對於一個越來越複雜地系統,我們怎麼進行系統的解耦呢?

在一個電商系統中,當我們完成一次交易的時候,遠遠沒有想像中那麼地簡單,我們通常需要通知倉庫或者通知商家,讓他們接受訂單,儘快發貨。同時,我們可能要通知積分系統,給用戶下發一定的交易積分。可能這個用戶是通過分銷過來購買的,需要通知分銷系統,創建分銷訂單,以便後面的結算。一次簡單的交易過後,我們可能要同時數十個系統,像阿里巴巴的天貓淘寶,可能完成一次交易,甚至要通知100個系統。如果我們在我們的交易流程裡面,逐個系統逐漸通知,那麼必然會帶來系統緩慢的問題,所以我們可以使用消息隊列,每次交易成功後發布一條消息,讓其他系統去訂閱這條消息。就可以做到系統的解耦了。

延遲處理

在程序設計中,延遲任務也是常有的事情。例如用戶創建一次訂單之後,可能沒有支付。我們可以在創建訂單25分鐘之後去提醒用戶,告訴他有筆訂單未支付,萬一用戶支付了。豈不是美滋滋。一些消息隊列提供了延遲隊列功能,例如RabbitMQ,我們可以利用其延遲的特性,非常簡單地實現這個功能。

當然,我們也可以使用其他方法,例如每一分鐘掃描一次資料庫等等。歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續嘮嗑的動力。

相關焦點

  • 10月阿里最新38道Java面試題解析(MyBatis+消息隊列+Redis)
    MyBatis面試題一、談談你對 MyBatis 的理解?1.
  • 阿里螞蟻金服Java程式設計師面試的11個問題,你會幾個呢?
    此前,w3cschool app開發者頭條上分享了各種的名企程式設計師面經。比如阿里巴巴java面經、小米java面經、網易java面經等,吸引了大多數的程式設計師們的圍觀。在分享螞蟻金服Java程式設計師面經前,不妨來看下Java程式設計師面試時要注意3大要點:0、重視基礎在面試之前,有必要將基礎的知識點重新過一遍,比如並發優缺點、內存可見性、鎖、同步、線程池框架等。
  • 網易有道andorid程式設計師兩輪面試,這些問題你能答上幾個?
    引來了不少安卓開發程式設計師的圍觀,大家認為這些面試題難度有點高。  1、思維方式不受安卓開發局限  安卓程式設計師一般是熟悉安卓API的Java程式設計師。  但是,你一定不能把自己思維局限於安卓開發,一個牛逼的安卓程式設計師還需要學習,服務端、Linux底層、framework層、jvm等。
  • 2019年最新PHP經典面試題及答案,PHP程式設計師必看
    源 / php中文網      源 / www.php.cn2019年最新PHP經典面試題及答案,PHP程式設計師必看.1、用最少的代碼寫一個求3值最大值的函數.echo getenv('REMOTE_ADDR');echo getenv('SERVER_ADDR');echo gethostbyname('<a href="http://www.baidu.com/">www.baidu.com</a>');6、 error_reporting(2047)什麼作用
  • 棧和隊列的區別是啥?那些有關程式設計師的笑話
    我又來了,送上一波有關程式設計師的笑話,現在開始:1、話說一個同事去面試,面試官司問他:「你一共才工作一年,你這三年的工作經驗是哪來的?」程式設計師:「加班!!!」2、一個程式設計師要了三個孩子,起個什麼名字好呢,最後名字定下來了,分別叫Ctrl,Alt和Delete。3、殺一個程式設計師不需要用槍,改三次需求就可以了。這不得不讓我想起需求方一而再,再而三的改需求,你們有什麼好的辦法嗎?
  • 偶然得到「程式設計師代碼指南」,30天吃透,算法與數據結構怕個毛?
    這是一本程式設計師而試寶典!書中對IT名企代碼面試各類題目的最優解進行了總結,並提供了相關代碼實現。針對當前程式設計師面試缺乏權威題目匯總這一-痛點, 本書選取將近200道真實出現過的經典代碼面試題,幫助廣大程式設計師的面試準備做到萬無-失。「刷」完本書後,你就是「題王」!
  • 優先級隊列(頭條面試題)
    算法面試題優先級隊列,不同於先進先出隊列,其對每一個元素指定了優先級,一般情況下,出隊時,優先級越高的元素越先出隊。問題(頭條一面面試題)實現一個優先級隊列,此隊列具有enqueue(val,prior)和dequeue()兩種操作,分別代表入隊和出隊。
  • 程式設計師面試過關必備的5大網站,你用過幾個?
    在「金三銀四」人才招聘的高峰期,有的程式設計師拿到了心儀的offer。但是,也有部分程式設計師面試掛掉了,暫時還找不到工作。其實,要順利通過面試還是非常有必要去刷一些編程面試題,認識一些面試指南。下面w3cschool給程式設計師小夥伴們推薦5大面試相關的網站,幫助你順利通過各種面試。0、LeetCode有不少的程式設計師都會用LeetCode刷面試題。比如投簡歷期間,為了讓自己編程有狀態,一天有空刷個2-3題。
  • 淺入淺出消息隊列
    高中的時候,每節自習課都會有人零零散散的找老師問問題,一開始就一兩人還好,後來漸漸的人多了,老師也煩了,你說我這上了一天的課難得晚上可以看自習休息會,這幫小崽子還一個個這麼折騰人。於是老師決定讓同學們把需要提的問題寫在紙上,下自習後交給課代表,然後老師再從課代表那取出要問的問題,然後再一個個解決。
  • 208 個最常見 Java 面試題全解析
    最近正值春招,一直在給公司招聘 Java 程式設計師,我從 2015 年做 TeamLeader 開始就習慣性地收集平時遇到的 Java 技術問題或周圍朋友見過的面試題,經過不斷篩選,終於凝練成一套實用的小題庫。
  • JavaScript同步、異步、回調執行順序之經典閉包setTimeout面試題分析
    有一道經典的面試題:for (var i = 0; i < 5; i++) {    setTimeout(function() {        console.log('i: ',i);    }, 1000);} console.log(i); //
  • Java 程式設計師必須掌握的 8 道數據結構面試題你會幾道?
    棧、隊列等其他數據結構均由數組演變而來。下圖是一個包含元素(1,2,3和4)的簡單數組,數組長度為4。每個數據元素都關聯一個正數值,我們稱之為索引,它表明數組中每個元素所在的位置。大部分語言將初始索引定義為零。關注Java技術棧微信公眾號,回復"面試"獲取更多博主精心整理的面試題。
  • 新手程式設計師進階之路:10個學習網站,告訴你刷題怎麼選擇?
    對於新手、進階的程式設計師來說,刷題能夠讓你的編程能力會得到一個質的飛躍。但也不能盲目刷題,發現自身最薄弱的環節,才能學以致用,以下推薦滿足你任何面試和學習需求。
  • Java 最常見的 200+ 面試題:面試必備
    聊回面試題這件事,這份面試清單原本是我們公司內部使用的,可到後來有很多朋友在微信上聯繫到我,讓我幫他們找一些面試方面的資料,而且這些關係也不太好拒絕,一呢,是因為這些找我,要面試題的人,不是我的好朋友的弟弟妹妹,就是我的弟弟妹妹們;二呢,我也不能馬馬虎虎的對付,受人之事忠人之命,我也不能辜負這份信任。
  • 好程式設計師Python教程分享常見的Python面試題
    好程式設計師Python教程分享常見的Python面試題,程式設計師面試難免會需要進行筆試,筆試是考驗程式設計師基礎功底的重要環節,根據很多小夥伴的面試反饋,今天總結分享了一些常見的Python面試題,想要看Python面試是不是可以順利通過,這些常見的Python面試題你應該看看。
  • 程式設計師辭職去面試,反問面試官15個技術題,領導:搞錯了吧
    職場的中每個人應該都經歷過面試,大部分都有一種懷著忐忑不安的心情去接受拷問的感覺,當然也有一部分面試者是自信滿滿、胸有成竹的。一般我們去參加面試,都是老老實實耐心等待著面試官問我們問題,然後在大腦的飛速運轉下給出你自認為滿意的答案。
  • 2019 最新 200 道 Java 面試題
    ,我做了大量的「功課」,首先我研究了幾乎所有大廠的面試題,還和負責招聘工作的幾個朋友,詳細的探討了 Java 面試所要涉及的知識點,於是就有了今天大家看到的這 200 多道面試題。原因二:節省招聘雙方彼此的時間,有些來公司面試人,無論是有幾年工作經驗的還是剛畢業的,就連這些最基礎的面試題都搞不定,這確實讓人很遺憾。常言道「一屋不掃何以掃天下」,也是同樣的道理,如果連基礎的概念都搞不明白,又怎麼讓面試官相信你能寫出高質量的程序呢?與其浪費彼此的時間,還不如花點時間把自己的基礎知識掌握牢固。
  • 【精選乾貨】研發麵試最常用的10大算法,你遇到過幾個?
    面試也是一門學問,在面試之前做好充分的準備則是成功的必須條件,而程式設計師在代碼面試時,常會遇到編寫算法的相關問題,比如排序、二叉樹遍歷等等。在程式設計師的職業生涯中,算法亦算是一門基礎課程,尤其是在面試的時候,很多公司都會讓程式設計師編寫一些算法實例,例如快速排序、二叉樹查找等等。
  • JavaScript面試的10個經典面試題
    JavaScript面試的10個經典面試題 工程師3 發表於 2018-04-20 15:50:00 對大部分公司來說,招聘技術人員這種事情,管理層就應該放手交給技術團隊,只有他們才能夠準確地判斷應聘者的技術實力
  • 這份GitHub上爆火的算法面試筆記,助你圓滿大廠夢
    前言Github作為程式設計師們的後花園,一直以來都是程式設計師最喜歡逛逛、學習的地方,小編也不例外,最近看到一份對標BAT等一線大廠的算法面試筆記,已經標星68+K了,很是驚訝,看了一下,覺得知識點整理得非常的詳細,也不愧能獲得這麼多星,資料已被整理好,發放福利給朋友們!