階段一:數(shù)據(jù)結構
一、基礎
1、基本的數(shù)據(jù)結構
[](1)基礎概念
[](2)數(shù)組
[](3)鏈表
[](4)棧:
[](5)隊列
2、樹
[](1)哈夫曼樹
[](2)平衡二叉樹
[](3)紅黑樹
[](4)B樹、B+樹
[](5)LSM樹
3、圖
[](1)最小生成樹
[](2)最短路徑算法
[](3)拓撲排序
4、排序
[](1)選擇排序
[](2)冒泡排序
[](3)插入排序
[](4)快速排序
[](5)歸并排序
[](6)希爾排序
[](7)基數(shù)排序
[](8)java中的排序工具
[](9)排序算法的特點總結和性能比較
二、中級
[]1、KMP算法
[]2、布隆過濾器
[]3、并查集
[]4、符號表
[]5、漢諾塔
常見的面試題總結:
1、手寫排序算法,比較他們之間的性能
2、解決hash沖突的方法
3、字符串和二叉樹的手寫實現(xiàn)
最主要的就是手寫代碼。對于每一種數(shù)據(jù)結構和算法,都要能夠手寫實現(xiàn)
階段二:java基礎
1、常見的集合類
[](1)基礎類型和封裝類
[](2)String
[](3)System
2、關鍵字
[](1)transient
[](2)instanceof
[](3)final
[](4)static
[](5)this
[](6)super
[](7)void
3、高級
[](1)泛型
[](2)枚舉
[](3)異常
[](4)注解
[](5)泛型
[](6)反射
[](7)進制
[](8)編碼轉化
4、集合類
[](1)總體框架
[](2)Collection
[](3)ArrayList
[](4)fail-fast原理
[](5)LinkedList
[](6)Vector
[](7)Stack
[](8)HashMap
[](9)TreeMap
[](10)LinkedHashMap
[](11)HashSet
[](12)TreeSet
5、其他
[](1)String為什么不可變
[](2)java8新特性
[](3)java9、10、11、12新特性
[](4)== 和 equal的區(qū)別
[](5)HashCode方法的作用
[](6)創(chuàng)建對象的幾種方式
每一個知識點不僅僅是機試中的重點,也是面試中的重點
對于java基礎知識,復習的方法就是在你學完了上面的知識點之后,在??途W(wǎng)等網(wǎng)站一天幾十道題進行訓練。然后進行錯題總結
階段三:設計模式
1、創(chuàng)建型模式
[](1)工廠方法模式
[](2)抽象工廠模式
[](3)單例模式
[](4)建造者模式
[](3)原型模式
2、結構型模式
[](1)適配器模式
[](2)裝飾模式
[](3)代理模式
[](4)外觀模式
[](5)橋接模式
[](6)組合模式
[](7)享元模式
3、行為型模式
[](1)策略模式
[](2)模板模式
[](3)觀察者模式
[](4)迭代子模式
[](5)責任鏈模式
[](5)命令模式
[](5)備忘錄模式
[](5)狀態(tài)模式
[](1)訪問者模式
[](2)中介者模式
[](3)解釋器模式
- ★★☆ 設計模式的作用。
- ★★★ 手寫單例模式,特別是雙重檢驗鎖以及靜態(tài)內部類。
- ★★★ 手寫工廠模式。
- ★★★ 理解 MVC,結合 SpringMVC 回答。
- ★★★ 理解代理模式,結合 Spring 中的 AOP 回答。
- ★★★ 分析 JDK 中常用的設計模式,例如裝飾者模式、適配器模式、迭代器模式等。
階段四:java虛擬機
[]1、java內存結構
[]2、垃圾回收
[]3、類加載機制
[]4、內存分配和回收策略
[]5、java中的四種引用
[]6、jvm調優(yōu)(時機、原則、目標、步驟、參數(shù))
[]7、內存溢出(原因、例子、解決方式)
全是重點
階段五:操作系統(tǒng)
[]1、操作系統(tǒng)的基本特征
[]2、進程與線程的本質區(qū)別、以及各自的使用場景。
[]3、進程的幾種狀態(tài)。
[]4、常見的進程同步方式和線程同步
[]5、進程通信方法的特點以及使用場景。(分為windows和linux,以及共有的)
[]6、進程任務調度算法的特點以及使用場景。
[]7、死鎖的原因、必要條件、死鎖處理。手寫死鎖代碼。java是如何解決死鎖的。
[]8、線程實現(xiàn)的方式。
[]9、協(xié)程的作用。
[]10、內存管理的方式:段式、頁式、段頁式。比較他們的區(qū)別
[]11、虛擬內存的作用,分頁系統(tǒng)實現(xiàn)虛擬內存原理。
[]12、頁面置換算法的原理,特別是 LRU 的實現(xiàn)原理,最好能手寫,再說明它在 Redis 等作為緩存置換算法。
[]13、分析靜態(tài)鏈接的不足,以及動態(tài)鏈接的特點。
可以看書進行總結,不過這里已經(jīng)整理好了。
階段六:Linux
一、基礎
[]1、Linux目錄結構
[]2、Linux常見命令
[]3、Linux文件系統(tǒng)管理
[]4、Linux用戶系統(tǒng)管理
[]5、Linux進程管理
[]6、Linux高效的文本文件處理命令
二、中級
[]1、Linux網(wǎng)絡管理
[]2、Liux加密解密原理以及數(shù)據(jù)安全
[]3、Linux系統(tǒng)備份和恢復
[]4、shell編程
常見的面試題總結:
[]1、常見命令的考察,推薦指數(shù):。
[]2、 僵尸進程與孤兒進程的區(qū)別,從 SIGCHLD 分析產(chǎn)生僵尸進程的原因
[]3、 硬鏈接與軟鏈接的區(qū)別。
[]4、 僵尸進程與孤兒進程的區(qū)別,從 SIGCHLD 分析產(chǎn)生僵尸進程的原因
常見問題鏈接地址:
階段七:網(wǎng)絡
1、基礎知識
[](1)五層協(xié)議(各自的作用)
[](3)物理層(集線器、交換機、路由器作用、以太網(wǎng)特點以及幀結構)
[](4)數(shù)據(jù)鏈路層
[](5)傳輸層
[](6)傳輸層
[](7)應用層
[](8)HTTP
2、socket
[](1)阻塞式IO
[](2)非阻塞式IO
[](3)復用IO
[](4)信號驅動IO
[](5)異步IO
[](6)五大IO模型比較
3、序列化
[](1)java序列化
[](2)protoBuf
[](3)ProtoStuff
[](4)avro
4、Netty
[](1)基本案例
[](2)粘包問題解決
[](3)編碼問題解決
[](4)實時通信問題解決
[](5)源碼分析
5、遠程調用
[](1)rmi
[](1)thrift
- ★★★ 各層協(xié)議的作用,以及 TCP/IP 協(xié)議的特點。
- ★★☆ 以太網(wǎng)的特點,以及幀結構。
- ★★☆ 集線器、交換機、路由器的作用,以及所屬的網(wǎng)絡層。
- ★★☆ IP 數(shù)據(jù)數(shù)據(jù)報常見字段的作用。
- ★☆☆ ARP 協(xié)議的作用,以及維護 ARP 緩存的過程。
- ★★☆ ICMP 報文種類以及作用;和 IP 數(shù)據(jù)報的關系;Ping 和 Traceroute 的具體原理。
- ★★★ UDP 與 TCP 比較,分析上層協(xié)議應該使用 UDP 還是 TCP。
- ★★★ 理解三次握手以及四次揮手具體過程,三次握手的原因、四次揮手原因、TIME_WAIT 的作用。
- ★★★ 可靠傳輸原理,并設計可靠 UDP 協(xié)議。
- ★★☆ TCP 擁塞控制的作用,理解具體原理。
- ★★☆ DNS 的端口號;TCP 還是 UDP;作為緩存、負載均衡。
- ★★★ GET 與 POST 比較:作用、參數(shù)、安全性、冪等性、可緩存。
- ★★☆ HTTP 狀態(tài)碼。
- ★★★ Cookie 作用、安全性問題、和 Session 的比較。
- ★★☆ 緩存 的Cache-Control 字段,特別是 Expires 和 max-age 的區(qū)別。ETag 驗證原理。
- ★★★ 長連接與短連接原理以及使用場景,流水線。
- ★★★ HTTP 存在的安全性問題,以及 HTTPs 的加密、認證和完整性保護作用。
- ★★☆ HTTP/1.x 的缺陷,以及 HTTP/2 的特點。
- ★★★ HTTP/1.1 的特性。
- ★★☆ HTTP 與 FTP 的比較。
- ★★☆ 五種 IO 模型的特點以及比較。
- ★★★ select、poll、epoll 的原理、比較、以及使用場景;epoll 的水平觸發(fā)與邊緣觸發(fā)。
階段八:并發(fā)基礎
1、基礎知識
[](1)線程的概念以及案例
[](2)Thread生命周期狀態(tài)
[](3)Thread構造函數(shù)
[](4)java內存模型
[](5)線程通信
[](6)sleep和wait的區(qū)別
[](7)synchronized
[](8)volatile
[](9)ThreadLocal
2、原子包
[](1)AtomicInteger
[](2)CAS原理
[](3)AtomicBoolean
[](4)AtomicStampedReferece
[](5)Unsafe
3、并發(fā)工具
[](1)CountDownLatch
[](2)CyclicBarrier
[](3)Semaphore
[](4)Exchanger
4、鎖機制
[](1)ReentrantLock
[](2)ReenReadWriteLock
[](3)StampedLock
[](4)ForkJoin
[](5)Phaser
[](6)AQS原理
5、線程池
[](1)Excutor
[](1)Future&Callable
[](5)CompletionService
[](5)ExcutorService
[](5)ThreadFactory
[](5)CompleteableFuture
6、并發(fā)容器
[](1)ConcurrentHashMap
[](2)ConcurrentSkipListMap
[](3)ConcurrentSkipSet
[](4)ConcurrentLinkedQueue
[](5)CopyOnWriteArrayList
[](6)BlockingQueue
1、一共35個知識點,但是實際可能會更多,基本上都是重點,面試??键c
階段九:微服務架構
1、servlet
[](1)servlet的生命周期
[](2)API(get和post區(qū)別、forward和redirect區(qū)別)
[](3)JSP和servlet的比較
[](4)四種會話跟蹤技術
[](5)request對象的主要方法
[](6)cookie和session的比較
2、Srping
[](1)Spring架構(七大模塊概述)
[](1)Spring上下文和容器
[](5)Spring加載機制
[](5)SpringBean探秘
[](5)AOP與代理
3、SpringMVC
[](1)SpringMVC架構與流程
[](1)DispatcherServlet的實現(xiàn)
[](5)每一控制器的流程解讀
4、Springboot
[](1)SpringBoot入門
[](1)整合其他技術
[](5)打包部署
[](5)actuator監(jiān)控
[](5)源碼分析
5、SpringCloud
[](1)服務注冊與發(fā)現(xiàn)Eureka
[](2)客戶端負載均衡Ribbon
[](3)聲明式Rest調用Feign
[](4)容錯機制Hystrix
[](5)服務網(wǎng)關Zuul
[](6)配置中心Apollo
[] (7)負載均衡算法
階段十:分布式架構
1、基礎
[](1)CAP理論
[](2)BASE理論
2、框架
[](1)Dubbo服務治理
[](1)Zookeeper協(xié)調
[](5)Nginx
階段十一:數(shù)據(jù)庫
1、Mysql
[](1)UML圖
[](2)Mysql基本操作
[](3)視圖、函數(shù)、存儲過程、變量、事務、流程控制、游標、權限管理
[](4)索引
[](5)查詢性能優(yōu)化
[](6)存儲引擎的比較
[](7)切分:水平和豎直,sharding策略和問題
[](8)復制:主從復制和讀寫分離
2、Redis
3、MongoDB
4、ElasticSearch
5、中間件:AQ、RQ、Kafka
6、JDBC
7、Mybatis
8、fastDFS
9、Mycat
- ★★★ B+ Tree 原理,與其它查找樹的比較。
- ★★★ MySQL 索引以及優(yōu)化。
- ★★★ 查詢優(yōu)化。
- ★★★ InnoDB 與 MyISAM 比較。
- ★★☆ 水平切分與垂直切分。
- ★★☆ 主從復制原理、作用、實現(xiàn)。
- ★☆☆ redo、undo、binlog 日志的作用。
- ★★☆ 字典和跳躍表原理分析。
- ★★★ 使用場景。
- ★★★ 與 Memchached 的比較。
- ★☆☆ 數(shù)據(jù)淘汰機制。
- ★★☆ RDB 和 AOF 持久化機制。
- ★★☆ 事件驅動模型。
- ★☆☆ 主從復制原理。
- ★★★ 集群與分布式。
- ★★☆ 事務原理。
- ★★★ 線程安全問題。
階段十二:工具
1、git
2、日志
3、測試Junit
4、Docker
5、Tomcat
6、正則表達式
7、Maven
8、k8s
階段十三:安全
1、Shiro
2、對稱加密
3、數(shù)字簽名
4、Base64
階段十三:面試算法題
我的公眾號:java的架構師技術棧。有本系列的文章還有教程
