8.23美團日常實習(xí)一面,無八股無算法。面試官人很好很溫柔,我聽不懂也很細心的給我反復(fù)講場景,引導(dǎo)我回答問題可我太菜了,感覺涼了。圍繞簡歷我寫的四個職責(zé)來問的,因此分為四塊1.打開項目(IDEA)講解一下責(zé)任鏈和決策樹是如何代碼實現(xiàn)的。場景問題:如果有一個業(yè)務(wù)a需要調(diào)用b,c,b,c又需要分別調(diào)用d,e和f,g,你會如何設(shè)計去實現(xiàn)這個邏輯(沒太弄明白,我就說我項目的是決策樹,單路的,后面不了了之)2.代碼講解抽獎算法如何實現(xiàn)的以空間換時間,為什么要這樣做?場景問題:設(shè)計一個類,用來解決任務(wù)分配服務(wù)器的。有多個服務(wù)器,不同服務(wù)器內(nèi)存大小不同,設(shè)計一個類來對任務(wù)進行分配,自己發(fā)揮設(shè)計輸入輸出。(直接idea現(xiàn)場編寫,沒寫完后面講了一下思路)3.redis是如何使用的?電商場景下超賣問題如何解決?如何用代碼來實現(xiàn)的延遲隊列?場景問題:如何實現(xiàn)一個類似支付時間十分鐘的定時任務(wù)?我:用延遲隊列或者設(shè)置redis過期時間,定時任務(wù)一直掃描面試官:這兩個方案無如何做到每個任務(wù)過期實時響應(yīng)?我:應(yīng)該無法實現(xiàn)~(不知道)面試官:而且定時任務(wù)每次都去遍歷全部數(shù)據(jù)代價太大,是否有更好的方案我:按照時間排序的隊列,隊頭是最先過期的。面試官:對于實時顯示時間倒計時遍歷隊列時間消耗問題,是否有更好的方案?我:二叉樹中的大小頂堆。(這里是面試官一直引導(dǎo)的)4.看你使用到了MQ,沒啥好問的,先說一下你為什么用吧。場景問題:面試官:如果我有一個隊列存儲的信息需要被多個消費者同時消費,如何保證同時消費以及順序消費問題?我:每個業(yè)務(wù)對接一個隊列,交換機向需要信息的隊列發(fā)送數(shù)據(jù)面試官:實際場景不會這么做,代價太大。我:那就每個業(yè)務(wù)通過一個變量記錄讀取隊列的offset或者ID之類的。面試官:如何存儲這個變量能夠做到崩潰恢復(fù)?我:從MySQL猜到redis,最后說的本地內(nèi)存。面試官問我:了不了解zookeeper,可以了解一下面試結(jié)束。 #Java面經(jīng)# #美團# #日常實習(xí)#