今年行情不好,想要守住工作並且漲薪的、想要跳槽或者找工作的,技術不行怎麼辦呢?其實說實話,除了多學習最新的技術外,還要有深度,所以有這種想法的,可以點這裡,暗號:cszq,提供免費的Java後端和架構方面的學習途徑和資料,你想要的內容,這裡都有。
Hashtable和HashMap的區別。
抽象類與介面的區別。
final關鍵字的使用和區別。
異常分類和處理機制。
JDK版本區別。
StringBuilder內部實現機制。
反射機制的使用。
匿名內部類的使用。
泛型的概念和使用。
弱參照和虛參照的概念和使用方式。
1、SpringMVC和Struts2的區別
2、Spring IOC和AOP的概念以及實現方式
3、Spring事務的管理
4、Hibernate與MyBatis的比較
5、Hibernate延遲載入的機制
1、GC演演算法有哪些
2、垃圾回收器有哪些
3、如何調優JVM
4、快取和NoSQL
5、快取的使用場景
6、快取命中率的計算
7、Memcache與Redis的比較
8、如何實現Redis的分片
9、MongoDB的特點
zookeeper的用途
dubbo的用途以及優點
dubbo的實現原理
資料結構和演演算法
單向連結串列的逆序排列
雙向連結串列的操作
1億個整數的倒序輸出
找出給定字串中最長迴文(迴文:abcdcba,兩端對稱)
Get和Post的區別
Https協定的實現
長連線的管理
Socket的基本方法
inner join和left join的區別
複雜SQL語句
資料庫優化方式
資料庫拆分方式
如何保證不同資料結構的資料一致性
什麼是XSS攻擊,具體如何實現?
開放問題:如何保障系統安全?
寫出一個設計模式的類圖
設計模式的意義是什麼
寫個單例模式的程式碼
如何避免Quartz重複啟動任務
執行緒池滿了如何處理額外的請求 同一個物件的連個同步方法能否被兩個執行緒同時呼叫
已將資料整理成PDF檔案,有需要的可以點選進入,暗號:cszq,所有Java面試資料免費提供,還有各種Java後端學習資料,有需要的也可以
關注+私信 我!
分類:
執行時異常(Runtime Exception) 受檢查異常(Checked Exception) 執行時異常:
必須繼承RuntimeException類, 定義方法時不必宣告會丟擲執行時異常。 呼叫方法時不必捕獲執行時異常。 受檢查異常:
不繼承自RumtimeException類 定義方法時需要丟擲可能會丟擲的Checked Exception 呼叫方法時需要捕獲Checked Exception或者繼續向上丟擲。 邏輯上:
執行時異常:一般不需要或者不知道如何處理此類異常; 受檢驗異常:一般需要知道如何處理可能發生的異常情況。 StringBuilder內部實現機制
StringBuilder內部有一個字元陣列,程式碼如下
char[] value; //字元陣列int count; //字串長度 每一次append操作都是將新的字串加入到可變長的字元陣列中,長度計算方式與ArrayList類似。呼叫toString()方法時,new一個String物件即可。
public String toString() { return new String(value, 0, count);// Create a copy, don’t share the array} ps: StringBuffer是執行緒安全的,StringBuilder是非執行緒安全的。
匿名內部類是沒有名字的類,只在某一處被使用,不會被多處呼叫,一般是某個父類別或介面的特定實現。
強參照: 一般的參照都是強參照,即使OutOfMemory也不會回收這部分被把持的參照記憶體。 軟參照(SoftReference): 如果記憶體空間足夠,垃圾回收器就不會回收它;如果記憶體空間不足了,就會回收這些物件的記憶體。只要垃圾回收器沒有回收它,該物件就可以被使用。++軟參照可以用來實現記憶體敏感的快取記憶體。++ 弱參照(WeakReference):弱參照的物件擁有更短暫的生命週期。當垃圾回收期發現只有若參照的物件,不論記憶體空間足夠與否,都會回收它。 虛參照:虛參照不會決定物件的生命週期,如果一個物件僅持有一個虛參照,那麼它隨時可能被回收。++虛參照主要用來跟蹤物件被垃圾回收器回收的活動。++ 開源框架
SpringMVC的方法級別的攔截,Struts2是類級別的攔截; SpringMVC是基於Servlet實現Controller,Struts2是基於Filter實現; SpringMVC效能和安全性高於Struts2; SpringMVC更加元件化和流程化,易於擴充套件,比如返回JSON通過設定@ResponseBody即可; Struts2更加無耦合,比較純粹,但是需要更多的自行開發的程式碼以支援更多功能。
分類:宣告式事務、程式設計式事務
宣告式事務:通過統一設定實現事務的統一管理,一般設定TransactionMananger以及相關屬性即可。 程式設計式事務(註解方式):在需要事務的方法上設定相關的註解(包括事務型別、回滾策略等) 事務型別:
PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED PROPAGATION_NEVER PROPAGATION_NESTED 事務隔離級別
ISOLATION_DEFAULT ISOLATION_READ_UNCOMMITTED ISOLATION_READ_COMMITTED ISOLATION_REPEATABLE_READ ISOLATION_SERIALIZABLE Hibernate與MyBatis的比較
Hibernate完全實現物件關係對映(ORM),MyBatis實現的是SQL Mapping MyBatis可以進行更為細緻的SQL優化,可以減少查詢欄位。比Hibernate容易掌握,Hibernate門檻較高。 Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果對映。 Hibernate對物件的維護和快取要比MyBatis好,對增刪改查的物件的維護要方便。 Hibernate資料庫移植性很好,MyBatis的資料庫移植性不好,不同的資料庫需要寫不同SQL。 Hibernate有更好的二級快取機制,可以使用第三方快取。MyBatis本身提供的快取機制不佳。
參照計數 複製 標記-清除 標記-壓縮 分代(新生代、老年代、永久代) 垃圾回收器有哪些
序列回收器:新生代序列回收器、老年代序列回收器 並行回收器:新生代ParNew回收器、新生代ParallelGC回收器、老年代ParallelGC回收器 CMS回收器:(Concurrent Mark Sweep、並行標記清除) G1回收器(1.7以後代替CMS回收器) 如何調優JVM
標準引數:
-client -server模式 -Xmn、-Xms、-Xmx 監控:jps、jstat、jinfo、jmap、jhat、jstack… Java 中堆和棧有什麼區別?
JVM 中堆和棧屬於不同的記憶體區域,使用目的也不同。
棧常用於儲存方法幀和區域性變數,而物件總是在堆上分配。 棧通常都比堆小,也不會在多個執行緒之間共用,而堆被整個 JVM 的所有執行緒共用。 快取和NoSQL
命中快取次數/(命中快取次數+未命中快取次數) = 命中率
Memcache與Redis的區別
memcache把資料存在記憶體之中,斷電後會掛掉;Redis部分資料持久化在硬碟上,斷電不會丟失。 memcache存的是key-value對,redis支援更多的資料結構和資料型別 memcache可以使用一致性hash做分散式,redis可以做主從同步 redis單執行緒,只使用1個cpu 如何實現Redis的分片
使用一致性雜湊對資料進行對映 實現方式:使用者端分片(每個使用者端對應一個分片)、代理協助分片、查詢路由分片; 使用redis叢集,如codis(豌豆莢,依賴zookeeper);
zookeeper作為分散式應用協調系統,已經用到很多分散式專案中。
可以用來完成統一命名服務、狀態同步服務、叢集管理、分散式應用設定項等管理工作。
建立節點 讀取節點資料 更新節點資料 刪除節點 監控節點變化 應用場景:
統一命名服務,使用create自動建立節點編號; 設定管理,多個節點的共用設定,當設定發生變化時,可利用zookeeper讓使用這些設定的節點獲得通知,進行重新載入等操作。如dubbo服務。 叢集管理:叢集選舉主節點,資源定位。 共用鎖 負載均衡 應用專案:
dubbo服務叢集、redis叢集、Hadoop叢集等
Dubbo是一個分散式服務架構,致力於提供高效能和透明化的RPC遠端服務呼叫方案,以及SOA服務治理方案。
將單項連結串列逆序排列
將單向連結串列逆序輸出,方法有三種:
遍歷連結串列,將每個節點的內容存入一個陣列中,然後逆序輸出陣列(最簡單的做法) 使用棧來逆序輸出 直接將連結串列(指標)逆序然後輸出
最後祝大家都能工作順利,年薪百萬!