1. 程式人生 > >蘑菇街、螞蟻金服等公司的Java面試題

蘑菇街、螞蟻金服等公司的Java面試題

字段 redis持久化 多看 red 類的加載 lambda 單例 想想 原理

工作時間參考: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
Kafka原理
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

蘑菇街、螞蟻金服等公司的Java面試題