Java技術大綱

系統架構

  • 前端瀏覽器地址的一個 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
    • 表級鎖和行級鎖對比 link
    • 事務特性,有哪幾種事務隔離級別 link
    • 分佈式事務,兩階段提交
    • 當MySQL單表記錄數過大時,數據庫的CRUD性能會明顯下降,一些常見的優化措施 link
    • SQL 優化的常見方法有哪些
    • 如何查看執行計劃,如何根據執行計劃進行SQL優化 link
    • 數據庫主備搭建
  • 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章