分享一位讀者投稿的攜程校招 Java 崗位的面經。
下面是正文。
個人背景:雙非本,機械專業轉碼。
攜程在正式面試之前,會有一個性格測試(40分鐘)。性格測試之後,大概過一週進行筆試。筆試之後,會郵件通知是否通過並預約第一輪面試時間。
普通 offer 一般只有兩面,如果是 sp 或者 ssp 的話,技術面貌似是三面。
攜程的面試難度一般,效率比較高,面試體驗還是不錯的。
一面(45min)
主要是問八股,難度較低。
- 自我介紹;
- 進程和線程的區別;
- 並行和併發的區別;
synchronized
的作用;synchronized
和ReentrantLock
的區別,如何選擇;ThreadLocal
使用過程中可能存在的問題(內存泄露);ThreadLocal
內存泄露問題是怎麼導致的;- 項目中是如何創建線程池的,什麼不用
Executors
去創建線程池; - 知道的本地緩存,選擇 Caffeine 的原因;
- Redis 這類緩存和 Caffeine 的區別;
- Redis 中常見的數據結構,應用場景;
- 緩存穿透和緩存雪崩的區別,解決辦法;
- MySQL 和 Redis 怎麼保持數據一致;
- 一個 SQL 筆試題,join 多表查詢(共享屏幕)。
答案:
- Java 併發常見面試題總結(上)、Java 併發常見面試題總結(中)、Java 併發常見面試題總結(下)
- Java高性能緩存庫- Caffeine - 風之箏
- 緩存基礎常見面試題總結(付費)
- Redis常見面試題總結(上)、Redis常見面試題總結(下)
- SQL常見面試題總結
二面(50min)
二面主要還是八股。
- 自我介紹;
- 使用多線程可能存在的問題;
- 線程池原理;
- 聊聊
ThreadLocal
(概念+一些應用舉例+常見的內存泄漏問題); - JVM 內存模型和垃圾回收;
- 用到過內存分析工具嗎;
- 使用索引能帶來什麼好處,你項目中是怎麼使用的;
- 索引底層常見的數據結構,MyISAM 引擎和 InnoDB 引擎用的是哪種;
- 聚簇索引和非聚簇索引;
- 最左前綴匹配原則;
- 造成索引失效的常見原因你知道那些,項目中遇到過索引失效問題嗎;
- 如果有一條 SQL 語句執行的很慢,如何進行優化;
- 項目中是如何使用 ES的;
- ES 檢索比較快的原因,爲什麼 MySQL 不行;
- 講一下倒排索引;
- 手寫一個生產者消費者隊列;
- 反問。
答案:
- Java 併發常見面試題總結(上)
- Java 併發常見面試題總結(下)
- Java 內存區域詳解、JVM 垃圾回收詳解
- Java內存分析相關工具
- MySQL索引詳解
- MySQL執行計劃分析
- Elasticsearch常見面試題總結(付費)
HR面
- 個人的基本信息;
- 對攜程的瞭解;
- 三個詞形容自己;
- 手裏還有哪些 offer;
- 平時的興趣愛好;
- 選擇工作的理由排序(薪資、加班情況之類的)。
英語測評
HR 面之後,還會有一個英語測評,題目比較多,對英語不好的同學不太友好。題型大概是閱讀、演講、聽力這些。
不過,也不用擔心,應該不太會因爲英語測評的表現刷掉你,但英語測評還是可能會對你的面試評價造成影響,能做好還是要儘量做到最好。