面試開火箭,工做擰螺絲...java
有個朋友面試拼多多,一面自信滿滿過了,結果三面卻慘敗...昨天朋友約我出來討論問題在哪裏,三面就答不上了(卡殼很嚴重吶).面試
聽完整個面試經歷以後,我總結了一下,此次拼多多一二三面其實綜合總結起來就問了五個方面的東西,分別是自我介紹+項目、java基礎、中間件、數據庫和spring框架,另外還問了道算法題。redis
接下來就跟你們一塊兒來看看拼多多的面經,看看你是否能輕鬆應對面試官的炮轟?算法
第一部分 項目+自我介紹
- 首先上來簡單作一下自我介紹?
- 而後讓介紹簡歷裏的項目,說下項目裏的難點,技術架構。
- 平時開發過程當中都遇到過哪些難題?
- 平時都這麼和同事溝通?
第二部分 java基礎方面
- 首先仍是老生常談的hashmap。hashmap的set和get的時間複雜度是多少?爲何是O(1), hashmap 在jdk1.8是線程安全的嗎?
- 爲何是線程安全的?concureenthashmap瞭解嗎?他是如何實現線程安全的?
- 說說java泛型,爲何稱java泛型爲僞泛型?泛型的好處有哪些?int能夠做爲泛型類型嗎?
- 說一說靜態和動態的區別?動態***的底層是怎麼實現的?
- 線程run和start的區別?兩次start同一個線程會怎麼樣?
- 說一下java的線程模型?說一下violate關鍵字?他的原理是什麼?violate是線程安全的嗎?說一下violate和synchronized這兩個關鍵字的區別?
- 說下線程池的原理?有沒有在項目中用過線程池?怎麼用的?核心線程和非核心線程有什麼區別?你在項目裏怎麼肯定核心線程數的。
- 對concureent包瞭解嗎?什麼是cas?cas怎麼解決ABA問題?講一下CountDownLatch和cyclicBarrier的區別?
- 說一下java類加載器的工做機制?講一下JVM相關。有沒有作貨GC調優,講一下這麼作的?
第三部分 spring框架方面
- BeanFactory 和 和 ApplicationContext 有什麼區別?
- 如何用基於 XML 配置的方式配置 Spring
- 說一下springboot的啓動過程?平時開發中都用哪些註解?
- Spring 是如何快速建立產品就緒應用程序的?
- 如何使用 Spring Boot 部署到不一樣的服務器?
第四部分 數據庫與java中間件方面
- redis經常使用的數據結構有哪幾種,在你的項目中用過哪幾種,以及在業務中使用的場景,?redis cluster有沒有了解過,怎麼作到高可用的?
- redis集羣和哨兵機制有什麼區別?redis的持久化機制瞭解嗎?大家在項目中是怎麼作持久化的?遇到過redis的hotkey嗎?怎麼處理的?redis是單線程的嗎?單線程爲何還這麼快?redis實現分佈式鎖以及和zk實現的性能和穩定性的對比?
- kafka的原理?怎麼保證消息不丟失?
- 索引的常見實現方式有哪些,有哪些區別?MySQL的存儲引擎有哪些,有哪些區別?InnoDB使用的是什麼方式實現索引,怎麼實現的?說下聚簇索引和非聚簇索引的區別?
- 大量的消息每頁被消費,可否發生 oom 異常?
- 向不存在的 exchange 發 publish 消息會發生什麼?向不存在的queue 執行 consume 動做會發生什麼?
- 爲何不該該對全部的 message 都使用持久化機制?
第五部分 算法方面(總共是問了兩個)
- 一面手寫的題是leetcode 106. 從中序與後序遍歷序列構造二叉樹,根據一棵樹的中序遍歷與後序遍歷構造二叉樹。(注意:你能夠假設樹中沒有重複的元素。)
例如,給出 中序遍歷 inorder = [9,3,15,20,7] 後序遍歷 postorder = [9,15,7,20,3] 返回以下的二叉樹: 3 / \ 9 20 / \ 15 7spring
- 二面手寫的題是 leetcode 86. 分隔鏈表
給定一個鏈表和一個特定值 x,對鏈表進行分隔,使得全部小於 x 的節點都在大於或等於 x 的節點以前。數據庫
你應當保留兩個分區中每一個節點的初始相對位置。安全
**示例:**輸入: head = 1->4->3->2->5->2, x = 3 輸出: 1->2->2->4->3->5springboot
上面的這些面試題都整理成了PDF文檔,但願能幫助到你面試前的複習並找到一個好的工做,相對來講也節省了你在網上搜索資料的時間來學習!!!服務器
附歡迎關注個人公種號:it資源之家 ,掃描下面二維碼便可領取更多一線大廠Java面試題資料!數據結構
最後
歡迎你們評論區一塊兒交流,相互提高;整理資料不易,若是喜歡文章記得點個贊哈,感謝你們支持!!!