天天看點

2018年一線網際網路公司Java進階面試題總結

1、hashcode相等兩個類一定相等嗎?equals呢?相反呢?

2、介紹一下集合架構?

3、hashmap hastable 底層實作什麼差別?hashtable和concurrenthashtable呢?

4、hashmap和treemap什麼差別?低層資料結構是什麼?

5、線程池用過嗎都有什麼參數?底層如何實作的?

6、sychnized和lock什麼差別?sychnize 什麼情況情況是對象鎖? 什麼時候是全局鎖為什麼?

7、threadlocal 是什麼底層如何實作?寫一個例子呗?

8、volitile的工作原理?

9、cas知道嗎如何實作的?

10、請用至少四種寫法寫一個單例模式

jvm

1、請介紹一下jvm記憶體模型??用過什麼垃圾回收器都說說呗

2、線上發送頻繁full gc如何處理? cpu 使用率過高怎麼辦?

如何定位問題?如何解決說一下解決思路和處理方法

3、知道位元組碼嗎?位元組碼都有哪些?integer x =5,int y =5,比較x =y 都經過哪些步驟?

4、講講類加載機制呗都有哪些類加載器,這些類加載器都加載哪些檔案?

手寫一下類加載demo

5、知道osgi嗎? 他是如何實作的???

6、請問你做過哪些jvm優化?使用什麼方法達到什麼效果???

7、classforname("java.lang.string")和string classgetclassloader() loadclass("java.lang.string") 什麼差別啊?

spring

1、spring都有哪些機制啊aop底層如何實作的啊ioc呢??

2、cglib知道嗎?他和jdk動态代理什麼差別?手寫一個jdk動态代理呗?

資料庫

1、使用mysq1索引都有哪些原則? ?索引什麼資料結構? 3+tree 和b tree 什麼差別?

2、mysq1有哪些存儲引擎啊?都有啥差別? 要詳細!

3、設計高并發系統資料庫層面該怎麼設計??資料庫鎖有哪些類型?如何實作呀?

4、資料庫事務有哪些?

分庫分表

1、如何設計可以動态擴容縮容的分庫分表方案?

2、用過哪些分庫分表中間件,有啥優點和缺點?講一下你了解的分庫分表中間件的底層實作原理?

3、我現在有一個未分庫分表的系統,以後系統需分庫分表,如何設計,讓未分庫分表的系統動态切換到分庫分表的系統上???tcc? 那若出現網絡原因,網絡連不通怎麼辦啊???

4、分布式事務知道嗎? 你們怎麼解決的?

5、為什麼要分庫分表啊???

6、分布式尋址方式都有哪些算法知道一緻性hash嗎?手寫一下java實作代碼??你若userid取摸分片,那我要查一段連續時間裡的資料怎麼辦???

7、如何解決分庫分表主鍵問題有什麼實作方案??

分布式緩存

1、redis和memcheched 什麼差別為什麼單線程的redis比多線程的memched效率要高啊?

2、redis有什麼資料類型都在哪些場景下使用啊?

3、reids的主從複制是怎麼實作的redis的叢集模式是如何實作的呢redis的key是如何尋址的啊?

4、使用redis如何設計分布式鎖?使用zk可以嗎?如何實作啊這兩種哪個效率更高啊??

5、知道redis的持久化嗎都有什麼缺點優點啊? ?具體底層實作呢?

6、redis過期政策都有哪些lru 寫一下java版本的代碼吧??

分布式服務架構

1、說一下dubbo的實作過程注冊中心挂了可以繼續通信嗎??

2、zk原理知道嗎zk都可以幹什麼paxos算法知道嗎?說一下原理和實作??

3、dubbo支援哪些序列化協定?hessian 說一下hessian的資料結構pb知道嗎為啥pb效率是最高的啊??

4、知道netty嗎'netty可以幹嘛呀nio,bio,aio 都是什麼啊有什麼差別啊?

5、dubbo複制均衡政策和高可用政策都有哪些啊動态代理政策呢?

6、為什麼要進行系統拆分啊拆分不用dubbo可以嗎'dubbo和thrift什麼差別啊?

分布式消息隊列

1、為什麼使用消息隊列啊消息隊列有什麼優點和缺點啊?

2、如何保證消息隊列的高可用啊如何保證消息不被重複消費啊

3、kafka ,activemq,rabbitmq ,rocketmq都有什麼優點,缺點啊???

4、如果讓你寫一個消息隊列,該如何進行架構設計啊?說一下你的思路

分布式搜尋引擎

1、es的工作過程實作是如何的?如何實作分布式的啊

2、es在資料量很大的情況下( 數十億級别)如何提高查詢效率啊?

3、es的查詢是一個怎麼的工作過程?底層的lucence介紹一下呗反向索引知道嗎?es和mongdb什麼差別啊都在什麼場景下使用啊?

高并發高可用架構設計

1、如何設計一個高并發高可用系統

2、如何限流?工程中怎麼做的,說一下具體實作

3、緩存如何使用的緩存使用不當會造成什麼後果?

4、如何熔斷啊?熔斷架構都有哪些?具體實作原理知道嗎?

5、如何降級如何進行系統拆分,如何資料庫拆分????

通信協定

1、說一下tcp 'ip四層?

2、http的工作流程?? ?http1.0 http1.1http2.0 具體哪些差別啊?

3、tcp三次握手,四層分手的工作流程畫一下流程圖為什麼不是四次五次或者二次啊?

4、畫一下https的工作流程?具體如何實作啊?如何防止被抓包啊??

算法

1、比較簡單,我一個檔案,有45億個阿拉伯數字,如何進行去重啊如何找出最大的那個數啊?

資料結構

1、二叉樹和紅黑樹等。

源碼中所用到的經典設計思想及常用設計模式

裡面有高可用、高并發、高性能及分布式、jvm性能調優、spring源碼,mybatis,netty,redis,kafka,mysql,zookeeper,tomcat,docker,dubbo,nginx等多個知識點的,合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!