1. 程式人生 > >阿裏資深專家面試問題收集

阿裏資深專家面試問題收集

哪些 類加載機制 集合 載器 加載器 多線程 行數據 str hashmap

corejava

hashcode相等的兩個對象一定相等嗎?equals呢?反過來相等嗎?
介紹一下集合框架?
hashtable,hashmap底層實現是什麽?hashtable和concurrenthashmap底層實現的區別?
hashmap和treemap的區別?底層數據結構都是什麽?
線程池用過嗎?都有什麽參數?底層是如何實現的?
synchronize 和Lock接口的區別是什麽?synchronize什麽情況下是對象鎖?什麽情況下是全局鎖?為什麽?
ThreadLocal 如何使用的?說出你在項目中使用的例子?底層實現是什麽?
volatile 的工作原理是什麽?
CAS是什麽?如何實現的呢?
請用至少四種寫法?寫單例模式的實現.

JVM

請介紹一下JVM內存模型?用過哪些垃圾回收器?
線上頻繁發生full gc如何處理?CPU使用率過高怎麽辦?說出你的思路和處理方法? 3,知道字節碼嗎?字節碼都有哪些指令?Integer x=5. int y=5. 比較 x==y都經過哪些步驟?
講講類加載機制?都有哪些類加載器?這些類加載器都加載哪些類文件?說說你在項目中用到類加載器的例子?
知道osgi嗎?他是如何實現的?
請問你做過哪些JVM方面的優化?使用的什麽方法?達到了什麽效果?

數據庫

使用mysq索引都有哪些規則?索引是什麽數據結構?B+tree和B tree的區別是什麽?
mysql有哪些存儲引擎啊?都有什麽區別?
設計高並發高可用系統時數據庫層面設計該怎麽設計?

數據庫鎖都有哪些?如何實現的的?
數據庫事務都有哪些?

分庫分表

如何設計可以動態擴容縮容的分庫分表方案?
用過哪些分庫分表方案?都有什麽優點和缺點?說一下他的底層如何實現的?
我現在有一個未分庫分表系統A,以後系統需要分庫分表B,請問,線上如何動態的由A切換到B?
分布式事務知道嗎?它是如何實現的?若在通信過程中,出現網絡原因,如何解決?
為什麽要分庫分表?
分布式尋址方式都有哪些?知道一致性hash嗎?手寫一下java實現代碼?
你若用userId取模分片,我要查詢連續時間段裏的數據怎麽辦?
如何解決分庫分表的主鍵問題?有什麽實現方案?

分布式緩存

redis和memcached什麽區別?為什麽單線程的redis比多線程的memcached效率要高?

redis有什麽數據類型?都在哪些場景下使用?
redis主從復制如何實現的?redis的集群模式如何實現?redis的key是如何尋址的?
使用redis如何設計分布式鎖?說一下實現思路?使用zk可以嗎?如何實現?這兩種有什麽區別?
知道redis 的持久化嗎?底層如何實現的?有什麽優點缺點?
redis過期策略都有哪些?LRU算法知道嗎?寫一下java代碼實現?

分布式服務框架

說一下dubbo的實現過程?註冊中心掛了可以繼續通信嗎?
zookeeper原理知道嗎?項目中都用到zookeeper哪些功能?其實現算法知道嗎?說一下大概原理?
dubbo支持哪些序列化協議?知道hessian的數據結構嗎?PB知道嗎?為啥他的效率最高?
netty知道嗎?netty可以做什麽?NIO,BIO,AIO都是什麽?有什麽區別?
dubbo負載均衡策略和高可用策略都有哪些?動態代理策略都有哪些?
為啥要進行系統拆分?不進行拆分可以嗎?dubbo和thrift什麽區別?

分布式消息隊列

為什麽使用消息隊列?消息隊列有什麽優點和缺點?
如何保證消息隊列高可用?如何保證消息不被重復消費?
kafka,activemq,rabbitmq,rocketmq都有什麽優點缺點?
如果讓你設計一個消息隊列?該如何進行架構設計,說一下你的思路?

分布式搜索引擎

es的工作 過程是如何實現的,他是如何實現分布式的的?
Es在數據量很大的情況下(數十億),如何提高查詢效率?
Es的查詢是一個怎麽的工作過程?底層的luncence介紹一下?倒排索引知道嗎?es和mongodb有什麽區別?使用場景都有哪些?

高並發高可用架構設計

如何設計一個高並發高可用系統?
如何限流?工作中是怎麽做的?說一下具體實現?
緩存如何使用?緩存使用不當會造成什麽後果?
如何熔斷?熔斷框架都有哪些?說一下具體原理實現?
如何降級?如何進行系統拆分?如何進行數據庫拆分?

阿裏資深專家面試問題收集