互聯網 Java 工程師知識掃盲
個人介紹
我是廖志偉,一名java開發工程師,CSDN博客專家,多年一線研發經驗,曾就職多家互聯網公司,任Java開發工程師職位,參與多個千萬級并發互聯網產品研發,對大型分布式,高并發及微服務架構有非常深入研究,
專案說明
本專案內容來自廖志偉整理與撰寫,內容涵蓋Java基礎、框架、設計模式、快取、多執行緒、分布式事務、資料庫、JVM、鎖、高并發、分布式、高可用、微服務、海量資料處理等領域知識,我對這部分知識做了一個系統的整理,方便學習查閱,下面的內容可在我的gitee倉庫進行查看:遠程倉庫地址:https://gitee.com/java_wxid/Java-knowledge-system-induction
內容模塊
- Java基礎
- 框架
- 設計模式
- 快取
- 多執行緒
- 分布式事務
- 資料庫
- JVM
- 鎖
- 訊息中間件
- 搜索引擎
- 海量資料處理
- 解決問題的能力
- 網路
- Netty
- 功能模塊設計
Java基礎
HashMap
- HashMap底層原理?
- HashMap擴容機制?
- HashMap加載因子為什么是0.75?
- HashMap為什么會發生并發修改例外?并發修改例外解決方案?
- 為什么jdk8以后HashMap會使用紅黑樹優化?
- ConcurrentHashMap底層實作?
- CAS,ABA,volatile這些是什么?
框架
Spring
- Spring IOC,Spring AOP?
- Springbean的生命周期?
- 如何解決回圈依賴?
- 父子容器?
- 事務實作原理?
- 動態代理原理?
- Spring MVC作業原理?
- Spring如何實作事務?
Mybatis
- Mybatis框架優點?
Dubbo
- 說一下 Dubbo 的作業原理?注冊中心掛了可以繼續通信嗎?
- Dubbo 支持哪些序列化協議?說一下 Hessian 的資料結構?PB 知道嗎?為什么 PB 的效率是最高的?
- Dubbo 負載均衡策略和集群容錯策略都有哪些?動態代理策略呢?
- 為什么需要服務治理?如何基于 Dubbo 進行服務治理、服務降級、失敗重試以及超時重試?
- 分布式服務介面的冪等性如何設計(比如不能重復扣款)?
- 分布式服務介面請求的順序性如何保證?
- 如何自己設計一個類似 Dubbo 的 RPC 框架?
- Dubbo特性?
- Dubbo SPI 和 Java SPI 區別?
- Dubbo 用到哪些設計模式?
- 為什么要進行系統拆分?如何進行系統拆分?拆分后不用 Dubbo 可以嗎?
Zookeeper
- Zookeeper底層原理?
- 選舉機制?
- Zookeeper腦裂問題?
- Zookeeper假死問題?
- Zookeeper分布式鎖?
- Zookeeper客戶端與集群問題?
- ZooKeeper典型使用場景?
SpringCould
- 什么是微服務?
- 常用組件底層實作?
- 服務發現組件 Eureka 的主要呼叫程序?Eureka 和 Zookeeper 都可以提供服務注冊與發現的功能,它們有什么區別?
- 什么是熔斷?什么是服務降級?
- 熔斷框架如何做技術選型?選用 Sentinel 還是 Hystrix?
- 如何限流?在作業中是怎么做的?說一下具體的實作?
- Spring Boot 和 Spring Cloud,談談你對它們的理解?
- Spring Cloud 和 Dubbo 有哪些區別?
設計模式
設計模式
- 23種設計模式有哪些?
- 講講你熟悉的幾個設計模式底層實作原理?
快取
Redis
- 單執行緒模型?
- Redis 的持久化有哪幾種方式?不同的持久化機制都有什么優缺點?持久化機制具體底層是如何實作的?
- Redis 集群模式的作業原理能說一下么?在集群模式下,Redis 的 key 是如何尋址的?分布式尋址都有哪些演算法?了解一致性 hash 演算法嗎?如何動態增加和洗掉一個節點?
- Redis 的并發競爭問題是什么?如何解決這個問題?了解 Redis 事務的 CAS 方案嗎?
- 生產環境中的 Redis 是怎么部署的?
- 資料型別的應用場景?
- 資料型別的底層資料結構sds?
- 一致性hash?
- 布隆過濾器?
- 資料同步問題(雙刪策略)?
- 擊穿、穿透、雪崩、資料一致性?
- 高并發下的redis分布式鎖?
- 熱點資料快取問題?
- 哨兵機制,集群架構?
- 生產環境性能優化?
- Redis 的過期策略都有哪些?手寫一下 LRU 代碼實作?
- 如何保證 Redis 高并發、高可用?Redis 的主從復制原理能介紹一下么?Redis 的哨兵原理能介紹一下么?
- Redis 主從架構是怎樣的?
多執行緒
多執行緒
- 執行緒池實作原理?
- 執行緒池七大核心引數?
- 執行緒池如何合理的配置核心執行緒數?
- 執行緒池拒絕策略?
- JUC并發包?
- ThreadLocal的使用場景和原理?
- 執行緒的生命周期,什么時候會出現僵死行程?
分布式事務
分布式事務
- CAP理論?
- BASE理論?
- 兩階段提交(2PC)?
- 三階段提交(3PC)?
- 補償事務(TCC)?
- 本地訊息表(異步確保)?
- MQ 事務訊息?
- 最大努力通知?
- TCC 如果出現網路連不通怎么辦?XA 的一致性如何保證?
分布式會話
- 集群部署時的分布式 Session 如何實作?
資料庫
資料庫
- 資料庫事務隔離級別?
- 四大屬性底層實作原理?
- 傳播行為?
- 悲觀鎖、樂觀鎖、排它鎖、共享鎖、表級鎖、行級鎖,死鎖檢測?
- 索引資料結構?
- 主從問題?
- SQL的整個決議、執行程序原理、SQL行轉列?
- 如何優化SQL?
讀寫分離
- 如何實作 MySQL 的讀寫分離?MySQL 主從復制原理是啥?如何解決 MySQL 主從同步的延時問題?
分庫分表
- 為什么要分庫分表(設計高并發系統的時候,資料庫層面該如何設計)?用過哪些分庫分表中間件?不同的分庫分表中間件都有什么優點和缺點?你們具體是如何對資料庫如何進行垂直拆分或水平拆分的?
- 現在有一個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?
- 如何設計可以動態擴容縮容的分庫分表方案?
- 分庫分表之后,id 主鍵如何處理?
JVM
JVM
- JVM演算法?
- 垃圾收集器?
- 垃圾回識訓制?
- JMM和JVM記憶體模型?
- JVM調優?
- 雙親委派機制?
- 堆溢位,堆疊溢位,方法區溢位?
- 你都有哪些手段用來排查記憶體溢位??
- 常見的JVM調優方法有哪些?可以具體到調整哪個引數,調成什么值??
- 各種oom的種類?
鎖
鎖
- 公平鎖,非公平鎖?
- 可重入鎖,遞回鎖?
- 自旋鎖?
- 讀寫鎖?
- 死鎖?
- 分布式鎖?
- AQS實作原理?
- Synchronized是如何從輕量級鎖到重量級鎖?
訊息中間件
訊息中間件
- 為什么使用訊息佇列?訊息佇列有什么優點和缺點?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么優點和缺點?
- 如何保證訊息佇列的高可用?訊息丟失?
- 如何保證訊息不被重復消費?(如何保證訊息消費的冪等性)
- 如何保證訊息的可靠性傳輸?(如何處理訊息丟失的問題)
- 如何保證訊息的順序性?
- 如何解決訊息佇列的延時以及過期失效問題?訊息佇列滿了以后該怎么處理?有幾百萬訊息持續積壓幾小時,說說怎么解決?
- 如果讓你寫一個訊息佇列,該如何進行架構設計啊?說一下你的思路,
搜索引擎
搜索引擎
- ES 的分布式架構原理能說一下么(ES 是如何實作分布式的啊)?
- ES 寫入資料的作業原理是什么啊?ES 查詢資料的作業原理是什么啊?底層的 Lucene 介紹一下唄?倒排索引了解嗎?
- ES 在資料量很大的情況下(數十億級別)如何提高查詢效率啊?
- ES 生產集群的部署架構是什么?每個索引的資料量大概有多少?每個索引大概有多少個分片?
海量資料處理
海量資料處理
- 如何從大量的 URL 中找出相同的URL?
- 如何從大量資料中找出高頻詞?
- 如何找出某一天訪問百度網站最多的IP?
- 如何在大量的資料中找出不重復的整數?
- 如何在大量的資料中判斷一個數是否存在?
- 如何查詢最熱門的查詢串?
- 如何統計不同電話號碼的個數?
- 如何從 5 億個數中找出中位數?
- 如何按照 query 的頻度排序?
- 如何找出排名前 500 的數?
解決問題的能力
解決問題的能力
- Linux常用命令,生產環境服務器變慢診斷,線上排查,性能評估?
- 如何快速定位一個專案跑的慢的原因在哪?
網路
網路
- http,tcp,https,udp,7層網路協議?負載均衡演算法
Netty
Netty
- bio,nio ,aio
- 零拷貝?
- 核心組件?
- I/O 多路復用(epoll)?
- netty架構設計怎么樣子的?
功能模塊
功能模塊
- 冪等性實作
- 單點登錄
- 金額篡改問題
- 秒殺場景設計
- 庫存超賣問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289210.html
標籤:其他
下一篇:關于冪等性
