系統架構
- 前端瀏覽器地址的一個 http 請求到後端整個流程
- 常用的設計模式,23種
- 哪些設計模式可以增加系統的可擴展性
- 如果AB兩個系統互相依賴,如何解除依賴?
- 什麼場景應該拆分系統,什麼場景應該合併系統?
- 常用的設計模式 link
- 如何構建高可用系統? link
- 性能優化:使用單例、使用Future模式、使用線程池、選擇就緒、減少上下文切換、減少鎖粒度、數據壓縮、結果緩存
- Nginx負載均衡
分佈式系列
- 如何設計一個高併發的分佈式系統?你會引入哪些開源框架?
- 緩存
- 搭建Redis緩存高可用集羣
- 高併發下如何正確優雅的使用緩存
- 設計緩存要注意什麼
- 本地緩存用過哪些框架?Guava
- 分佈式緩存:緩存一致性、緩存命中率、緩存冗餘
- 分佈式數據庫
- 怎樣打造一個分佈式數據庫?什麼時候需要分佈式數據庫、mycat、otter、HBase
- 網關框架了解過哪些?能爲後端服務帶來哪些好處?
- 如何保證消息冪等 link
- 如何實現分佈式Session
- 如何保證消息的一致性
- CDN實現原理
微服務
- zookeeper之服務註冊與訂閱
- 使用Docker部署微服務
- 微服務架構--分佈式事務解決方案
- 微服務劃分的粒度
- 微服務的高可用怎麼保證的?
- 什麼場景應該拆分系統,什麼場景應該合併系統
鎖相關
- 死鎖定義;如何避免死鎖 link
- synchronized和 ReentrantLock 的區別?
- java讀寫鎖,讀寫鎖設計主要解決什麼問題?
- 樂觀鎖,悲觀鎖,使用場景?
- 設計一個分佈式鎖
- 常見的鎖有哪些? link
- 不用synchronized和lock,實現線程安全的單例模式?link
框架
- java
- 動態代理與Cglib實現的區別 link
- 看過哪些JDK源碼
- JAVA併發編程藝術
- java8的新特性 link
- lambda表達式、Stream API
- HotSpot 即時編譯器、編譯優化 link
- CPU緩存,L1,L2,L3和僞共享 link
- Java 9,Reactive Streams link
- JVM如何加載字節碼文件
- 雙親委派,Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader
- 內存分配策略、垃圾收集器(G1)、GC算法、GC參數、對象存活的判定
- 什麼情況會出現young GC,什麼情況會出現Full GC
- 怎樣判斷Full GC是否正常? link
- 內存泄露原因?如何排查?
- OOM 出現的有哪些場景?
- JVM 內存結構
- 熟悉哪些jvm 命令,jstack、jmap、jstat?
- jvm調優經驗
- bio、nio和aio的區別、三種IO的用法與原理
- 線程有哪些狀態? blocked 和 wait 有什麼區別? link link
- JDK 中有哪幾個線程池?拒絕策略? link link
- 如何保證線程安全問題?
- JUC 常用的類 link link
- ThreadLocal 內部原理?
- HashMap,爲什麼線程不安全 link
- HashMap 怎麼解決碰撞問題?
- Concurrenthashmap 是怎麼做到線程安全的?
- String、StringBuffer與StringBuilder的區別
- try catch finally,try裏面有return,finally還執行嗎?
- 泛型中K T V E link
- Thread 和 Runnable區別?
- 關鍵字 volatile、transient、final link
- Object 的 equals方法重寫了,hashCode 方法必須重寫 link link
- 基礎
- 集合
- 線程
- IO
- JVM
- 其它
- spring
- 爲什麼要使用Spring,Spring的優缺點有哪些
- Spring的IOC容器初始化流程
- Spring Bean 的生命週期 link
- Spring AOP實現原理
- SpringMVC模式
- Spring Boot 與 Spring 的區別 link
- Spring cloud瞭解過哪些
- Spring 5 響應式編程 link
- mysql
- redis
- Redis有哪些數據結構?
- 使用過Redis分佈式鎖麼,代碼怎麼寫?
- 假如Redis裏面有1億個key,其中有10w個key是以某個固定的已知的前綴開頭的,如果將它們全部找出來?
- Redis如何做持久化的?
- Pipeline有什麼好處,爲什麼要用pipeline?
- Redis的同步機制瞭解麼?
- 爲什麼要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
- 10個redis常見問題 link
- kafka
- Kafka的整體架構
- netty
- Netty的一次請求過程
- Netty核心精講之Reactor線程模型
- dubbo
- 底層原理
- 支持哪些負載算法?默認哪種?
- 怎麼設置超時時間?
- tomcat
- Tomcat 調優
- Servlet線程安全問題 link
HTTP 協議
- OSI模型分爲哪幾層?
- TCP
- TCP 和 UDP 的區別?TCP 數據傳輸過程中怎麼做到可靠的?
- TCP 三次握手、四次揮手過程
- TCP擁塞控制 link
- http
- Cookie和Session的區別
- Http的狀態碼
- HTTP 301 、302有啥區別
- HTTP連接池實現原理
- Http怎麼處理長連接
OS系統
- centos7 的內存分配方式和6有啥不同 link
- linux
- 常用的linux命令 link
- 緩衝區溢出
- 分段和分頁
- 虛擬內存與主存
- Linux 庫函數與系統調用的關係與區別 link
- 進程和線程的區別 link
實戰能力
- 有沒有處理過線上問題?出現內存泄露,CPU利用率飆高,應用無響應時如何處理?
- 如果有幾十億的白名單,每天白天需要高併發查詢,晚上需要更新一次,如何設計這個功能
- 雙十一電商秒殺系統性能優化實戰
- 電商網站,如何保證一件商品不被超賣
- 讓您做一個電商平臺,您如何設置一個在買家下訂單後的”第60秒“發短信通知賣家發貨,您需要考慮的是 像淘寶一樣的大併發量的訂單 link
其它
- 一致性Hash算法
- 看過哪些開源框架的源碼
- 消息中間件是如何實現的,技術難點有哪些
- 工作案例。怎麼提高研發效率。
- HttpClient 講下里面的具體實現,(涉及了哪些東西)
- 那要你設計一個高性能的 Http ,你會怎麼設計?
- 說出一個空間換時間的場景
- 怎麼防止訂單重複提交?
- ORM框架用過哪些?
- hibernate 和 IBatis 的區別?
- 抽象能力,樂高模式,怎麼提高研發效率
- 什麼情況用接口,什麼情況用消息
- 加密與解密:MD5,SHA1、DES、AES、RSA、DSA