工作時間參考:17年開始工作,18年6月份畢業,算上實習一年半工作經驗。近一個半月,先後參加了很多公司的面試,有失敗,也有成功。面試題如下:
1、蘑菇街:
java1.8新特性——lambda表達式
redis的相關操作
項目中redis表的設計
redis的資料過期政策
常見的資料結構
周遊map的幾種方式
mysql、redis的設計思路
業務邏輯的梳理
main方法用private修飾會怎樣?
arraylist和linkedlist的差別
多線程死鎖怎麼解決
資料庫裡有海量資料,在不建索引的條件下,用java代碼實作快速查找出某個字段的最大一百條
2、微醫集團:
map——自己盡情擴充
用過的線程池和線程
設計模式——單例模式和觀察者模式
資料庫優化以及常用sql語句調優
jvm調優,如何防止oom
日志——log4j2
緩存算法如何實作
maven指令解決jar包沖突
常用linux指令
spring cloud——oauth2、hystrix以及其他元件
kafka原理
redis相關操作以及原理
用過的消息隊列
介紹zookeeper
bio、nio、aio的使用場景和實作原理
spring boot的加載原理以及加載過程
spring applicationcontext和beanfactory
3、螞蟻金服:
mysql索引
redis分布式事務鎖
線程池常用參數的配置,以及最大線程數根據什麼來确定
spring aop怎麼攔截,原理
什麼時候要重寫hashcode和equals方法
樂觀鎖和悲觀鎖
java記憶體模型
設計模式
如何釋放線程,分别要注意什麼
arraylist實作原理,相對于數組的好處
linkelist的實作原理,為什麼用雙向連結清單
hashmap的實作原理
concurrenthashmap的實作原理,jdk1.7和jdk1.8實作有什麼差別
用過的鎖——sychronized和lock,為什麼說sychronized是重量鎖,效率低在哪
nio的原理以及使用
循環依賴
螞蟻面試官的建議:1、平時做項目的時候要有自己的想法,而不是單純的按照需求文檔來開發,多想想為什麼要那麼設計,好在哪,亮點在哪;2、多看源碼,看源碼的設計思路,如果是自己,會怎麼去設計;3、多了解資料結構的實作和新技術的實作原理。
4、大搜車:
string、stringbuilder、stringbuffer的實作原理——源碼
spring的beanfactory和applicationcontext的差別
spring bean的生命周期
elasticsearch、logstash、kibana
redis的優點、原理
單例模式的幾種實作方式,每種都有哪些問題
volatile關鍵字
重載、重寫的差別
object裡面常見的方法
靜态方法加鎖和普通方法加鎖有什麼差別
類的加載過程
jvm模型介紹以及如何調優
5、百世集團、穆天機器人、創泰科技:
手寫代碼:
1、去除一個數組裡面的重複元素;
2、一個數組裡隻有0和1,求0到1的最遠距離(eg:[0, 1, 0, 0, 1] -> 傳回2)
模組化一個人去飯店吃飯的全過程
collection介紹——自由發散
map介紹——hashmap和concurrenthashmap的差別及源碼分析
線程、資料同步
mysql調優
jquery調優
dubbo和spring cloud
redis存儲的資料類型
spring的ioc和aop
實作線程的幾種方式
spring的事務
6、浙江大華:
線程:start和run方法的差別;
線程池參數
有哪幾種連結清單,每種有什麼執行個體
spring boot啟動過程
redis持久化方式
緩存算法
什麼時候會發生gc,jvm調優
kafka+elk的日志系統的搭建過程
叢集中選舉政策的原理
elasticsearch資料的存儲格式
spring的定時任務
redis的過期政策
spring cloud——熔斷器hystrix