在過去很長一段時間內,國內網際網路一直處於三足鼎立狀態,BAT即百度、阿里巴巴、騰訊。而在最新的網際網路企業價值榜上,百度卻被螞蟻金服擠出前三的位置。
能夠進一線網際網路公司,是大部分程式設計師奮鬥的目標,有很多小夥伴可能因為學歷望而止步,其實只要能力夠,學歷真的不是那麼重要!
今天給大家帶來ATM(阿里巴巴,騰訊,螞蟻金服)的Java面試真題,希望能幫助各位讀者在奮鬥的路上少走彎路。
阿里巴巴Java崗位(技術三面)
一面
1、自我介紹,講講求職意向和擅長的技能
2、Tomcat的基本架構是什麼?
3、JVM調優,工作中怎麼用,GC演演算法和回收策略有哪些
4、Java中執行緒池是如何實現的? 建立執行緒池的幾個核心構造引數是什麼?
5、Volatile和Synchronize的區別?
6、GC的機制是什麼?垃圾回收器的基本原理是還說呢麼?是否可以立即回收記憶體?怎麼樣主動的通知JVM進行垃圾回收?
7、類載入器雙親委派模型機制?
8、集合的種類和區別,HashMap底層如何實現(JDK1.8有所改動),HashMap和ConcurrentHashMap的區別?
9、Spring IOC如何管理Bean之間的依賴關係,怎麼樣避免迴圈依賴?
10、SpringBean建立過程中的設計模式?
二面
1、自我介紹、
2、InnoDB支援的四種事務隔離級別名稱是什麼? 之間的區別是什麼?
3、聊一聊事務的特性
4、什麼是MySQL隔離級別?
5、如何理解BTree機制?
6、談一談對慢查詢的分析?MySQL常用的優化方法有哪些?
7、談一談悲觀鎖和樂觀鎖以及SQL的實現
8、簡述三次握手和四次握手的過程?
9、B+樹索引和Hash索引的區別?
三面
1、自我介紹
2、MySQL的鎖並行?
3、高並行場景下如何防止死鎖,保證資料的一致性?
4、叢集和負載均衡的演演算法與實現?
5、簡述分庫與分表設計?
6、分庫分錶帶來的分散式困境與對應之策有哪些?
7、加鎖的機制是什麼?
8、Redis和Setnx命令使如何實現分散式鎖的?使用Redis怎麼進行非同步佇列?會有什麼缺點?
騰訊Java崗位(技術四面)
一面
1、說說對JVM的理解?
2、treemap和HashMap的區別?
3、多執行緒的五大狀態?
4、MySQL主鍵和索引的區別?
5、聊聊做的一些專案
6、如何實現session共用?用Redis該如何實現?
7、快取擊穿的概念和解決方案?
8、聊聊微服務,以及微服務之間是如何進行管理的
二面
1、Java中nio和io的區別?常用的類有哪些?
2、Java裡面的同步鎖瞭解嗎? CountDownLaunch和Cylicbarrior的區別,分別在什麼場景下使用?
3、JVM的記憶體結構,哪些是共用的,哪些是執行緒私有的? Java虛擬機器器裡堆疊分別存放什麼?
4、如何實現一個執行緒池?
5、Java的類載入在哪些情況下會觸發?
6、手寫程式碼:快速排序,單利模式, 畫一個工廠模式和裝飾者模式的UML類圖
7、AOP的實現原理
8、怎麼優化慢查詢?
9、Java的鎖有哪些?可重入鎖和不可重入鎖的區別?
10、Lock和Synchronized的區別?他們都是可重入鎖嗎?哪個效率更高?
11、手寫SpringMVC DispatcherServlet的大致實現?
三面
1、聊一聊平時的專案並行經驗
2、Redis的資料結構? 執行緒模型? Redis的資料淘汰機制?
3、讀過Redis的原始碼嗎?
4、MySQL實現事務的原理
5、MQ底層原理的實現?
6、資料庫事務acid,事務操作,怎麼加鎖?分散式系統鎖?
7、什麼情況下會發生雪崩?如何解決?
四面
1、介紹一些並行專案
2、技術含量較高的專案,從架構設計到部署問了一遍
3、高並行架構的設計思路
螞蟻金服Java崗位(技術三面)
一面
1、HashMap和ConcurrentHashMap
2、談一談Hash的一致演演算法
3、樂觀鎖和悲觀鎖
4、可重入鎖和Synchronized
5、事務的四大特性?
6、事務的二段提交機制?
7、聚簇索引和非聚簇索引
8、舉例說一下索引的應用場景和注意事項?
9、當前讀和快照讀
10、聊一聊類載入的過程?
11、雙親委派機制及其使用原因?
12、聊一聊GC的演演算法?
13、Http和Https的區別? 以及Https加密的方式
14、執行緒池的核心引數和基本原理?執行緒池的調優策略
15、談談個人的職業規劃
二面
1、聊一聊個人做過的專案,遇到過哪些難點?
2、Collections.sort底層的排序方式?
3、排序的穩定性,以及不同場景下的排序策略
4、Http請求過程,DNS解析的過程
5、三次握手和四次握手
6、簡述執行緒池和並行工具有哪些、
7、資料庫的索引和原理
8、頻繁老年代回收怎麼分析和解決?
9、Spring IOC/AOP相關知識
10、講講SpringBoot和SpringCloud的一些應用?
11、阻塞佇列不用Java提供的該怎麼實現?
12、負載均衡的原理?
13、Redis的資料一致性問題,分散式多節點和單節點環境下分別描述
14、講講Docker容器
15、如何實現高並行環境下的削峰、限流?
三面
1、聊一聊專案中用到的中介軟體(Dubbo/MQ/Zookeeper/Redis/Kafka)
2、什麼情況下會造成雪崩?該怎麼避免這種情況
3、高並行架構的設計思路
4、聊一聊以前的專案中遇到的問題和解決策略
5、生活中遇到過哪些挫折?最後怎麼解決的
6、生活中遇到的最有成就感的事情?
總結:
一線網際網路公司都比較注重實際的專案中解決問題的能力,另外面試點主要圍繞JVM、多執行緒相關、基礎知識的底層原理、處理高並行的能力。
相信都是老司機,這裡也不扯什麼面試技巧了,輕鬆發揮就好。
【文末彩蛋】
本人以檔案的形式總結了面試答案其中還包括了其它面試資料(初中級進階類)
資料獲取方式:點贊+關注,加助理VX:mxx2020666,即可免費領取(檔案資料只供50份,先到先得)