成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

面試官:系統(tǒng)需求多變時如何設(shè)計?

zoomdong / 1695人閱讀

摘要:面試官我想問個問題哈,項目里比較常見的問題面試官我現(xiàn)在有個系統(tǒng)會根據(jù)請求的入?yún)ⅲ龀霾煌瑒幼?。但是,這塊不同的動作很有可能是會發(fā)生需求變動的,這塊系統(tǒng)你會怎么樣設(shè)計面試官實際的例子現(xiàn)在有多個第三方渠道,系統(tǒng)需要對各種渠道進行訂單歸因。

面試官:我想問個問題哈,項目里比較常見的問題

面試官我現(xiàn)在有個系統(tǒng)會根據(jù)請求的入?yún)?,做出不同動作。但是,這塊不同的動作很有可能是會發(fā)生需求變動的,這塊系統(tǒng)你會怎么樣設(shè)計?

面試官實際的例子:現(xiàn)在有多個第三方渠道,系統(tǒng)需要對各種渠道進行訂單歸因。但是歸因的邏輯很有可能會發(fā)生變化,不同的渠道歸因的邏輯也不太一樣,此時系統(tǒng)里的邏輯相對比較復(fù)雜。

面試官如果讓你優(yōu)化,你會怎么設(shè)計?

候選者:我理解你的意思了

候選者:歸根到底,就是處理的邏輯相對復(fù)雜,if else的判斷太多了

候選者:雖然新的需求來了,都可以添加if else進行解決

候選者:但你想要的就是,系統(tǒng)的可擴展性和可維護性更強

候選者:想要我這邊出一個方案,來解決類似的問題

候選者:對吧?

面試官:嗯...

候選者:在這之前,一般上網(wǎng)搜如何解決 if else ,大多數(shù)都說是 策略模式

候選者:但是舉的例子又沒感同身受,很多時候看完就過去了

候選者:實際上,在項目里邊,用策略模式還是蠻多的,可能無意間就已經(jīng)用上了(畢竟面向接口編程嘛)

候選者:而我認(rèn)為,策略模式不是解決if else的關(guān)鍵

候選者:這個問題,我的項目里的做法是:責(zé)任鏈模式

候選者:把每個流程多帶帶抽取成一個Process(可以理解為一個模塊或節(jié)點),然后請求都會塞進Context中

候選者:比如,之前維護過一個項目,也是類似于不同的渠道走不同的邏輯

候選者:我們這邊的做法是:抽取相關(guān)的邏輯到Process中,為不同的渠道分配不同的責(zé)任鏈

候選者:比如渠道A的責(zé)任鏈?zhǔn)牵篧hiteListProcess->DataAssembleProcess->ChannelAProcess->SendProcess

候選者:而渠道B的責(zé)任鏈?zhǔn)牵篧hiteListProcess->DataAssembleProcess->ChannelBProcess->SendProcess

候選者:在責(zé)任鏈基礎(chǔ)之上,又可以在代碼里內(nèi)嵌「腳本」

候選者:比如在SendProcess上,內(nèi)置發(fā)送消息的腳本(腳本可以選擇不同的運營商進行發(fā)送消息)。有了「腳本」以后,那就可以做到對邏輯的改動不需要重啟就可以生效。

候選者:有人把這一套東西叫做「規(guī)則引擎」。比如,規(guī)則引擎中比較出名的實現(xiàn)框架「Drools」就可以做到類似的事

候選者:把易改動的邏輯寫在「腳本」上(至少我們認(rèn)為,腳本和我們的應(yīng)用真實邏輯是分離)

候選者:(腳本我這里指的是規(guī)則集,它可以是Drools的dsl,也可以是Groovy,也可以是aviator等等)

面試官:嗯...

候選者:在我之前的公司,使用的是Groovy腳本。大致的實現(xiàn)邏輯就是:有專門后臺對腳本進行管理,然后會把腳本寫到「分布式配置中心」(實時刷新),客戶端監(jiān)聽「分布式配置中心」所存儲的腳本是否有改動

候選者:如果存在改動,則通過Groovy類加載器重新編譯并加載腳本,最后放到Spring容器對外使用

候選者:我目前所負(fù)責(zé)的系統(tǒng)就是這樣處理 多變 以及需求變更頻繁的業(yè)務(wù)(責(zé)任鏈+規(guī)則引擎)

候選者:不過據(jù)我了解,我們的玩法業(yè)務(wù)又在「責(zé)任鏈」多做了些事情

候選者:「責(zé)任鏈」不再從代碼里編寫,而是下沉到平臺去做「服務(wù)編排」,就是由程序員去「服務(wù)編排后臺」上配置信息(配置責(zé)任鏈的每一個節(jié)點)

候選者:在業(yè)務(wù)系統(tǒng)里使用「服務(wù)編排」的客戶端,請求時只要傳入「服務(wù)編排」的ID,就可以按「服務(wù)編排」的流程執(zhí)行代碼

候選者:這樣做的好處就是:業(yè)務(wù)鏈?zhǔn)窃诤笈_配置的,不用在系統(tǒng)業(yè)務(wù)上維護鏈,靈活性更高(寫好的責(zé)任鏈節(jié)點可以隨意組合)

面試官:那我懂了

【對線面試官-移動端】系列 一周兩篇持續(xù)更新中!

【對線面試官-電腦端】系列 一周兩篇持續(xù)更新中!

原創(chuàng)不易??!求三連!!

更多的文章可往:文章的目錄導(dǎo)航

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/124539.html

相關(guān)文章

  • 三年前端,面試思考(頭條螞蟻美團offer)

    摘要:面試過程一共面試了四家美團新零售貝殼裝修螞蟻網(wǎng)商銀行頭條商業(yè)化面試結(jié)果美團螞蟻頭條貝殼因氣場不合沒有發(fā)。有些公司還是會考一些算法,比如美團頭條。也祝你找到心儀的工作小魚兒建了前端面試交流群,加群的同學(xué)可以同學(xué)的微信,備注面試進群即可 小魚兒本人985本科,軟件工程專業(yè),前端。工作三年半,第一家創(chuàng)業(yè)公司,半年。第二家前端技術(shù)不錯的公司,兩年半。第三家,個人創(chuàng)業(yè)半年??梢钥闯?,我是個很喜歡...

    EddieChan 評論0 收藏0
  • 三年前端,面試思考(頭條螞蟻美團offer)

    摘要:面試過程一共面試了四家美團新零售貝殼裝修螞蟻網(wǎng)商銀行頭條商業(yè)化面試結(jié)果美團螞蟻頭條貝殼因氣場不合沒有發(fā)。有些公司還是會考一些算法,比如美團頭條。也祝你找到心儀的工作小魚兒建了前端面試交流群,加群的同學(xué)可以同學(xué)的微信,備注面試進群即可 小魚兒本人985本科,軟件工程專業(yè),前端。工作三年半,第一家創(chuàng)業(yè)公司,半年。第二家前端技術(shù)不錯的公司,兩年半。第三家,個人創(chuàng)業(yè)半年??梢钥闯觯沂莻€很喜歡...

    shaonbean 評論0 收藏0
  • 掌握面試——彈出框的實現(xiàn)(一道題中包含布局/js設(shè)計模式)

    摘要:面試會進入下一個環(huán)節(jié)。如果在頁面中有多個按鈕,那么這個彈出窗要如何實現(xiàn)同上,根據(jù)之前的建議在回答問題之前要問清楚問題中模棱兩可的地方。是否觸發(fā)不同按鈕彈出的窗口現(xiàn)實的內(nèi)容不同。 這道面試題,當(dāng)初我面試的時候被問過兩次,因此比較深,此外,我記得還有設(shè)計模式的考察,所以,有深刻的體會。 面試題主要考察什么 面試不是個輕松的活,不管是對面試官還是面試者都一樣。對于面試官來說,別的先不管,首先...

    defcon 評論0 收藏0
  • 一個 16年畢業(yè)生所經(jīng)歷的 PHP 面試

    摘要:正確做法是給加索引,還有聯(lián)合索引,并不能避免全表掃描。 前言:有收獲的話請加顆小星星,沒有收獲的話可以 反對 沒有幫助 舉報三連 有心的同學(xué)應(yīng)該會看到我這個noteBook下面的其它知識,希望對你們有些許幫助。 本文地址 時間點:2017-11 一個16年畢業(yè)生所經(jīng)歷的php面試 一、什么是面試 二、面試準(zhǔn)備 1. 問:什么時候開始準(zhǔn)備? 2. 問:怎么準(zhǔn)備? 三、面試...

    dabai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<