一個四五年的Java開發程序員,該准備哪些去面試?


 

上周面試了一周,感觸頗深,總結一下。

面試了公司大概有阿里,攜程,愛奇藝,唯品會,途牛,bilibili,大眾點評,阿里和愛奇藝是電話面試,其他現場面試。

首先,五年左右,應該算高級開發工程師,大部分面試不用去做題,背string和stringbuilder區別的,幾乎都是底層和遠離,分布式等。雖然一個程序員,在工作中大部分還是寫流水代碼,增刪查改。

1 JVM

這個大公司基本都會問,內存模型,GC,jvm都有哪些區域?棧楨存了什么?

常用垃圾回收器哪些,特點?jvm性能調優,這些從周志明的jvm特性那本書基本都有答案,一個高級程序員必讀,出去面試,至少得讀兩遍,理解,不是死記硬背,面試官會問的很細,你如果死記硬背,人家隨便一問,你就跪。

2 線程池

這個基本必考,高級程序員不會問你啟動線程哪幾種方式,都是高並發場景。比如四種線程池,都在那哪幾種場景使用的多。線程池的幾個重要參數哪些,這些重要參數,在不同線程池下比較。高並發下阻塞隊列用哪個,我記得是大眾點評問我的,用linkblockqueue還是arrayblockqueue,我當時候說,后者吧,隊列添加任務快,基於列表,人家說錯了,前者,array是連續的,回收的快,這些都是細節。剩下的就是阻塞隊列拒絕策略。默認都是拒絕,有個面試官問我,假如阻塞隊列滿了,請求拒絕,但是這些請求是重要的,怎么辦?這種情況實際開發中會遇到,每個系統總有個峰值,達到峰值,系統可能處理不了,他說,這個時候先把所有請求落數據庫,或者mq,后面處理,真實場景會遇到,可能之前你沒遇到,但是面試官會問這些,覺得你有沒有思考的能力。線程池,tomcat默認就有線程池,會問到調優,所有系統基本離不開吧。

3 鎖

這個也是必考,雖然開發中有時候不用,基本會問,syncnizched關鍵字,作用,類鎖,對象鎖,方法鎖區別?

靜態方法加鎖,兩線程會互斥嗎,非靜態方法,加鎖,會互斥嗎?這個比較簡單。這個關鍵字,內置對象鎖,jvm創建對象后,會在對象的對象頭,存着。然后和lock鎖區別,這個如果你去背,可能不理解,我是這么理解的,假如有個廁所,很多人想去上,假如是sync鎖,所有人會不定時去敲門,廁所有人嗎,非常耗性能,CPU切換,但是lock鎖,相當於加了個管理員,舉着個牌子,進去一個人,排着寫着有人,剩下的看到,就不會去敲門了,人走了,把牌子改下,Java,是基於volitale關鍵字,通過aqs保證,還有sync阻塞的,比如有個人在廁所玩手機,sync只能等。釋放鎖,但是lock,可以中斷,或其他操作。問的深的會問鎖優化之類的,雖然。開發基本用不到,但是你想拿高薪,必須要會。另外,數據庫的鎖會問。表鎖。lock的讀鎖,寫鎖,怎么用。原理。這塊必須深入理解。不然只能被虐。

4 緩存

這個基本必考,redis,問的問題挺多,es可能會問,分布式系統,redis的唯一ID能做什么?新數據來了,是先存數據庫還是redis,過期策略,什么時候用redis做緩存,什么時候用做數據庫,和es,mongo,區別。這個只是個緩存,稍微看下,不會問的很深。

5 MQ

 消息中間價,分布式系統基本使用,原理,哪幾個組成部分,kafka和rabbitmq,區別?

如何保證消息不丟失。基於哪種協議?他的好處?你的項目怎么使用它的。點對點,訂閱發布,區別,你的理解。

6 分布式

分布式是啥。一個服務器問題造成血崩怎么辦,四層負載均衡和七層區別,說下用過哪些RPC框架。dubbo基於哪些協議,服務如何注冊,如何被發現?這個基本都考些,當然,也不要求你都精通,大致原理懂就好。 

7 spring

bean的生命周期,spring得核心,spring的代理模式,動態代理,第三方cglib代理哪些場景使用,spring用了哪些設計模式。

spring的事務,傳播行為。哪些常用注解?

8 springmvc

原理,常用注解。和struts區別,這個也要花點時間准備。

9 集合

這個必考,重要重要重要,說三遍。哪些常用集合,幾種集合,區別,比如ArrayList和linklist區別,性能,這個是基礎,問的最多,最多,最多,hashmap,concurrentHashmap,JDK7和JDK8concurrentHashmap區別,實現,原理,兩種JDK的size() 方法怎么實現?這個最好把源碼看幾遍,什么初始化,擴容,底層為什么要用數組加鏈表加紅黑樹,什么是紅黑樹,這個大部分公司必考,看你能力。

10 數據庫

索引,必考,基於b+樹,唯一索引,普通索引,聯合索引,join是否讓索引失效,聯合索引的最左原則,兩個字段加了聯合索引,兩個一起用,或者第一個字段,查詢,都不會實現,用右邊的字段,失效,等等。有的會讓你手寫SQL,數據庫引擎,myisam和innoDB區別,基本不會問別的。

11 同步io阻塞io

nio bio aio 區別,用法,b阿里和愛奇藝都問了。

12 其他

其他問的不多,上面基本全了,性能優化。系統穩定性。問之前的項目。

總結 

大部分問的,開發用不到,但是想拿高薪。還是准備下基礎,因為公司會把這個面試情況衡量你是否是一個人才。另外,偶爾還會有筆試,去bilibili,途牛,筆試題,寫算法,哎,坑爹的,總之一句話,多准備,多面試。另外遇到面試官問的,你不會,要問他答案。不然下一個面試官問到你還是不會。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM