小弟不才,3年java,今年面試面了一些大小廠,手裏offer也有一些,惋惜有一些大廠掛在了終面。html
下面先來講說大概你們都喜歡問些什麼:java
會問你hashMap中get、set方法是怎麼作的,紅黑樹瞭解嗎(結構,旋轉),併發狀況下會有什麼問題,若是想線程安全,用什麼,concurrentHashMap是怎麼作的,1.8和1.8以前有什麼區別。
mysql
推薦:閱讀hashMap和concurrentHashMap源碼面試
問你平時用過線程池嗎,若是是Executors知道其底層嗎,線程池的7個變量都是什麼意思和意義,阻塞隊列有幾種,分別有什麼用,拒絕策略有幾種。
redis
推薦:閱讀ThreadPoolExecutor源碼及瞭解隊列算法
編譯,裝載,連接,初始化 的過程,什麼是雙親委派模型,爲什麼要使用雙親委派模型,Tomcat使用的類加載機制是什麼spring
推薦:sql
什麼是阻塞IO和非阻塞IO,瞭解NIO嗎,他是如何作到高效的,瞭解netty嗎數據庫
推薦:JDK10都發布了,nio你瞭解多少?編程
synchronize瞭解嗎,鎖的升級、使用瞭解嗎,底層是怎麼實現的(總線鎖),伴隨着鎖的確定還有volatile和lock、瞭解死鎖、活鎖、飢餓以及優先級嗎
推薦《java併發編程實戰》
volatile瞭解嗎,他和synchronize的區別,他是如何保證可見性的(內存屏障),爲何有了synchronize還要用volatile
CAS瞭解嗎,他的三個參數是什麼,他底層是怎麼作的(unsafe包下調用CPU指令cmpxchg)
知道讀寫鎖/可重入鎖/公平鎖嗎,是怎麼實現的,以及會手寫一些有關代碼or問你如何保證線程池中線程,一塊兒運行到某點,等待,再繼續一塊兒執行。
推薦《java併發編程實戰》、AbstractQueuedSynchronizer源碼
如何保證TCP可靠性:三次握手、斷線重發。說一下滑動窗口、如何防止DDOS攻擊。四次揮手爲何後面有個2*時間參數的等待時間。畫圖講解一些三次握手四次揮手,OSI七層模型與TCP/IP五層模型說一下
推薦:《圖解HTTP》《HTTP權威指南》
Jvm 內存模型(畫圖)(堆,方法區等,描述各個區域的做用),有遇到過OOM麼,什麼狀況,怎麼發現的,怎麼查緣由的? 如何定位一個CPU Load太高的Java線程?描述垃圾回收算法的主要流程(主要是CMS和G1)
推薦:內存分配策略:www.cnblogs.com/liangzh/arc… 、《深刻理解JVM》
mysql的引擎瞭解嗎,innodb myisam 區別是什麼,Mysql索引:B+tree、hash,有什麼區別,優勢與好處,B+tree聚簇索引和非聚簇索引的區別,ACID是什麼,事務隔離級別知道嗎,MVCC是怎麼保證的。如何實現主從分離(方法層面/sql語句層面)
spring其實沒什麼太多問題,IOC、AOP的原理,filter和interceptor 區別
①寫一個交替打印(wait/notify)
②寫一個線程安全的單例
③寫線程池及使用
總結一下幾道見到的題,都能在leetcode中找到,我也基本都作過:
leetcode283移動零
leetcode344翻轉字符串
leetcode746最小花費爬樓梯
leetcode485最大連續1的個數
leetcode448找到全部數組中消失的數字
leetcode191位1的個數
leetcode21合併兩個有序鏈表
leetcode172階乘後的零
leetcode62不一樣路徑
二叉樹的前中後序遍歷(遞歸/非遞歸)、層次遍歷、變異的層次遍歷這裏就不在裏面尋找了。
另外有些題,也是上面題的變種,相似N個有序鏈表合併、N個無序鏈表合併等等
PS:本人沒去過頭條,所以面試的都是一些簡單題,至於mid和hard的題,沒法提供太多,不過基本思路就是數組、字符串、樹、DP。至於深度廣度和圖,沒有遇到
重點、重點、重點。對於你項目中的介紹,能夠逐一發問,相似redis、MQ、方案、設計等待,都是能問到很深的點,因此你對於本身的項目須要瞭解的很深。
中間件分爲不少了,消息隊列應該算是一個重頭,kafka、rabbitMQ、rocketMQ、其中熟練掌握其中之一就行,其餘NoSQL數據庫,相似ES,MONGO,熟悉其原理,如ES的正排倒排索引結構,mapping設定等等
分佈式的問題也比較麻煩,尤爲配合場景來問,如何保證最終一致性、如何保證分佈式事務(TCC)、分佈式鎖(redis、zk、數據庫)、冪等性、高可用
領域驅動設計,DDD+SOA的事件驅動,看看你有沒有什麼經驗or見解。
場景就看面試官是怎麼去問了
好比:
①設計一個RPC框架
②設計一個2W員工帶上下級關係,能查詢下屬有多少(MYSQL)
③設計一個很大的文件裏充滿IP,找出前5個出現頻率最高的IP(變異TOPK)
④若是你的項目再從新作一遍,你會怎麼幹
我被問過:
①360開機時間是怎麼作出來的
②當按下開機鍵,發生了什麼
③想算出北京市有多少井蓋,怎麼思考
④一二三級緩存位置
⑤CAS、synchronize操做系統是怎麼作的
另祝你們能找到心儀的工做~