你們好,我是魯班學院的阿琰!我是有着三年工做經驗的Java程序員。
目前一線城市的薪資水平在13到16K之間,可是找工做的時候並不只僅有工做經驗就好了,還須要必定的專業知識。若是你野心更大,想要進阿里美團頭條等等這些大廠的話,那就須要更多的專業知識。那麼,一個三年工做經驗的Java程序員應該要具有哪些知識呢?
我整理了以後發現,程序員須要懂好多的知識。java
這期視頻共有十大類內容
項目經驗
Java基礎知識
集合框架
多線程
JVM相關問題程序員
框架相關問題
消息中間件
Redis
數據庫
其餘
HR面試面試
### 一,項目經驗
項目經驗是程序員們最重要的財富,也是面試中必問的問題。通常面試官都會藉着項目經驗來考查應聘者的溝通能力和思考能力。三年工做經驗的程序員通常都會有兩個以上的項目經驗,但實際咱們大部分的狀況都是作產品的一個功能或一個模塊。 雖然咱們能很好的完成工做上的要求,可是對於面試這確定是不夠的。對於面試來講,咱們還要完成如下四點。算法
一、知道你的項目究竟是作什麼的,有哪些功能。
二、知道你作的項目在整個項目中所處的位置及做用,並能清晰地闡述模塊間的調用關係。
三、知道你項目的總體架構和使用到的中間件,並對中間件的原理有必定的瞭解。
四、能流暢地闡述本身在項目中解決過的比較複雜的問題。sql
項目經驗在於一朝一夕的積累,須要你們平時對本身的項目多積累,並且不少人會對本身的項目經驗不是頗有說服力而感到苦惱。 這裏有個小技巧,即便工做中碰見的問題不是你本身解決的,但只要你能搞懂弄會,誰又會在面試中說這個不是你弄的呢?數據庫
### 二,Java的基礎知識。
技術知識這塊面試仍是蠻常見的。不過大多問的比較簡單。這是我羅列的一些我曾被問到的問題,你們私下參考一下。
一、棧和隊列的區別
二、接口和抽象類的區別
三、Int和Integer的區別和自動拆箱/裝箱的相關問題
四、常量池相關問題
五、==和equals的區別
六、重載和重寫的區別
七、String和StringBuilder、StringBuffer的區別設計模式
### 三,集合框架。
集合框架的底層原理,是面試很常見的問題。不管去大公司面試,仍是去小公司面試都會問。只不過問深問淺的區別。
一、ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap的底層實現原理
二、1.7版本和1.8版本的HashMap的區別
三、1.7版本和1.8版本的ConcurrentHashMap的區別
四、HashMap能不能排序?HashMap的長度爲何要是2的冪次方?
不過無論怎麼樣,你們去面試的話,都要把上述的問題都儘可能弄懂。最低的要求就是把hashmap的底層原理弄懂。緩存
### 四,多線程。
一、建立線程的幾種方式?Wait,sleep分別是誰的方法,區別?線程間的通訊方式?
二、介紹下什麼是死鎖,碰見過死鎖嗎?你是怎麼排查的。(能夠經過jps排查)
三、建立線程池的幾種方式,線程池有什麼好處。
四、線程繼承和接口的區別,接口有什麼好處。安全
五、Synchronized、Lock、ReentrantLock的區別,用法及原理。
六、CountDownLatch與CyclicBarrier用法
七、ThreadLocal的用法和原理
八、Volatile關鍵字的做用和原理session
九、樂觀鎖和悲觀鎖
十、對公平鎖,非公平鎖,可重入鎖,自旋鎖,讀寫鎖的理解
十一、CAS是什麼及底層原理
十二、ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue等等堵塞隊列的理解
1三、ThreadPoolExecutor的傳入參數及內部工做原理
1四、給你一個具體的業務場景,讓你使用ThreadPoolExecutor建立一個適合的線程池
1五、分佈式環境下,怎麼保證線程安全
多線程通常是高級程序員面試中的重點。如今的項目高併發不少,因此面試多線程這塊仍是挺多的。通常大廠會問得很深。從第十點開始就蠻難的了,你們能夠根據本身的狀況酌情學習。
### 五,JVM相關問題
一、JVM內存機制
二、介紹下垃圾收集機制,垃圾收集有哪些算法,各自的特色
三、聊聊GC,談談Major GC,FullGe區別,垃圾收集器有哪些,他們的區別?
四、OutOfMemeryError這個錯誤你遇到過嗎?你是怎麼解決處理的?
五、JVM調優有哪些參數,介紹下,線上環境上,你是怎麼查看JVM的參數並進行調優的?
六、能不能本身寫一個類叫java.lang.String(類加載的過程,雙親委派模型)
JVM這塊一直是高級程序員面試中的重點。想拿高薪這塊必定得懂。並且不只懂,還要有必定的實戰經驗。
### 六,框架相關問題。
一、Spring用了哪些設計模式?Spring注入bean的方式?對SpringIOC和SpringAOP的理解?
二、Spring事務隔離級別和傳播機制?
三、Mybatis的緩存機制(一級緩存和二級緩存),Mybatis的mapper文件中#和$的區別
四、SpringMVC的流程
五、Spring和SpringBoot的區別?
六、對SpringBoot的理解
七、RPC框架有哪些,他們的區別?
八、Dubbo的使用和理解
九、Spring Cloud的使用和組件,談談你的理解
框架這塊一直都是面試的重點,不過根據個人經驗,框架這裏通常不會問的很深,不多碰到讓你說源碼,主要仍是考察你對框架的設計理解和框架的流程。
### 7、消息中間件,
一、大家公司是如何進行消息中間件的技術選型?
二、如何保證消息中間件的高可用?
三、如何保證消息中間件重複發送消息?
四、消息隊列積壓了大量的消息,你該怎麼處理?
五、如何保證消費者消費消息是有順序的?
六、讓你來開發一個消息中間件,你會怎麼架構?
消息中間件仍是蠻重要的,不管對面試仍是工做來講都是重點。你們必定要對這塊多研究,多瞭解。
### 八,Redis
一、大家公司爲何要使用Redis?Redis有幾種數據類型?
二、Redis持久化機制?Redis的過時策略?
三、怎麼保證Redis的高可用?
四、什麼是緩存穿透?如何避免?什麼是緩存雪崩?如何避免?
五、如何保證緩存與數據庫的雙寫一致性?
六、Redis單線程模型原理,爲何能支撐高併發?
七、Redis哨兵架構的理解和底層原理
如今高併發場景愈來愈多,基本面試必問緩存,只是或深或淺而已。比較常問的就是1到5,六、7想挑戰大廠的能夠去研究。
### 九,數據庫。
一、工做中你是怎麼優化sql的?
二、什麼狀況下,索引會失效?
三、數據庫的存儲引擎,好比:MySQL的MyISAM和InnoDB區別?
四、索引的最左原則
五、索引的底層原理
六、大家公司是怎麼進行分庫分表?分庫分表的方案
數據庫的優化通常都會問,涉及索引的地方會問的多些,還會問到難度比較高的用庫分表,這裏網上都有方案,通常都是主從庫或Mycat,你們能夠去學習瞭解一下。
### 十,其餘
一、分佈式事務是怎麼解決的?
二、分佈式session方案?
三、設計一個秒殺場景
四、怎麼防止表單屢次提交
五、Linux的基本操做命令
六、ElasticSearch的使用和原理
七、Zookeep的使用和原理
這塊主要是問你一些常見的業務場景,比較開放式,還會根據你本身的簡從來問。好比你的簡歷項目裏面有ElasticSearch,那麼面試官就會問你這些中間件的使用和原理。若是你成功地經過了全部的技術面,那麼恭喜你,你離收到offer無限接近了。
### 十一,HR面
若是你面試的是大公司,還有最後一個考驗,hr面試。這輪面試必須重視起來,即便前面的面試對你的評價再高,不少公司的hr對於面試者都有一票否決權。不過通常hr問的也很少。
一、簡歷中寫的過去工做經歷的離職緣由
二、當前公司薪資待遇
三、指望能到怎樣的一家公司
四、我的將來的發展方向
這裏主要說下第二點,當前公司的薪資待遇是能夠多報的,通常沒什麼公司會去審覈。不過最好也別虛高的過度。指不定有些公司入職的時候會要求你提供最近一家單位的銀行流水號,若是沒有虛高的過度的話,你還能夠用年終獎什麼的來搪塞。若是太高解釋不過去,那就很尷尬了。
好了,今天的分享就結束了,喜歡的朋友關注一下,點贊、投幣、收藏一鍵三連~