一名年薪30W+的Java程序員分享:想去大公司,前三年要懂些什么?

一名年薪30W+的Java程序員分享:想去大公司,前三年要懂些什么?

目前一線城市的薪資水平在13到40k之間,但是找工作的時候并不僅僅有工作經(jīng)驗就行了,還需要一定的專業(yè)知識。如果你野心更大,想要進阿里美團頭條等等這些大廠的話,那就需要更多的專業(yè)知識。那么,一個三年工作經(jīng)驗的Java程序員應(yīng)該要具備哪些知識呢?

我整理了之后發(fā)現(xiàn),程序員需要懂好多的知識。

一、項目經(jīng)驗

項目經(jīng)驗是程序員們最重要的財富,也是面試中必問的問題。一般面試官都會借著項目經(jīng)驗來考查應(yīng)聘者的溝通能力和思考能力。三年工作經(jīng)驗的程序員一般都會有兩個以上的項目經(jīng)驗,但實際我們大部分的情況都是做產(chǎn)品的一個功能或一個模塊。雖然我們能很好的完成工作上的要求,但是對于面試這肯定是不夠的。對于面試來說,我們還要完成以下四點。

· 知道你的項目到底是做什么的,有哪些功能。

· 知道你做的項目在整個項目中所處的位置及作用,并能清晰地闡述模塊間的調(diào)用關(guān)系。

· 知道你項目的整體架構(gòu)和使用到的中間件,并對中間件的原理有一定的了解。

· 能流暢地闡述自己在項目中解決過的比較復(fù)雜的問題。

二、Java的基礎(chǔ)知識

技術(shù)知識這塊面試還是蠻常見的。不過大多問的比較簡單。這是我羅列的一些我曾被問到的問題,大家私下參考一下。

· 棧和隊列的區(qū)別

· 接口和抽象類的區(qū)別

· Int和Integer的區(qū)別和自動拆箱/裝箱的相關(guān)問題

· 常量池相關(guān)問題

三、集合框架

集合框架的底層原理,是面試很常見的問題。無論去大公司面試,還是去小公司面試都會問。只不過問深問淺的區(qū)別。

· ArrayList,LinkedList,HashMap,LinkedHashMap,ConcurrentHashMap的底層實現(xiàn)原理

· 1.7版本和1.8版本的HashMap的區(qū)別

· HashMap能不能排序?HashMap的長度為什么要是2的冪次方?

不過不管怎么樣,大家去面試的話,都要把上述的問題都盡量弄懂。最低的要求就是把hashmap的底層原理弄懂。

四、多線程

· 創(chuàng)建線程的幾種方式?Wait,sleep分別是誰的方法,區(qū)別?線程間的通信方式?

· 介紹下什么是死鎖,遇見過死鎖嗎?你是怎么排查的。(可以通過jps排查)

· 創(chuàng)建線程池的幾種方式,線程池有什么好處。

· 線程繼承和接口的區(qū)別,接口有什么好處。

· Synchronized、Lock、ReentrantLock的區(qū)別,用法及原理。

· ThreadLocal的用法和原理

· Volatile關(guān)鍵字的作用和原理

· 樂觀鎖和悲觀鎖

· 對公平鎖,非公平鎖,可重入鎖,自旋鎖,讀寫鎖的理解

· CAS是什么及底層原理

· ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue等等堵塞隊列的理解

· ThreadPoolExecutor的傳入?yún)?shù)及內(nèi)部工作原理

· 給你一個具體的業(yè)務(wù)場景,讓你使用ThreadPoolExecutor創(chuàng)建一個適合的線程池

· 分布式環(huán)境下,怎么保證線程安全

多線程一般是高級程序員面試中的重點?,F(xiàn)在的項目高并發(fā)很多,所以面試多線程這塊還是挺多的。一般大廠會問得很深。從第十點開始就蠻難的了,大家可以根據(jù)自己的情況酌情學習。

五、JVM相關(guān)問題

· JVM內(nèi)存機制

· 介紹下垃圾收集機制,垃圾收集有哪些算法,各自的特點

· 聊聊GC,談?wù)凪ajor GC,F(xiàn)ullGe區(qū)別,垃圾收集器有哪些,他們的區(qū)別?

· OutOfMemeryError這個錯誤你遇到過嗎?你是怎么解決處理的?

· JVM調(diào)優(yōu)有哪些參數(shù),介紹下,線上環(huán)境上,你是怎么查看JVM的參數(shù)并進行調(diào)優(yōu)的?

· 能不能自己寫一個類叫java.lang.String(類加載的過程,雙親委派模型)

JVM這塊一直是高級程序員面試中的重點。想拿高薪這塊一定得懂。而且不僅懂,還要有一定的實戰(zhàn)經(jīng)驗。

六、框架相關(guān)問題

· Spring用了哪些設(shè)計模式?Spring注入bean的方式?對SpringIOC和SpringAOP的理解?

· Spring事務(wù)隔離級別和傳播機制?

· Mybatis的緩存機制(一級緩存和二級緩存),Mybatis的mapper文件中#和$的區(qū)別

· SpringMVC的流程

· Spring和SpringBoot的區(qū)別?

· 對SpringBoot的理解

· RPC框架有哪些,他們的區(qū)別?

· Dubbo的使用和理解

· Spring Cloud的使用和組件,談?wù)勀愕睦斫?/p>

框架這塊一直都是面試的重點,不過根據(jù)我的經(jīng)驗,框架這里一般不會問的很深,很少碰到讓你說源碼,主要還是考察你對框架的設(shè)計理解和框架的流程。

七、消息中間件

· 你們公司是如何進行消息中間件的技術(shù)選型?

· 如何保證消息中間件的高可用?

· 如何保證消息中間件重復(fù)發(fā)送消息?

· 消息隊列積壓了大量的消息,你該怎么處理?

· 如何保證消費者消費消息是有順序的?

· 讓你來開發(fā)一個消息中間件,你會怎么架構(gòu)?

消息中間件還是蠻重要的,無論對面試還是工作來說都是重點。大家一定要對這塊多研究,多了解。

八、Redis

· 你們公司為什么要使用Redis?Redis有幾種數(shù)據(jù)類型?

· Redis持久化機制?Redis的過期策略?

· 怎么保證Redis的高可用?

· 什么是緩存穿透?如何避免?什么是緩存雪崩?如何避免?

· 如何保證緩存與數(shù)據(jù)庫的雙寫一致性?

· Redis單線程模型原理,為什么能支撐高并發(fā)?

· Redis哨兵架構(gòu)的理解和底層原理

現(xiàn)在高并發(fā)場景越來越多,基本面試必問緩存,只是或深或淺而已。比較常問的就是1到5,6、7想挑戰(zhàn)大廠的可以去研究。

九、數(shù)據(jù)庫

· 工作中你是怎么優(yōu)化sql的?

· 什么情況下,索引會失效?

· 數(shù)據(jù)庫的存儲引擎,比如:MySQL的MyISAM和InnoDB區(qū)別?

· 索引的最左原則

· 索引的底層原理

· 你們公司是怎么進行分庫分表?分庫分表的方案

數(shù)據(jù)庫的優(yōu)化一般都會問,涉及索引的地方會問的多些,還會問到難度比較高的用庫分表,這里網(wǎng)上都有方案,一般都是主從庫或Mycat,大家可以去學習了解一下。

十、其他

· 分布式事務(wù)是怎么解決的?

· 分布式session方案?

· 設(shè)計一個秒殺場景

· 怎么防止表單多次提交

· Linux的基本操作命令

· ElasticSearch的使用和原理

· Zookeep的使用和原理

這塊主要是問你一些常見的業(yè)務(wù)場景,比較開放式,還會根據(jù)你自己的簡歷來問。比如你的簡歷項目里面有ElasticSearch,那么面試官就會問你這些中間件的使用和原理。如果你成功地通過了所有的技術(shù)面,那么恭喜你,你離收到offer無限接近了。

只知其概念而不知深入運用是達不到基本要求的,針對以上的知識點我準備了一套實用于所以開發(fā)人員的核心知識體系和深入PDF文檔(基礎(chǔ)知識-JVM-設(shè)計模式-Redis-數(shù)據(jù)結(jié)構(gòu)與算法-spring全家桶等全部有深入解析)
感興趣的可以到我的Java學習圈子: 免費獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容