前言mysql
如今大多數Java程序員都走入了盲點,覺得來年跳槽就能漲一點薪,可是你有沒有想過跳槽漲薪前提是創建在你要具有跳槽漲薪的價值,但願下面這些你看完以後能對你有所幫助。程序員
跳槽要學習的技術就多了面試
跳槽時時刻刻都在發生,可是我建議你們跳槽以前,先想清楚爲何要跳槽。切不可跟風,看到同事一個個都走了,本身也盲目的開始面試起來(期間也沒有準備充分),究竟是由於技術緣由(影響本身的發展,偏移本身規劃的軌跡),仍是錢給少了,不受重視。redis
準備不充分的面試,徹底是浪費時間,更是對本身的不負責(若是title很高,當我沒說)。算法
今天給你們分享下chenssy在此次跳槽中整理的Java面試大綱,其中大部分都是面試過程當中的面試題,能夠對照這查漏補缺,固然了,這裏所列的確定不可能覆蓋所有方式。sql
項目介紹數據庫
大部分狀況,這是一場面試的開門題,面試官問這個問題,主要是考察你的概述能力和全局視野。有的人常常抱怨本身天天在堆業務,但沒有成長。事實上,不少狀況下確實在堆業務,但並非沒有成長的。並不是作中間件或者技術架構纔是成長,例如咱們的需求分析能力,溝通協做能力,產品思惟能力,抽象建模能力等都是一個很是重要的硬實力。設計模式
如今進入正文。數組
一、明確項目是作什麼的 二、明確項目的價值。(爲何作這個項目,它解決了用戶什麼痛點,它帶來什麼價值?) 三、明確項目的功能。(這個項目涉及哪些功能?) 四、明確項目的技術。(這個項目用到哪些技術?) 五、明確我的在項目中的位置和做用。(你在這個項目的承擔角色?) 六、明確項目的總體架構。 七、明確項目的優缺點,若是從新設計你會如何設計。 八、明確項目的亮點。(這個項目有什麼亮點?) 九、明確技術成長。(你經過這個項目有哪些技術成長?)
Java基礎緩存
一、List 和 Set 的區別 二、HashSet 是如何保證不重複的 三、HashMap 是線程安全的嗎,爲何不是線程安全的(最好畫圖說明多線程環境下不安全)? 四、HashMap 的擴容過程 五、HashMap 1.7 與 1.8 的 區別,說明 1.8 作了哪些優化,如何優化的? 六、final finally finalize 七、強引用 、軟引用、 弱引用、虛引用 八、Java反射 九、Arrays.sort 實現原理和 Collection 實現原理 十、LinkedHashMap的應用 十一、cloneable接口實現原理 十二、異常分類以及處理機制 1三、wait和sleep的區別 1四、數組在內存中如何分配
Java 併發
一、synchronized 的實現原理以及鎖優化? 二、volatile 的實現原理? 三、Java 的信號燈? 四、synchronized 在靜態方法和普通方法的區別? 五、怎麼實現全部線程在等待某個事件的發生纔會去執行? 六、CAS?CAS 有什麼缺陷,如何解決? 七、synchronized 和 lock 有什麼區別? 八、Hashtable 是怎麼加鎖的 ? 九、HashMap 的併發問題? 十、ConcurrenHashMap 介紹?1.8 中爲何要用紅黑樹? 十一、AQS 十二、如何檢測死鎖?怎麼預防死鎖? 1三、Java 內存模型? 1四、如何保證多線程下 i++ 結果正確? 1五、線程池的種類,區別和使用場景? 1六、分析線程池的實現原理和線程的調度過程? 1七、線程池如何調優,最大數目如何確認? 1八、ThreadLocal原理,用的時候須要注意什麼? 1九、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差異? 20、LockSupport工具 2一、Condition接口及其實現原理 2二、Fork/Join框架的理解 2三、分段鎖的原理,鎖力度減少的思考 2四、八種阻塞隊列以及各個阻塞隊列的特性
Spring
一、BeanFactory 和 FactoryBean? 二、Spring IOC 的理解,其初始化過程? 三、BeanFactory 和 ApplicationContext? 四、Spring Bean 的生命週期,如何被管理的? 五、Spring Bean 的加載過程是怎樣的? 六、若是要你實現Spring AOP,請問怎麼實現? 七、若是要你實現Spring IOC,你會注意哪些問題? 八、Spring 是如何管理事務的,事務管理機制? 九、Spring 的不一樣事務傳播行爲有哪些,幹什麼用的? 十、Spring 中用到了那些設計模式? 十一、Spring MVC 的工做原理? 十二、Spring 循環注入的原理? 1三、Spring AOP的理解,各個術語,他們是怎麼相互工做的? 1四、Spring 如何保證 Controller 併發的安全?
Netty
一、BIO、NIO和AIO 二、Netty 的各大組件 三、Netty的線程模型 四、TCP 粘包/拆包的緣由及解決方法 五、瞭解哪幾種序列化協議?包括使用場景和如何去選擇 六、Netty的零拷貝實現 七、Netty的高性能表如今哪些方面
分佈式相關
一、Dubbo的底層實現原理和機制 二、描述一個服務從發佈到被消費的詳細過程 三、分佈式系統怎麼作服務治理 四、接口的冪等性的概念 五、消息中間件如何解決消息丟失問題 六、Dubbo的服務請求失敗怎麼處理 七、重連機制會不會形成錯誤 八、對分佈式事務的理解 九、如何實現負載均衡,有哪些算法能夠實現? 十、Zookeeper的用途,選舉的原理是什麼? 十一、數據的垂直拆分水平拆分。 十二、zookeeper原理和適用場景 1三、zookeeper watch機制 1四、redis 1五、分佈式集羣下如何作到惟一序列號 1六、如何作一個分佈式鎖 1七、用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎 1八、MQ系統的數據如何保證不丟失 1九、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題 20、zookeeper的選舉策略 2一、全局ID
數據庫
一、mysql分頁有什麼優化 二、悲觀鎖、樂觀鎖 三、組合索引,最左原則 四、mysql 的表鎖、行鎖 五、mysql 性能優化 六、mysql的索引分類:B+,hash;什麼狀況用什麼索引 七、事務的特性和隔離級別
緩存
一、Redis用過哪些數據數據,以及Redis底層怎麼實現 二、Redis緩存穿透,緩存雪崩 三、如何使用Redis來實現分佈式鎖 四、Redis的併發競爭問題如何解決 五、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的 六、Redis的緩存失效策略 七、Redis集羣,高可用,原理 八、Redis緩存分片 九、Redis的數據淘汰策略
JVM
一、詳細jvm內存模型 二、講講什麼狀況下回出現內存溢出,內存泄漏? 三、說說Java線程棧 四、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢? 五、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題? 六、類加載爲何要使用雙親委派模式,有沒有什麼場景是打破了這個模式? 七、類的實例化順序 八、JVM垃圾回收機制,什麼時候觸發MinorGC等操做 九、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的 十、各類回收器,各自優缺點,重點CMS、G1 十一、各類回收算法 十二、OOM錯誤,stackoverflow錯誤,permgen space錯誤
一些小建議
總結
工做1-5年開發經驗,當大家提出漲工資的時候,或者要offer的時候底氣怎麼樣,是否是底氣十足,不給漲工資就辭職,是否是有自信提出來主管、或者是項目經理都能贊成,他們至關設法把你留住。若是這樣你纔是成功。什麼技術都沒有何談工資!
若是你對技術提高很感興趣,能夠加入個人Java高級羣:834962734,裏面都是同行,有資源共享。歡迎一到五年的工程師加入,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們,歡迎進羣一塊兒深刻交流學習。
合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!