美團面試,問的賊細~

下面是美團校招的面試真題和答案解析,問的比較細,涉及到的模塊有:網絡、框架、設計模式(靜態代理模式)、手撕代碼、MySQL、Java 基礎、HashMap 等知識點,接下來我們一起來看吧。
5e595e96d88d480e692a9241899e50e.jpg

1.自我介紹

自我介紹講明白三個點:

  1. 你是誰?有幾年工作經驗?哪一屆的學生?畢業院線?
  2. 你會啥?
  3. 你最大成就?

2.HTTP屬於傳輸協議的哪一層協議?

HTTP 屬於應用層,基於 TCP/IP 實現。

3.TCP和UDP的區別?

  1. TCP 有連接;UDP 無連接。
  2. TCP 可靠;UDP 不可靠。
  3. TCP 基於數據流;UDP 基於數據報。
  4. UDP 比 TCP 更高效。
  5. TCP 發送緩衝區、接收緩衝區;UDP 只有接收緩衝區,沒有發送緩衝區。

4.TCP的可靠性傳輸怎麼保證?

保證可靠性的機制:

  1. 確認應答。
  2. 超時重傳。
  3. 連接管理(三次握手和四次揮手)。
  4. 擁塞控制。
  5. 流量控制。

5.如果讓你設計一個協議,你怎麼保證可靠性?

可靠性主要依據:

  1. 連接管理
  2. 確認應答
  3. 超時重傳

6.TCP爲什麼需要三次握手?

TCP 通訊的雙方都是全雙工的,所以他們彼此要證明自己和對方的發送能力和接收能力。
TCP 如果兩次握手不能證明服務器端的發送能力和客戶端的接受能力 -> 兩次握手。
TCP 至少需要三次握手才能證明彼此的全雙工能力。

7.TCP爲什麼需要四次揮手?

原因有兩個:

  1. TCP 本身自帶確認應答。
  2. TCP 有接收緩衝區的任務可能沒執行完。

8.GET和POST請求的區別?

主要區別:

  1. 隱私性:通常情況下 POST 的隱私性高於 GET。
  2. Restful 規範:GET 用於查詢;POST 用於寫入操作。
  3. 傳參的大小不同:GET 傳參有大小限制,而 POST 沒有。

9.你剛纔說GET請求傳輸文件大小是有限制是多少?

不同的瀏覽器是不同。
早期版本通常是 2k~4k,現在是 4K~8k。

10.我看你博客寫了很多關於Spring的東西,你可以給我說一下Spring的最重要的兩大特性嗎?

Spring 核心功能:

  • IoC
  • AOP

11.可以聊一下AOP嗎?

思路:

  1. 講定義:AOP 面向切面編程。
  2. 講實現
    1. 框架添加 AOP 依賴
    2. 定義切面(@Aspect)並且將它放到 IoC 容器
    3. 定義切點 -> @Pointcut 攔截規則
    4. 定義通知 -> 攔截之後的執行方法
  3. 講原理:依靠 AOP 實現:
    1. JDK Proxy
    2. CGLib

12.說一下靜態代理的實現類圖嗎?

UML 類圖 -> 設計模式
靜態代理 UML 類圖:

  1. 接口類
  2. 真實類(被代理的類)
  3. 代理類

13.現在手寫一個靜態代理?

14.Java基礎類型有哪幾個?

Java 有以下 8 大數據類型:

  1. 整型:byte、short、int、long
  2. 浮點類型:float、double
  3. 字符類型:char
  4. 布爾類型:boolean

15.int是幾個字節?

4個字節。

16.int和Integer有啥區別?那你覺得哪一個用起來好,爲什麼?

區別:

  • int 屬於基礎數據類型
  • Integer 屬於對象。

使用場景:

  • int 使用場景:定義類裏面的屬性。
  • Integer 使用場景
    • 傳參
    • 泛型
    • 對象工具方法

17.MySQL的事務隔離級別有哪幾個?

  1. 讀未提交:存在髒讀、不可重複讀、幻讀問題。
  2. 讀已提交:沒有髒讀問題了,但是依然存在不可重複讀和幻讀的問題。
  3. 可重複讀(默認隔離級別):沒有髒讀、不可重複讀的問題,但依然存在幻讀問題。
  4. 串行化:沒有髒讀、不可重複讀、在幻讀的問題,但效率較低。

18.爲什麼讀已提交有不可重複讀的問題?

讀已提交會查詢事務已經提交的數據,所以在兩次相同的查詢中,可能會讀到不同的內容,這個問題就是不可重複讀的問題。

19.你可以給我模擬一下讀已提交發生不可重複讀的問題嗎?

begin; -- 開啓事務
select username from users where id=1; -- 張三
-- 事務2將 users id=1 username='李四'
-- ....
select username from users where id=1; -- 李四

20.寫一個SQL語句:查詢男生的數量?

select count(*) from users where gender=1;

21.根據寫的SQL說一下這個裏面索引是誰?生效了嗎?

考察的重點:性別是否適合做索引?

無索引,因爲性別不適合做索引。

22.HashMap的底層實現原理?

HashMap 使用數組+鏈表/紅黑樹來實現的。

23.爲什麼HashMap要用到鏈表?

HashMap 會有哈希衝突,HashMap 使用的是鏈地址法來解決哈希衝突(實現簡單、高效),所以使用鏈表來實現 HashMap 解決哈希衝突。

本文視頻解析

飛書鏈接:https://r6b93q3exi.feishu.cn/docx/GBJPdy5hIoqTZNxMV8WcBDWUnHb

密碼:1p6698&1

企業面試真題視頻直播

每週六、周天、週一晚上 8 點,我會在直播間講解企業面試真題,感興趣的朋友可以關注一波,一起刷面試真題。
8818c80f9f444f8f5c5451d163755f5.jpg

本文已收錄到我的面試小站 www.javacn.site,其中包含的內容有:Redis、JVM、併發、併發、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、設計模式、消息隊列等模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章