目錄:
一、Java基礎
二、JavaEE基礎
三、JavaEE進階
四、數據庫
五、數據結構&算法
六、高級(服務器)
一、Java基礎
1.1 面向對象(封裝、繼承、多態)
- 訪問權限修飾符(public,protect,default,private)作用域;
- 方法重寫、重載的概念和區別;
- 抽象類和接口區別;類是單繼承,接口是多實現·····;
- 代碼塊執行順序:靜態代碼塊->構造代碼塊->構造方法;
- Object類常用方法:hashCode,equals,toString,wait,notify,notifyAll;
- String,StringBuffer,StingBuild各包含哪些方法,三者區別;
1.2 集合
1.2.1 集合框架
圖1-1 集合框架
1.2.2 各類集合特點
- List集合:有序,元素可重復;
- Set集合:無序,元素唯一;
- List和Set集合皆可通過for循環、for-each、Iterator迭代器遍歷。
- Map集合:以key-value形式存儲元素,無迭代器,遍歷時通過轉Set集合遍歷;
- Map集合轉Set集合:方法一:使用keySet方法;方法二:使用entrySet方法。
- hashtable實現原理:底層由數組+鏈表實現,有一個叫table的Entry類型數組,索引由鏈表存放。
1.3 IO流
1.3.1 IO流框架
圖1-2 IO流框架
1.3.2 IO流分類
- BIO方式(同步阻塞),適用於連接數目比較小且固定的架構,這種方式對服務器資源要求比較高,並發局限於應用中,JDK1.4以前的唯一選擇,但程序直觀簡單易理解。
- NIO方式(同步非阻塞),適用於連接數目多且連接比較短(輕操作)的架構,比如聊天服務器,並發局限於應用中,編程比較復雜,JDK1.4開始支持。
- AIO方式(異步非阻塞),使用於連接數目多且連接比較長(重操作)的架構,比如相冊服務器,充分調用OS參與並發操作,編程比較復雜,JDK7開始支持。
1.4 反射
- 獲取class的三種方法:class.forName("類名");類名.class;對象名.getClass()。
二、JavaEE基礎
2.1 JSP&Servlet相關知識點
- 詳見:https://www.cnblogs.com/guoxh/p/6532923.html
2.2 EL&JSTL
- 詳見:http://www.cnblogs.com/guoxh/p/7586856.html
2.3 Session&Cookie
2.4 Filter&Listener
三、JavaEE進階
3.1 常用框架(重點)
3.1.1 Struts&SpringMVC
3.1.2 Spring
圖3-1 SpringFramework
- IOC(控制反轉),DI(依賴注入)。
- AOP(面向切面編程),jdbcTemplate。
- 事務管理。
- 核心容器
- Beans
- Core
- Context
- Expression Language
3.1.3 Hibernate&Mybatis
- Hibernate核心API
- Configuration
- SessionFactory
- Session
- Query
- Transaction
3.1.4 SSM整合
- SSM工作流程
圖3-2 SSM工作流程
3.1.5 前端框架
- jQuery,easyUI,Vue等
3.2 多線程(重點)
- Java多線程實現方法:Runnable、Thread;
- Java內存模型是什么?
- JVM原理;
- 線程通信&線程同步(webservice服務);
- Java中Runnable和Callable有什么不同?
- Java中的volatile 變量是什么?
- Java中堆和棧有什么不同?
- 什么是線程池? 為什么要使用它?
- Java線程池中submit()和 execute()方法有什么區別?
3.3 設計模式(重點)
- 單例模式
- 工廠模式
- 代理模式
3.4 Socket網絡編程
3.4.1 TCP
- 面向連接,安全可靠,效率低;
- 如何理解三次握手;
- 短連接 & 長連接;
3.4.2 UDP
- 無連接,不安全,效率高;
3.5 Java垃圾回收機制GC(重點)
3.5.1內存泄漏
- 如何處理內存泄漏
3.6 JVM原理(重點)
四、數據庫
4.1 數據庫基本操作
- 數據庫的創建和刪除;
- 表的創建、修改和刪除;
- 表中數據的增、刪,改,查;
- 復制表結構;
- 索引的分類,索引能提高查詢效率的原理;
4.2 事務
4.2.1 事務四大特性(ACID)
- A原子性:事務是一個最小的單元,不可再分。
- C一致性:事務中的所有操作或者全部起作用,或者全部失效,不存在部分起作用,部分不起作用的情況。
- I隔離性:事務之間相互隔離,彼此相互獨立。
- D持久性:事務對數據庫的操作會反映到數據庫中。
4.2.2 事務的隔離級別
- read uncommitted:一個事務可以讀取另一個事務未提交的數據,這個數據被稱為臟數據。
- read committed:其他事務頻繁地提交數據,另個事務(時間跨度大)在未提交之前多次讀取提交的數據,可能出現多次讀取的數據不一致。
- repeatable read:事務首次從數據庫中讀取數據,然后將數據保存在內存中,以后不是從數據庫,而是從內存中讀取數據。這種隔離級別可能導致讀取的數據與數據庫中數據不一致,出現“幻讀”。
- serializable:一個事務操作完數據以后,其他事務才可以操作。
詳見:http://www.cnblogs.com/guoxh/p/7686657.html
4.3 數據庫連接池
4.4 存儲過程&觸發器、
4.5 數據庫索引
4.5.1 索引分類
- 主鍵索引;
- 普通索引;
- 唯一性索引;
- 聚集索引。
4.5.2 索引類型
- BTree索引(使用較廣);
- Hash索引。
4.6 具體數據庫
4.6.1 關系型數據庫
- MySQL
- SQLServer
4.6.2 非關系型數據庫NoSQL(重點)
- 特點:高並發,高可用,高可擴展,大數據存儲;
- redis
- 1)Redis數據類型:String,List,Set,Zset;
- 2)Redis事務管理
- Redis支持事務,但是不支持回滾,一般在不怎么考慮事務的情況下使用Redis。
- 使用命令Watch實現類似回滾效果。
- 命令MULTI:開啟事務;EXEC:執行事務隊列。
- discard命令清空事務隊列。
- 3)Redis實現持久化的兩種方式
- 1. filesnapshotting文件快照
Redis會將數據集的快照dump到dump.rdb文件中。此外,我們也可以通過配置文件來修改Redis服務器dump快照的頻率,在打開6379.conf文件之后,我們搜 索save,可以看到下面的配置信息:
save 900 1 #在900秒(15分鍾)之后,如果至少有1個key發生變化,則dump內存快照。
save 300 10 #在300秒(5分鍾)之后,如果至少有10個key發生變化,則dump內存快照。
save 60 10000 #在60秒(1分鍾)之后,如果至少有10000個key發生變化,則dump內存快照。
-
-
- 2. AOF日志
-
在Redis的配置文件中存在三種同步方式,它們分別是:
appendfsync always #每次有數據修改發生時都會寫入AOF文件。
appendfsync everysec #每秒鍾同步一次,該策略為AOF的缺省策略。
appendfsync no #從不同步。高效但是數據不會被持久化。
-
- 4)Redis常用命令
- MULTI:開啟事務;EXEC:執行事務隊列。
- SET:設置String類型key;LPUSH:設置List類型key;SADD:設置Set類型key;ZADD:設置ZSet類型key。
- 4)Redis常用命令
- mongodb
- Hbase
五、數據結構&算法
5.1 數據結構
5.1.1 集合結構
5.1.2 線性結構
- 線性表->順序表&鏈表
- 棧(Stack)
- 隊列
- 數組&廣義表
- 串
5.1.3 樹形結構
5.1.4 圖狀結構
5.2 算法
- 選擇排序
- 冒泡排序
- 快速排序
- 二分法查找
- 順序查找
- ···
六、高級
6.1 shell編程
6.1.1 了解常用的Linux命令
6.1.2 熟悉在Linux上部署項目
- 如何將JavaWeb項目部署到Linux服務器上:https://blog.csdn.net/gulu_gulu_jp/article/details/50994003 / https://www.cnblogs.com/jxgapyw/p/6082451.html
6.2 Java開發工具
- Eclipse
- git/svn
- Maven
- Myeclipse
- IDEA
6.3 服務器(重點)
- Tomcat
- Nginx
6.4 高並發&大數據處理-解決方案(重點)
集群的主要是IT公司在做,可以保障重要數據安全;負載均衡主要是為了分擔訪問量,避免臨時的網絡堵塞,主要用於電子商務類型的網站;分布式服務器主要是解決跨區域,多個單個節點達到高速訪問的目前,一般是類似CDN的用途的話,會采用分布式服務器。分布式是指將不同的業務分布在不同的地方,集群指的是將幾台服務器集中在一起,實現同一業務。在現有網絡結構之上,負載均衡提供了一種廉價有效的方法擴展服務器帶寬和增加吞吐量,加強網絡數據處理能力,提高網絡的靈活性和可用性。
- 分布式集群
- zookeeper工具
- 緩存
- 負載均衡
- 使用Nginx反向代理服務器。
- SQL優化
- 數據庫分庫分表(MyCat)
6.5 異常處理機制
6.5.1 拋異常
- throws
- throw
6.5.2 捕獲異常
- try-catch-finally