首先激率,五年左右,應(yīng)該算高級開發(fā)工程師版姑,大部分面試不用去做題柱搜,背string和stringbuilder區(qū)別的,幾乎都是底層和遠(yuǎn)離剥险,分布式等聪蘸。雖然一個程序員,在工作中大部分還是寫流水代碼表制,增刪查改健爬。
1 JVM
這個大公司基本都會問,內(nèi)存模型么介,GC娜遵,jvm都有哪些區(qū)域?棧楨存了什么壤短?
常用垃圾回收器哪些设拟,特點(diǎn)慨仿?jvm性能調(diào)優(yōu),這些從周志明的jvm特性那本書基本都有答案纳胧,一個高級程序員必讀镰吆,出去面試,至少得讀兩遍跑慕,理解万皿,不是死記硬背,面試官會問的很細(xì)核行,你如果死記硬背牢硅,人家隨便一問,你就跪芝雪。
2 線程池
這個基本必考减余,高級程序員不會問你啟動線程哪幾種方式,都是高并發(fā)場景绵脯。比如四種線程池佳励,都在那哪幾種場景使用的多休里。線程池的幾個重要參數(shù)哪些蛆挫,這些重要參數(shù),在不同線程池下比較妙黍。高并發(fā)下阻塞隊(duì)列用哪個悴侵,我記得是大眾點(diǎn)評問我的,用linkblockqueue還是arrayblockqueue拭嫁,我當(dāng)時候說可免,后者吧,隊(duì)列添加任務(wù)快做粤,基于列表浇借,人家說錯了,前者怕品,array是連續(xù)的妇垢,回收的快,這些都是細(xì)節(jié)肉康。剩下的就是阻塞隊(duì)列拒絕策略闯估。默認(rèn)都是拒絕,有個面試官問我吼和,假如阻塞隊(duì)列滿了涨薪,請求拒絕,但是這些請求是重要的炫乓,怎么辦刚夺?這種情況實(shí)際開發(fā)中會遇到献丑,每個系統(tǒng)總有個峰值,達(dá)到峰值侠姑,系統(tǒng)可能處理不了阳距,他說,這個時候先把所有請求落數(shù)據(jù)庫结借,或者mq,后面處理船老,真實(shí)場景會遇到咖熟,可能之前你沒遇到馍管,但是面試官會問這些罗捎,覺得你有沒有思考的能力。線程池,tomcat默認(rèn)就有線程池,會問到調(diào)優(yōu)菩彬,所有系統(tǒng)基本離不開吧矿卑。
3 鎖
這個也是必考,雖然開發(fā)中有時候不用业舍,基本會問态罪,syncnizched關(guān)鍵字耗啦,作用,類鎖肢执,對象鎖拙徽,方法鎖區(qū)別召庞?
靜態(tài)方法加鎖,兩線程會互斥嗎骤菠,非靜態(tài)方法专控,加鎖柏蘑,會互斥嗎碑定?這個比較簡單。這個關(guān)鍵字崖疤,內(nèi)置對象鎖,jvm創(chuàng)建對象后,會在對象的對象頭霍衫,存著。然后和lock鎖區(qū)別疾掰,這個如果你去背,可能不理解侮腹,我是這么理解的嘲碧,假如有個廁所,很多人想去上父阻,假如是sync鎖愈涩,所有人會不定時去敲門,廁所有人嗎加矛,非常耗性能履婉,CPU切換,但是lock鎖斟览,相當(dāng)于加了個管理員毁腿,舉著個牌子,進(jìn)去一個人苛茂,排著寫著有人已烤,剩下的看到,就不會去敲門了味悄,人走了草戈,把牌子改下,Java侍瑟,是基于volitale關(guān)鍵字擅腰,通過aqs保證,還有sync阻塞的熊杨,比如有個人在廁所玩手機(jī)依沮,sync只能等。釋放鎖庭瑰,但是lock星持,可以中斷,或其他操作弹灭。問的深的會問鎖優(yōu)化之類的督暂,雖然。開發(fā)基本用不到穷吮,但是你想拿高薪逻翁,必須要會。另外捡鱼,數(shù)據(jù)庫的鎖會問八回。表鎖。lock的讀鎖,寫鎖缠诅,怎么用溶浴。原理。這塊必須深入理解管引。不然只能被虐士败。
4 緩存
這個基本必考,redis汉匙,問的問題挺多拱烁,es可能會問,分布式系統(tǒng)噩翠,redis的唯一ID能做什么戏自?新數(shù)據(jù)來了,是先存數(shù)據(jù)庫還是redis伤锚,過期策略擅笔,什么時候用redis做緩存,什么時候用做數(shù)據(jù)庫屯援,和es猛们,mongo,區(qū)別狞洋。這個只是個緩存弯淘,稍微看下,不會問的很深吉懊。
5 MQ
消息中間價庐橙,分布式系統(tǒng)基本使用,原理借嗽,哪幾個組成部分态鳖,kafka和rabbitmq,區(qū)別恶导?
如何保證消息不丟失浆竭。基于哪種協(xié)議惨寿?他的好處邦泄?你的項(xiàng)目怎么使用它的。點(diǎn)對點(diǎn)裂垦,訂閱發(fā)布虎韵,區(qū)別,你的理解缸废。
6 分布式
分布式是啥。一個服務(wù)器問題造成血崩怎么辦,四層負(fù)載均衡和七層區(qū)別企量,說下用過哪些RPC框架测萎。dubbo基于哪些協(xié)議,服務(wù)如何注冊届巩,如何被發(fā)現(xiàn)硅瞧?這個基本都考些,當(dāng)然恕汇,也不要求你都精通腕唧,大致原理懂就好。
7 spring
bean的生命周期瘾英,spring得核心枣接,spring的代理模式,動態(tài)代理缺谴,第三方cglib代理哪些場景使用但惶,spring用了哪些設(shè)計(jì)模式。
spring的事務(wù)湿蛔,傳播行為膀曾。哪些常用注解?
8 springmvc
原理阳啥,常用注解添谊。和struts區(qū)別,這個也要花點(diǎn)時間準(zhǔn)備察迟。
9 集合
這個必考斩狱,重要重要重要,說三遍卷拘。哪些常用集合喊废,幾種集合,區(qū)別栗弟,比如ArrayList和linklist區(qū)別污筷,性能,這個是基礎(chǔ)乍赫,問的最多瓣蛀,最多,最多雷厂,hashmap惋增,concurrentHashmap,JDK7和JDK8concurrentHashmap區(qū)別改鲫,實(shí)現(xiàn)诈皿,原理林束,兩種JDK的size() 方法怎么實(shí)現(xiàn)?這個最好把源碼看幾遍稽亏,什么初始化壶冒,擴(kuò)容,底層為什么要用數(shù)組加鏈表加紅黑樹截歉,什么是紅黑樹胖腾,這個大部分公司必考,看你能力瘪松。
10 數(shù)據(jù)庫
索引咸作,必考,基于b+樹宵睦,唯一索引记罚,普通索引,聯(lián)合索引状飞,join是否讓索引失效毫胜,聯(lián)合索引的最左原則,兩個字段加了聯(lián)合索引诬辈,兩個一起用酵使,或者第一個字段,查詢焙糟,都不會實(shí)現(xiàn)口渔,用右邊的字段,失效穿撮,等等缺脉。有的會讓你手寫SQL,數(shù)據(jù)庫引擎悦穿,myisam和innoDB區(qū)別攻礼,基本不會問別的。
11 同步io阻塞io
nio bio aio 區(qū)別栗柒,用法礁扮,b阿里和愛奇藝都問了。
12 其他
其他問的不多瞬沦,上面基本全了太伊,性能優(yōu)化。系統(tǒng)穩(wěn)定性逛钻。問之前的項(xiàng)目僚焦。
如果你依然在編程的世界里迷茫,不知道自己的未來規(guī)劃曙痘,可以加入高級程序員群:647355916 里面可以與大神一起交流并走出迷茫芳悲。小白可進(jìn)群免費(fèi)領(lǐng)取學(xué)習(xí)資料立肘,看看前輩們是如何在編程的世界里傲然前行。
要關(guān)注技術(shù)前沿芭概。不管做任何工作赛不,如果只顧著低頭做事,而不曉得抬頭看天罢洲。那么不管做多久,自身的水平總是停留在畢業(yè)時的水平文黎;如果基礎(chǔ)又忘記了太多惹苗,那還不如畢業(yè)生。 關(guān)注技術(shù)前沿耸峭,并不是要求跟進(jìn)每一個新技術(shù)桩蓉,而只需關(guān)注目前主流媒體經(jīng)常宣傳的一些新技術(shù)、新思想劳闹。關(guān)注這些技術(shù)前沿的動向院究,并能將他們與自己從事的工作聯(lián)系起來作一些深入思考,那么這是向面試官宣揚(yáng)你的學(xué)習(xí)能力的一種好辦法本涕。
最后一句小公司比較看重知識的廣度业汰,大公司更看重知識的深度。每個人都有每個人合適的選擇菩颖,但唯一不變的就是提升自己样漆。