分享一位讀者投稿的攜程校招 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 面之後,還會有一個英語測評,題目比較多,對英語不好的同學不太友好。題型大概是閱讀、演講、聽力這些。
不過,也不用擔心,應該不太會因為英語測評的表現刷掉你,但英語測評還是可能會對你的面試評價造成影響,能做好還是要儘量做到最好。