美團後端開發一二面面經與一些經驗

在這裏插入圖片描述

一面 1h

自我介紹
主要使用語言:Golang、C++ or Java
Golang 和 C++ 的區別(GC、編譯快)
爲何 golang 的依賴分析簡單?(相似拓撲排序,每一個文件只需打包一次)
Golang 是怎麼管理內存的?(線程緩存,搜一下 tcmalloc)
內存回收是怎麼找到垃圾、怎麼回收?(分代回收、標記-清除等)mysql

Java map

底層結構(拉鍊法,擴容時轉紅黑樹)
map 何時擴容?負載因子是多少?
Java map 的線程安全實現(鎖、分段鎖、計數器)
計數器變量自己是否是有安全問題?volatile 的原理nginx

分段鎖底層是怎麼加鎖的?

鎖的方式有不少種,瞭解嗎?(不瞭解)
瞭解指令重排序嗎?(硬件層面 CPU 流水線、Java 語言層面)
Golang 會不會有內存泄露問題?爲何?若是出現這種問題要怎麼排查?(有,好比持續爲一個數組申請空間。profile 工具)golang

redis 若是內存滿了會不會有問題?內存淘汰算法瞭解嗎?(LRU、LFU、FIFO、RANDOM)
LRU 的實現思路(哈希表 + 雙向鏈表)
LFU 的實現思路 (哈希表 + 多個雙向鏈表,這裏直接搜 labuladong 公衆號文章)web

線程有哪幾種狀態?

線程池介紹,應用場景?(建立/銷燬線程是有開銷的,使用線程池複用線程資源,這個思想和鏈接池是同樣的)
登陸機器看過日誌嗎?awk 瞭解嗎?(這個命令常常被問,常見的題目是「找出 nginx 日誌中訪問量最多的前 10 個 IP 地址」)面試

另外本人整理收藏了20年多家公司面試知識點整理 ,以及各類Java核心知識點免費分享給你們,想要資料的話請點:215301149暗號CSDN。在這裏插入圖片描述redis

MySQL

索引結構?

爲何是 B+ 樹?
非彙集索引是 B 樹仍是 B+ 樹?(索引都是 B+ 樹)
回表查詢(InnoDB 的索引存的是主鍵。MyISAM 就不須要,由於它的索引直接存的是數據的地址)
聯合索引,最左匹配前綴
數據庫查詢 offset 很是大的時候會不會有問題算法

設計模式?結合以前的項目經歷,舉例應用場景
HTTP 和 HTTPS 的區別
RPC 和 HTTP 的區別
thrift 爲何能夠跨語言
算法題:一個小數,把它轉化爲念出來的格式,好比 1010.0023,輸出「一千零一十點零零二三」。這道題細節:
獲取浮點數 num 的整數部分和小數部分:int integer = int(num); double decimal = num - integer;
輸出小數部分每一位,個人思路是將小數部分除以 0.1,獲得第一位;而後將小數部分乘 10,保留小數部分。如此重複,直到小數部分爲 0。這裏一個問題是不能直接判斷小數部分是否爲 0,由於浮點數是一種不精確的表示法,a * 100 - int(a) 不必定就是 0。我選擇將其和一個很小的數 1e-6 比較,若是比這個數小,就視爲 0sql

其餘
以前實習經歷給你帶來哪些成長
我的的優點和劣勢
對以後的工做有什麼指望
平時怎麼學習的
當前有其餘公司的 offer 嗎
反問環節數據庫

二面 1h

自我介紹
實習經歷介紹,挑戰在哪裏,各項工做細節(約20分鐘)
服務穩定性,你參與了哪些工做?設計模式

如何提升服務穩定性?

RPC 框架(如 thrift)和服務化框架有什麼區別?(後者增***務化的一些工做,如服務註冊、發現等;前者只是爲了讓遠程過程調用像調用一個本地方法同樣)
數組和鏈表的區別

循環隊列,如何判斷隊滿?

Java 裏有哪些方式能夠提供一個線程(synchronized,runnable,不會)

Java 線程池瞭解嗎?有哪些核心參數?(不瞭解)
mysql 四個隔離級別
不可重複讀、幻讀分別是什麼問題
mysql 聯合索引的最左匹配原則的原理
使用聯合索引的時候,where 中的列的順序有要求嗎(沒有)
MVCC 是什麼?具體實現原理(版本號)
何時會改這個版本號(不知道)
間隙鎖 gap lock 據說過嗎(沒有)
redis 常見的數據結構
zset、string 提供了哪些方法?(都沒有用過,不瞭解 redis 基礎 api)

HTTP 和 TCP 分別是哪一層?這兩層的做用是什麼?

HTTP 請求頭的內容
GET 和 POST 的區別
cookie 和 session 的區別
多臺服務器之間如何共享 session(分佈式 session,redis 集羣)
常見的 Linux 命令
grep 的參數,如何查不包含關鍵字的行(-v)
Linux 文件權限的含義(所屬用戶權限、所屬組權限和其餘用戶權限;r 讀、w 寫、x 執行、- 無對應權限)
後續職業規劃 / 方向
你以爲你還有哪些方面須要提升
算法題:M*N 的矩陣,從左上角走到右下角,有幾種走法(這道題對應 LeetCode 62 不一樣路徑,其實就是組合數公式 C_{m+n}^m。這道題我被考了 3 次,比較高頻)
反問環節

總結

美團一共 2 輪技術面,1 輪 HR 面;我也見過 3 輪技術面的同窗。不太瞭解面試輪數意味着什麼。

HR 面的問題比較常規。負責面試的 HR 和最後談薪的 HR 不是同一我的,因此切記不要在 HR 面的時候問薪資待遇,先拿到意向書以後再說。

面試這麼屢次後,我發現問來問去題目就那麼幾個,有很大的重複機率。這頗有多是由於面試官會根據候選人的經歷、水平,針對性地挑選問題,最後老是不可避免的趨同。

所以我認爲,面試後的覆盤很是重要,優先複習本身面試中不會的題,其次再看網上面經的題。若是記不住面試問了什麼問題,能夠錄屏或錄音。

最後祝你們都能拿到想要的 offer~