分享一份讀者面試美團的面經,比較有參考性,感興趣的可以看看~
一面
- 訊息佇列如何保證可靠性
- 訊息佇列如何保證訊息冪等性
- 訊息佇列的優缺點
- 為什麼用b+樹
- 聚集索引和主鍵區別,其他引擎怎麼做的
- 平時資料庫編碼
- explain引數
- http報文引數有哪些嗎?
- 做題,連結串列奇偶有序輸出
二面
- 自我介紹
- 有哪些排序演算法?
- 介紹下快排/堆排/歸併排序。
- 資料庫中的索引應該如何設計?
- 有哪些索引失效的情況?
- 你們用到的HTTP介面用到了什麼提交方式?
- GET/POST的區別?
- 除了GET/POST還有哪些?
- 物件導向的基本原則?再詳細說下依賴倒轉。
- 介紹下策略模式和觀察者模式?
- 如何保證使用者請求的等冪性?等冪性指的是使用者可能連點提交三次支付請求,返回同樣的結果(支付成功),但實際後臺只執行一次,保持一致性。
- 介紹下TCP四次揮手?
- 第四次揮手後客戶端是立刻就關閉了嗎?是什麼狀態?
- 兩個大檔案,分別每行都存一個url,查詢兩個檔案中重複的url。
- 一個大檔案中,每一行有一個整數,怎麼找第100大的數?
- 一個大檔案中,每一行有一個整數,怎麼找中位數?
- redis的基本資料結構?
- zset是怎麼實現的?有哪些命令?
- 演算法題 力扣221. 最大正方形
三面
- 專案相關(模組劃分,專案需求,技術方案,資料庫設計,表的結構及關係,擔任角色)
- http協議的關鍵欄位,比如request和response頭部資訊有哪些關鍵欄位,有什麼含義
- http狀態碼:100,200,502,504
- http和https的區別,https是為了解決什麼問題
- 三次握手、四次揮手(詳細過程+狀態變化)
- 出現大量的close_wait可能是什麼原因,解決方案,透過什麼工具看出來網路有問題等等
- Java中常見的集合有哪些,List、Set、Map初始容量載入因子瞭解嗎
- Java中執行緒通訊的方式有哪些,大概的原理
- MySQL如果遇到效能不好的問題,比如說慢查詢,怎麼做
- 資料庫最佳化方案(索引 | 分庫分表)
- 有哪些索引,資料結構,建立索引的原則
- 分庫分表的原則,說說場景(水平 | 垂直、熱資料 | 冷資料 blabla)
- 演算法題:兩數之和
四面
- 自我介紹、專案介紹,問了資料量
- 瞭解微服務嗎?(有沒有自己在做專案時進行調研,瞭解企業目前常用的工具、方法)
- 瞭解springcloud嗎?
- 一臺機器無法滿足運載需求,怎麼辦呢?答:多搞幾臺機器,問:多臺機器如何協同工作?
- 解釋一下mapreduce
- 如果有一個很大的檔案,TB級別,檔案裡是亂序的數字,如何排序?mapreduce如何實現?
- 排序過程中的歸併排序,請描述一下其過程?時間複雜度
- 程式、執行緒區別,問使用Java時,裡面多執行緒的概念和os裡的執行緒程式的區別是什麼?真正使用時,Java裡的執行緒和程式是如何排程?
- 多執行緒的同步互斥的方法?答了訊號量,問具體怎麼實現,答pv操作,給了具體的場景,問變數如何初始化(等同於口述程式碼)
- 有哪些索引?(mysql為例)
- b樹、b+樹是什麼樣的樹結構,查詢複雜度?是平衡二叉樹嗎?
- 使用過redis嗎?具體做什麼?
- 手撕程式碼:LRU演算法;正反序層序遍歷二叉樹
本文已經收錄到Github倉庫,該倉庫包含計算機基礎、Java基礎、多執行緒、JVM、資料庫、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分散式、微服務、設計模式、架構、校招社招分享等核心知識點,歡迎star~
如果訪問不了Github,可以訪問gitee地址。