1. 語言相關

1.1 Java
核心知識點:
- Java的類加載機制
- JVM相關:JVM記憶體模型和結構,GC原理,性能調優
- 泛型
- 集合體系
- 例外體系
- IO體系
- 多執行緒編程
- 反射
- Servlet
推薦資料:
- 《Java編程思想》
- 《Effective Java》
- 《深入理解Java虛擬機》
1.2 Shell、Python等腳本語言
介紹
此類腳本語言的意義在于輔助后端開發,包括系統運維,工具集成(借助管道、重定向),文本處理,資料計算等作業,提升后端作業效率
核心知識點(Shell)
- 常用的linux操作和運維命令
- 管道、重定向
- awk、sed等文本處理工具
推薦書籍
- 《linux與unix shell編程指南》
- 《鳥哥的Linux私房菜》
- 《Python編程 從入門到實踐》
1.3 SQL 語言
介紹
通用于傳統關系型資料庫和大資料場景的結構化查詢模型語言,傳統資料庫方面要精通mysql的sql語法;大資料場景主要掌握Hive SQL(Impala和Spark SQL等均在兼容Hive SQL)
核心知識點:
- 區分DDL和DML
- 經典查詢陳述句主要結構
- 表連接(內連接,左外連接,右外連接,全連接)
- 函式(普通函式,聚合函式)
- 索引
- 磁區
適用場景
- 傳統資料庫,傳統SQL:用于事務性資料操作,通常用于系統的業務庫;
- 大資料場景下的SQL:用于資料分析,互動式查詢,批量資料處理等,
推薦書籍
- MySQL:《高性能MySQL》
- Hive SQL:《Hive編程指南》
本人在這里整理了20多家公司的面試題,以及各種關于Spring、Spring boot、Spring MVC、MyBatis、MySQL、JVM等知識點,限于篇幅并沒有將答案寫在此文上,如果有需要的小伙伴可以加群1149778920來自行領取 暗號:qf

2. 開發工具
2.1 開發IDE Intellij/Eclipse
核心知識點:
- 配置良好代碼風格模板,包括檔案注釋,類注釋,方法注釋,縮進換行等
- 安裝使用必要的插件:代碼規范檢查插件(Alibaba Java Coding Guidelines),原始碼潛在bug檢查插件(pmd),位元組碼潛在bug檢查插件(findbugs)等
2.2 工程構建 MAVEN
核心知識點:
- maven 倉庫
- maven pom.xml檔案配置
- maven 構建的生命周期
- maven 插件
能力要求
- 學會配置maven多級工程結構
- 能夠解決工程構建中常常出現的jar包沖突等問題
- 熟練使用maven
推薦書籍
- 《Maven實戰》
2.3 版本管理 GIT
介紹
- git是一個開源的分布式版本控制系統,通過規范化的工具和流程,使得開發者之間高效協同,保持產品穩定運行
3. 開發/測驗框架
3.1 Spring框架體系 Spring MVC/Spring Boot
核心知識點:
- Spring框架的模塊組成
- IOC和AOP的設計思想和實作原理
- Bean的作用域和生命周期
參考說明
- 有條件地閱讀spring核心模塊的代碼,debug Spring框架的啟動和Bean服務的程序是比較好的理解spring原理的方式
- 最新的版本更新和參考檔案可以直接瀏覽 Spring官網
3.2 orm框架 mybatis/hibernate
mybatis介紹
持久層框架,通過xml映射的方式,使得開發者主要關心sql實作即可,由框架實作從物體到java類的映射,資料訪問層服務實作,訪問優化等等
核心知識點:
- 熟練配置使用mybatis,掌握mapper xml的寫法
- 會使用mybatis-generator的mvn插件自動生成DAO層代碼和xml配置
- 理解mybatis的一、二級快取,了解sql session創建程序和sql執行程序
推薦資料
- 最新的版本更新和參考檔案可以直接瀏覽 Mybatis官網
3.3 測驗框架 Junit/TestNG
核心能力要求:
- 熟練使用Junit/TestNG進行單元測驗,介面測驗
- 學會借助Mockito解決外部系統,模塊依賴的mock測驗
- 學會使用maven的surfire plugin和jacoco plugin等插件,度量測例的通過率,測驗代碼覆寫率等指標
4. 服務端中間件
4.1 key-value存盤系統
典型:redis/memcache
核心知識點:
- redis配置策略(持久化策略,替換演算法等)
- redis的部署模式(standalone單機,sentinel哨兵,cluster集群),哨兵的本質是主從切換,cluster是真正的分布式部署可以線性擴展記憶體資源
- redis支持的資料結構
適用場景
- 分布式session存盤,資料快取,分布式鎖,簡單的訊息佇列,計數器(累加器)
4.2 訊息佇列
典型:rabbitmq/kafka
核心知識:
- AMQP協議對應訊息模型中的主要概念
- 兩種集群模式對比:普通集群和鏡像集群(HA)
- kafka
- 基于zk的分布式拓撲結構
- 理解kafka支持的訊息的寫入流程,寫入模式,訊息的存盤模式,訊息的消費方式等
- rabbitmq
適用場景
- 訊息中間件一般適用于:系統之間需要高度解耦;異步傳輸資料(非阻塞);保證資料傳輸程序中資料可以持久化,解決生產端和消費端能力不一致的問題,避免峰值資料對下游服務節點的沖擊等
- 對比rabbitmq和kafka: rabbitmq主要適用資料可靠性,一致性要求比較高的場景;kafka主要適用資料吞吐量比較的場景,如日志資料的實時傳輸等
4.3 分布式檔案存盤
典型:網易nos/阿里云oss
適用場景:
- 存盤需要在分布式架構下共享的檔案物件:如前端靜態檔案,圖片資源,大檔案資源等
4.4 服務治理/RPC框架
典型:阿里dubbo
核心知識點
注冊中心,服務注冊、服務發現、負載均衡、序列化、反序列化、編碼、解碼等核心概念
適用場景
在相對復雜的應用服務網路中,扮演服務治理,服務解耦,負責均衡,簡化服務呼叫方式的作用
4.5 Java Web容器
典型:tomcat/jetty等
介紹
本質上是一個servlet容器,即可以在其上運行Java Web的應用程式
4.6 Nginx
介紹
nginx本質上是一個的HTTP和反向代理服務器
適用場景
http服務器,反向代理,軟負載均衡器等
4.7 關系型資料庫
典型: MYSQL/ORACLE
核心知識點
- 索引
- 事務與事務隔離級別
- 存盤方法
- 觸發器
- 不同關系型資料庫的SQL差異
推薦書籍
- 《高性能MySQL》
- 《Oracle從入門到精通》
5. 大資料存盤和計算框架等
核心能力要求:
- 了解大資料體系整體的框架、組成
- 熟悉各種大資料存盤,計算框架,查詢引擎等主要的架構、功能和適用場景
- 能夠在專案的架構程序中進行合理的大資料技術方案選型
6. 其他
6.1 權限相關
介紹:
- 權限相關涉及到:身份認證,鑒權,權限管理等
核心知識點:
- RBAC(基于角色的權限控制)模型
- 理解OAuth 2.0的設計思想和運行流程
6.2 安全相關
介紹
在后端開發中需要關注很多的安全問題,這些安全問題可能來自惡意的攻擊,也可能來自系統本身的安全性和健壯性不足,防止應用安全漏洞產生的前提是理解常見的漏洞概念、原理以及產生的原因
核心知識點
- 水平權限和垂直權限漏洞,以及在程式開發中怎樣避免
- SQL注入攻擊(mybatis預編譯可以避免)
- 常用的限流策略
- CSRF 攻擊
- XSS 攻擊
6.3 日志相關
核心知識點:
- Log4j、Logback、SLF4J之間的關系,應用中不可直接使用日志系統(Log4j、Logback)中的API,而應依賴使用日志框架SLF4J中的API
- 日志的等級(error/warn/info/debug)
- 日志的保留時間
6.4 例外處理相關
核心知識點:
- 例外的分類,正確區分例外處理方式
- 例外處理原則
- 學會借助spring框架等,將例外轉為對用戶或者呼叫方更加友好的錯誤碼和錯誤資訊
6.5 RestFul介面設計相關
介紹
restful在目前是使用較多的介面設計和服務間依賴http介面設計的主要原則,基于良好的約定規范,可以使得介面簡單易懂,提高團隊協作的效率
6.6 線上問題排查流程和工具
核心知識點:
-
系統問題排查:學會使用w/uptime、top、df、netstat、iostat以及各種可視化監控工具排查本機的負載、磁盤、記憶體、網路等系統問題
-
應用問題排查:學會依據應用系統錯誤日志以及jps、jinfo、jstat、jstack、jmap以及各種可視化監控工具,排查應用系統問題
-
資料庫問題排查:學會借助mysql慢查詢日志、explain以及各種可視化工具排查mysql使用程序中的各種問題
-
網路問題排查:學會借助telnet、ping、wget、nc等工具排查網路問題
6.7 多執行緒編程
核心知識點:
- Java執行緒相關介面和類的實作和關系
- Java執行緒池
- 執行緒同步,鎖等
6.8 網路相關
核心知識點:
- 掌握http協議訊息體劃分、連接和通信程序
- 掌握http主要的回傳狀態碼意義
- 掌握https協議的連接和通信程序
6.9 設計原則和設計模式
核心知識點:
- 單例模式
- 策略模式
- 代理模式
- 觀察者模式
- 裝飾模式
- 配接器模式
- 組合模式
- 工廠模式
- 模板方法模式
- …
- 單一職責原則
- 里氏替換原則
- 依賴倒置原則
- 介面隔離原則
- 迪米特法則
- 開閉原則
- 組合/聚合復用原則
- 七大設計原則
- 一些常用的設計模式
6.10 分布式系統設計相關
核心知識點:
- Quartz,基于資料庫鎖的搶占式分布式定時器
- 基于資料庫
- 基于快取
- 基于zookeeper
- 一致性理論
- 分布式事務解決方案
- 一致性模型
- CAP定理
- BASE 理論
- 強一致性
- 弱一致性
- 最終一致性
- eBay 事件佇列方案
- TCC (Try-Confirm-Cancel)補償模式
- 快取資料最終一致性
- 強一致性(兩段提交和三段提交模型, Paxos或者Raft演算法)
- 最終一致性
- SOA
- 微服務
- Servless
- 分布式系統架構設計
- 分布式事務
- 分布式鎖
- 分布式定時器
結尾…
另外如果想要更多關于并發編程相關的面試或其他相關的知識點以及面試真題的小伙伴們可以點擊群1149778920 來加入我們自行領取, 暗號:qf,本人還整理收藏了20年多家公司面試知識點以及各種技術點整理 下面有部分截圖希望能對大家有所幫助,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/224118.html
標籤:其他
