下面是美團校招的面試真題和答案解析,問的比較細,涉及到的模塊有:網絡、框架、設計模式(靜態代理模式)、手撕代碼、MySQL、Java 基礎、HashMap 等知識點,接下來我們一起來看吧。
1.自我介紹
自我介紹講明白三個點:
- 你是誰?有幾年工作經驗?哪一屆的學生?畢業院線?
- 你會啥?
- 你最大成就?
2.HTTP屬於傳輸協議的哪一層協議?
HTTP 屬於應用層,基於 TCP/IP 實現。
3.TCP和UDP的區別?
- TCP 有連接;UDP 無連接。
- TCP 可靠;UDP 不可靠。
- TCP 基於數據流;UDP 基於數據報。
- UDP 比 TCP 更高效。
- TCP 發送緩衝區、接收緩衝區;UDP 只有接收緩衝區,沒有發送緩衝區。
4.TCP的可靠性傳輸怎麼保證?
保證可靠性的機制:
- 確認應答。
- 超時重傳。
- 連接管理(三次握手和四次揮手)。
- 擁塞控制。
- 流量控制。
5.如果讓你設計一個協議,你怎麼保證可靠性?
可靠性主要依據:
- 連接管理
- 確認應答
- 超時重傳
6.TCP爲什麼需要三次握手?
TCP 通訊的雙方都是全雙工的,所以他們彼此要證明自己和對方的發送能力和接收能力。
TCP 如果兩次握手不能證明服務器端的發送能力和客戶端的接受能力 -> 兩次握手。
TCP 至少需要三次握手才能證明彼此的全雙工能力。
7.TCP爲什麼需要四次揮手?
原因有兩個:
- TCP 本身自帶確認應答。
- TCP 有接收緩衝區的任務可能沒執行完。
8.GET和POST請求的區別?
主要區別:
- 隱私性:通常情況下 POST 的隱私性高於 GET。
- Restful 規範:GET 用於查詢;POST 用於寫入操作。
- 傳參的大小不同:GET 傳參有大小限制,而 POST 沒有。
9.你剛纔說GET請求傳輸文件大小是有限制是多少?
不同的瀏覽器是不同。
早期版本通常是 2k~4k,現在是 4K~8k。
10.我看你博客寫了很多關於Spring的東西,你可以給我說一下Spring的最重要的兩大特性嗎?
Spring 核心功能:
- IoC
- AOP
11.可以聊一下AOP嗎?
思路:
- 講定義:AOP 面向切面編程。
- 講實現:
- 框架添加 AOP 依賴
- 定義切面(@Aspect)並且將它放到 IoC 容器
- 定義切點 -> @Pointcut 攔截規則
- 定義通知 -> 攔截之後的執行方法
- 講原理:依靠 AOP 實現:
- JDK Proxy
- CGLib
12.說一下靜態代理的實現類圖嗎?
UML 類圖 -> 設計模式
靜態代理 UML 類圖:
- 接口類
- 真實類(被代理的類)
- 代理類
13.現在手寫一個靜態代理?
14.Java基礎類型有哪幾個?
Java 有以下 8 大數據類型:
- 整型:byte、short、int、long
- 浮點類型:float、double
- 字符類型:char
- 布爾類型:boolean
15.int是幾個字節?
4個字節。
16.int和Integer有啥區別?那你覺得哪一個用起來好,爲什麼?
區別:
- int 屬於基礎數據類型
- Integer 屬於對象。
使用場景:
- int 使用場景:定義類裏面的屬性。
- Integer 使用場景:
- 傳參
- 泛型
- 對象工具方法
17.MySQL的事務隔離級別有哪幾個?
- 讀未提交:存在髒讀、不可重複讀、幻讀問題。
- 讀已提交:沒有髒讀問題了,但是依然存在不可重複讀和幻讀的問題。
- 可重複讀(默認隔離級別):沒有髒讀、不可重複讀的問題,但依然存在幻讀問題。
- 串行化:沒有髒讀、不可重複讀、在幻讀的問題,但效率較低。
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 點,我會在直播間講解企業面試真題,感興趣的朋友可以關注一波,一起刷面試真題。
本文已收錄到我的面試小站 www.javacn.site,其中包含的內容有:Redis、JVM、併發、併發、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、設計模式、消息隊列等模塊。