美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

進入3月,雖然疫情還未完全結束,但擋不住大家都得找工作啊!於是我決定開個新坑,給小夥伴們更新


互聯網大廠真題+參考答案


Emma出手,必有料!希望這個系列能幫助正在準備春招的各位朋友,早日找到適合的坑位,共渡超級水逆的2020。

美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

最近,餓了麼和口碑合併的消息被熱議,雖然阿里還沒出聲證實,不過可預見到的是,這波調整之後,資源將被集中。阿里和美團之間勢必有一場幹架!

美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

不過目前美團仍然佔據了約70%的市場份額,其日活是餓了麼+口碑總和的5倍!大眾點評在實力上仍然碾壓餓了麼。因此,對看工作機會的朋友來說,美團依舊是值得抓住的機會。


廢話不多說,直接進乾貨:


1


如果線上某臺虛機CPU Load過高,該如何快速排查原因?只介紹思路和涉及的Linux命令即可 。


參考答案:

造成cpu load過高的原因:Full gc次數的增大、代碼中存在Bug(例如死循環、正則的不恰當使用等)都有可能造成cpu load 增高。

1. jps -v:查看java進程號

2. top -Hp [java進程號]:查看當前進程下最耗費CPU的線程

3. printf "%x\\n" [步驟2中的線程號]:得到線程的16進製表示

4. jstack [java進程號] | grep -A100 [步驟3的結果]:查看線程堆棧,定位代碼行。參考:如何使用JStack分析線程狀態


2


請簡要描述MySQL數據庫聯合索引的命中規則,可舉例說明。


參考答案:

1. MySQL聯合索引遵循最左前綴匹配規則,即從聯合索引的最左列開始向右匹配,直到遇到匹配終止條件。例如聯合索引(col1, col2, col3), where條件為col1=`a` AND col2=`b`可命中該聯合索引的(col1,col2)前綴部分, where條件為col2=`b` AND col3=`c`不符合最左前綴匹配,不能命中該聯合索引

2. 匹配終止條件為範圍操作符(如>, 1 AND col3=`c`, 在col2列上為範圍查詢,匹配即終止,只會匹配到col1,不能匹配到(col1, col2, col3).

3. where條件中的順序不影響索引命中。例如聯合索引(col1, col2, col3), where條件為col3=`c` AND col2=b AND col1=`a`, MySQL優化器會自行進行優化,可命中聯合索引(col1, col2, col3).


3


請描述https的請求過程。


參考答案:

1. 客戶端向服務器發起HTTPS請求,連接到服務器的443端口;

2. 服務器端有一個密鑰對,即公鑰(即數字證書)和私鑰,是用來進行非對稱加密使用的,服務器端保存著私鑰,不能將其洩露,公鑰可以發送給任何人;

3. 服務器將自己的公鑰發送給客戶端;

4. 客戶端收到服務器端的公鑰之後,檢查其合法性,如果發現發現公鑰有問題,那麼HTTPS傳輸就無法繼續,如果公鑰合格,則客戶端會生成一個客戶端密鑰,然後用服務器的公鑰對客戶端密鑰進行非對稱加密成密文,至此,HTTPS中的第一次HTTP請求結束;

5. 客戶端發起HTTPS中的第二個HTTP請求,將加密之後的客戶端密鑰發送給服務器;

6. 服務器接收到客戶端發來的密文之後,會用自己的私鑰對其進行非對稱解密,解密之後的明文就是客戶端密鑰,然後用客戶端密鑰對數據進行對稱加密,這樣數據就變成了密文;

7. 然後服務器將加密後的密文發送給客戶端;

8. 客戶端收到服務器發送來的密文,用客戶端密鑰對其進行對稱解密,得到服務器發送的數據。這樣HTTPS中的第二個HTTP請求結束,整個HTTPS傳輸完成。

4


什麼是事務傳播行為?你知道Spring事務中都有哪些傳播類型嗎?如何使用/指定傳播類型?


參考答案:

1. 事務傳播用於描述當一個由事務傳播行為修飾的方法被嵌套入另外一個方法時,事務如何傳播。常用於定義發生事務嵌套時,如何繼續執行。

2. Spring 中共定義了7種事務傳播類型,明細如下表, 需答出3~4種常見類型即可:

a) PROPAGATION_REQUIRED:當前沒有事務時開啟新事務,如果有則加入;

b) PROPAGATION_REQUIRES_NEW:強制開啟新事務,掛起已有事務(如有);

c) PROPAGATION_SUPPORTS:當前有事務時加入, 沒有則以非事務方式執行;

d) PROPAGATION_NOT_SUPPORTED:以非事務方式執行, 掛起當前事務(如有);

3. 可以在註解或者XML中指定傳播類型, 如 “@Transactional(Propagation=xxx)”


5


IO設計中Reactor 和 Proactor 區別。


參考答案:

1.Reactor被動的等待指示事件的到來並作出反應,有一個等待的過程,做什麼都要先放入到監聽事件集合中等待handler可用時再進行操作,實現相對簡單,對於耗時短的處理場景比較高效,但Reactor處理耗時長的操作會造成事件分發的阻塞,影響到後續事件的處理。

2.Proactor直接調用異步讀寫操作,調用完後立刻返回,實現了一個主動的事件分離和分發模型;這種設計允許多個任務併發的執行,從而提高吞吐量;並可執行耗時長的任務(各個任務間互不影響),Proactor性能更高,能夠處理耗時長的併發場景,但Proactor實現邏輯複雜;依賴操作系統對異步的支持,目前實現了純異步操作的操作系統少,實現優秀的如windows IOCP,但由於其windows系統用於服務器的侷限性,目前應用範圍較小;而Unix/Linux系統對純異步的支持有限,應用事件驅動的主流還是通過select/epoll來實現。

6


迴文子串:給定一個字符串,你的任務是計算這個字符串中有多少個迴文子串(迴文串是一個正讀和反讀都一樣的字符串)。具有不同開始位置或結束位置的迴文串,即使是由相同的字符組成,也會被計為是不同的子串。


參考答案:

考慮如果substring(i,j)如果是迴文串,那麼str[i]和str[j]一定相同,並且一定滿足以下兩個條件之一

1.substring(i+1,j-1)也是迴文串

2.j-i<=2,即substring(i,j)長度<=2

那麼我們就只需要順著這個思路dp就行了,複雜度O(n^2)


Java:

美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

Python:

美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

C++:

美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

以上就是今天的快問快答+校招算法題啦。這個系列我在之後將持續更新,如果大家有什麼特別想要的題目,請在留言區告訴我!Emma儘快去挖掘一下~


既然本期咱們說到了美團面試題,貼心如我,最後當然還會給大家送上福利:


美團求職資料包


美團點評2020年校招筆試題(系統開發方向)|快問快答-真題篇

領取方式

私信Emma,回覆美團~即可領取【美團求職資料包】


分享到:


相關文章: