Java能力和面試能力,這是兩個方面的技能,可以這樣說,如果不準(zhǔn)備,一些大神或許也能通過面試,但能力和工資有可能被低估。再仔細(xì)分析下原因,面試中問的問題,雖然在職位介紹里已經(jīng)給出了范圍,但針對...
作者| hsm_computer
責(zé)編|伍杏玲
出品|CSDN博客
Java能力和面試能力,這是兩個方面的技能,可以這樣說,如果不準(zhǔn)備,一些大神或許也能通過面試,但能力和工資有可能被低估。再仔細(xì)分析下原因,面試中問的問題,雖然在職位介紹里已經(jīng)給出了范圍,但針對每個點,面試官的問題是隨機想的,甚至同一個面試官在兩場相似的面試?yán)铮岬膯栴}也未必一樣。
也就是說,如果讓面試官自由提問,那么一旦問到你不熟悉的點,你可能就答不上,如果運氣不好,再外加上不知道面試引導(dǎo)技巧等因素,真有可能面試官的提問全落在你不熟悉的范圍內(nèi),這樣就非常可惜了。與其這樣,還不如事先準(zhǔn)備外帶面試引導(dǎo),這樣或許你的能力未必行,但你可以盡可能地通過引導(dǎo)展示你的亮點,從而提升面試通過的可能性。在本文里,就將講述事先準(zhǔn)備Java亮點和面試中引導(dǎo)面試官提問的技巧。
根據(jù)職位介紹微調(diào)簡歷,這關(guān)系到能否有面試機會
雖然這點和本文的主題無關(guān),但如果沒有面試機會,那甚至無法展示引導(dǎo)技能,所以還是來啰嗦一下。篩選簡歷的人,除了會看學(xué)歷專業(yè)等硬條件外,更會看相關(guān)經(jīng)驗的商業(yè)項目經(jīng)驗,這在職位介紹上一定能體現(xiàn)出來,比如初級開發(fā),一般需要SSM等框架的1年經(jīng)驗,高級開發(fā)一般需要3年,再外帶些諸如Netty,數(shù)據(jù)庫調(diào)優(yōu)等方面的技能。
如果看到一份簡歷上,沒有明顯的相關(guān)商業(yè)項目經(jīng)驗(學(xué)習(xí)項目不算),那么這份簡歷甚至沒面試機會,這就是為什么很多初級開發(fā)簡歷大多石沉大海的原因。其實職位介紹上提到的技能,甚至很多初級開發(fā)應(yīng)該也有項目經(jīng)驗,但這些人就不寫清楚,這可能只能怪自己了。這塊給出的經(jīng)驗如下。
1、簡歷上多積累商業(yè)項目經(jīng)驗,而且里面用到的技術(shù)盡可能是Java的,如果你可以湊出半年商業(yè)項目經(jīng)驗,那絕別寫5個月。如果是畢業(yè)生缺乏商業(yè)項目經(jīng)驗,也得多找些學(xué)習(xí)項目寫到簡歷上,至于幫老師干的項目以及實習(xí)項目,那當(dāng)商業(yè)項目寫。
2、一般職位介紹里,大多提到SSM,Oracle等技術(shù),這些技術(shù)在你的項目里,至少應(yīng)該用過其它類似吧,那么別客氣,這些技術(shù)關(guān)鍵字盡可能地出現(xiàn)在你簡歷中的項目介紹里,比如人家要有Oracle經(jīng)驗,你哪怕是有MySQL,也寫上,不寫就說明你沒數(shù)據(jù)庫開發(fā)經(jīng)驗,寫了就算有相關(guān)經(jīng)驗,類似技術(shù)點也照此辦理。
3、每份工作的技術(shù)要求一定不同,那么你在投簡歷前,一定得微調(diào),在你項目里做過的前提下,盡可能在你這份簡歷中,體現(xiàn)出相關(guān)技術(shù)。
4、一般對出初級開發(fā),如果沒至少半年Java(可能再具體下是SSM等框架)商業(yè)項目經(jīng)驗,而且簡歷里看不到職位介紹里出現(xiàn)的數(shù)據(jù)庫,框架等技能關(guān)鍵字,這份簡歷基本沒機會,高級開發(fā)一般是要3年相關(guān)經(jīng)驗。
5、這里不提倡編項目,也不提倡編技術(shù),即你項目里沒用到的技術(shù)你寫到簡歷中,但話說回來,一般公司要求的技術(shù)都很普通,你在項目里哪怕沒做過,好歹同事有人做過,你可以看下相關(guān)代碼,或者你參與過調(diào)試此類問題。
所以哪怕是初級開發(fā),你的技能應(yīng)該能對上大多數(shù)職位介紹,如果對不上就學(xué),也應(yīng)該很快能對上,只要你的簡歷上有足夠的Java商業(yè)項目經(jīng)驗,而且出現(xiàn)大多數(shù)技術(shù)關(guān)鍵字,至少能有面試機會。
結(jié)合項目和線上問題,優(yōu)先準(zhǔn)備分布式組件的亮點
面試一般從介紹項目開始,在我的如何在面試中介紹自己的項目經(jīng)驗這篇博文里,給出了相關(guān)內(nèi)容,但本文的主題是事先準(zhǔn)備外帶面試時引導(dǎo),那么在面試前,該如何準(zhǔn)備亮點呢?先從最值錢的分布式組件亮點準(zhǔn)備起。
比如可以準(zhǔn)備通過看日志,解決過Redis、Dubbo等方面的線上問題。這塊其實連初級開發(fā)也有機會接觸,比如Dubbo方面,超時時間沒設(shè)好,比如設(shè)了10秒,平時沒事,但一旦訂單模塊調(diào)風(fēng)控模塊出錯,過了10秒再返回出錯,這樣導(dǎo)致整條(基于Http的)鏈路長時間保持,累計起來就導(dǎo)致資源耗盡最終系統(tǒng)崩潰,或者Redis超時時間沒設(shè)或設(shè)置很長(1個星期),導(dǎo)致Redis的內(nèi)容在內(nèi)存中緩存過多,導(dǎo)致OOM問題。這些問題,哪怕是初級開發(fā),應(yīng)該也有機會接觸。
這方面該怎么準(zhǔn)備?
1、簡歷上寫上在項目里用過Redis或Dubbo組件,并排查過類似問題。
2、看些基本的Redis和Dubbo接口方法。
3、尤其看些可能導(dǎo)致問題點的配置,比如超時時間怎么設(shè)。
4、復(fù)習(xí)下Linux命令,了解如何通過Linux命令看日志排查問題。
上述是最基本的,如果有MyCAT、Netty、Kafka方面的經(jīng)驗,比如Mycat分庫字段怎么設(shè),解決過Netty半包和粘包問題,Kakfa解決過因消息重發(fā)而導(dǎo)致的不冪等問題,你都可以寫到簡歷上作為亮點。但本文給出的保本技能亮點,比如Redis和Dubbo超時而導(dǎo)致的問題排查,應(yīng)該大家都有機會接觸。
別光背題,結(jié)合你解決過的線上問題或項目講
網(wǎng)上有不少分布式(以及其它方面)的面試題,比如Netty或Dubbo底層細(xì)節(jié)問題,這些有用,但如果你背熟了,面試?yán)镒疃嗟玫降脑u價是“了解分布式組件理論”,聊勝于無,如果對于要有分布式組件經(jīng)驗的工作,你就懸了。對于分布式組件,大家實現(xiàn)該如何準(zhǔn)備呢?(其實后文提到的亮點也一樣)
1、一定要應(yīng)用在項目里,因為面試官只關(guān)心對應(yīng)的商業(yè)項目經(jīng)驗,比如你的Dubbo是用在訂單系統(tǒng)調(diào)會員系統(tǒng)方法里,你的MyCat、Netty等是用在什么場景,這點簡歷上未必能體現(xiàn)出,但面試時一定要說,這樣能證明你用過。
2、分析問題的能力優(yōu)于開發(fā)能力,所以你最好再結(jié)合一個場景說明,比如在項目介紹時,你外帶一句,Dubbo方面我解決過因超時而導(dǎo)致的問題,然后等面試官來問,問的時候,你大致說下,然后面試官看你對Linux看日志的命令,以及Dubbo關(guān)于超時時間的配置以及問題上下文說得沒毛病,那么應(yīng)該也就信了。
3、這時可以再結(jié)合一些面試題準(zhǔn)備下細(xì)節(jié),比如看Netty堆外內(nèi)存,線程模型,Redis數(shù)據(jù)結(jié)構(gòu)。有些面試官聽你說出解決問題的說辭,可能就不問了,有些可能會再問些底層問題,那么你這時候再說下。
4、這里大家可以對比下兩種表現(xiàn)方式,一種是什么也不準(zhǔn)備,或者只準(zhǔn)備背網(wǎng)上的題目。等面試官問,那么面試官一定不客氣,想到哪問哪,比如Netty會問很細(xì),你平時的項目經(jīng)驗未必涵蓋到,如果你再無法結(jié)合應(yīng)用講清楚,那面試官可能認(rèn)為你只有理論經(jīng)驗。
另一種是項目介紹時拋出,而且找機會通過解決過的實際問題拋出,外帶稍微了解下細(xì)節(jié),這樣不僅能很容易讓面試官感覺你有實際項目經(jīng)驗,更能展示“看日志解決實際問題”的能力。兩者差別一看就知道,更何況其實只要方法得到,準(zhǔn)備其實也不難。
數(shù)據(jù)庫調(diào)優(yōu)、虛擬機調(diào)優(yōu)及排查OOM問題的說辭
按值錢的技能排序,對于一般的初級和高級開發(fā)而言,除了分布式組件,下面就是調(diào)優(yōu)方面的能力了,具體可以是分布式調(diào)優(yōu),這之前講過, 還有數(shù)據(jù)庫調(diào)優(yōu)和虛擬機調(diào)優(yōu)。同樣除了在簡歷上明寫之外,還該做哪些準(zhǔn)備呢?
數(shù)據(jù)庫調(diào)優(yōu):
1、熟悉索引,包括索引結(jié)構(gòu),復(fù)合索引和回表,這塊應(yīng)該大家都會說,同樣要結(jié)合項目案例說。
2、單機版,通過看執(zhí)行計劃,調(diào)優(yōu)SQL語句,這塊怎么準(zhǔn)備?項目中,會在Linux上設(shè)置,如果有超過10秒的SQL就打印出來,然后通過執(zhí)行計劃看耗時點,比如大多是走全表掃描,或者有了索引沒用到,或者子SQL運行了多次,再往深講就是Oracle里連接方式不對。你通過執(zhí)行計劃看到問題所在后,就對應(yīng)修改,比如建復(fù)合索引,或者通過with語句把子查詢提取出來。
總之這里你得體現(xiàn)出通過日志看長SQL,以及通過執(zhí)行計劃看耗時點。至于如何修改,大多數(shù)候選人都能說,但你更知道前兩點, 就比別人強了。
3、如果你感覺還有能力,可以再講些MyCAT分庫分表和Redis方面的調(diào)優(yōu)能力,畢竟這塊涉及到分布式組件。這方面可以準(zhǔn)備的項目說辭是:比如業(yè)務(wù)請求里,會經(jīng)常用公司ID向風(fēng)控模塊看風(fēng)險情況,那么就可以用ID做鍵,風(fēng)控字段做值,另外再把null放到鍵里,以放緩存擊穿。
另外對于一個千萬級別的大表,你可以用ID作為分表字段,分10個表,根據(jù)最后一位的值定位到具體的表。同時排查所有的SQL語句,把一些可能全表關(guān)聯(lián)的SQL語句,比如帶group by和多表關(guān)聯(lián),或者用Java業(yè)務(wù)寫,或者優(yōu)化。同時再網(wǎng)上看些面試題準(zhǔn)備些相關(guān)MyCAT和Redis的語法說辭。這樣你會額外增加“分布式性能調(diào)優(yōu)”方面的經(jīng)驗。
在虛擬機方面,我另外有篇博文《在面試中如何展示虛擬機和內(nèi)存調(diào)優(yōu)技能》,大家可以照著準(zhǔn)備,總之也是先結(jié)合項目展開,然后圍繞虛擬機結(jié)構(gòu)展開調(diào)優(yōu)技能,再可以照這篇文章內(nèi)部類、final與垃圾回收,面試時你一說,面試官就知道,進(jìn)一步展示你的能力,同時再能照如下的范例,說出你解決過的OOM問題:
第一步,發(fā)現(xiàn)系統(tǒng)很卡,或者日志里頻繁出現(xiàn)OOM異常。
第二步,用dump文件看OOM時的內(nèi)存鏡像,看的工具可以是JMAT。這兩個步驟是通用的。
第三步,通過dump文件,再結(jié)合日志上下文,發(fā)現(xiàn)了OOM的原因,比較簡單的原因是Redis緩存超時時間過長,或者是ThreadLocal里的對象用好沒remove(這塊還涉及到弱引用,大家可以自己去查,本文不展開),或者創(chuàng)建線程池時,等待隊列設(shè)置成了無界。
或者你在Mybatis里,where條件都是帶if的,即如果傳入id和name再拼裝where id = xxx之類的語句,在一種場景里,都沒傳條件,所以where后面不帶條件,把數(shù)據(jù)庫里記錄全撈出來了,導(dǎo)致OOM。
如果你甚至可以說到Netty堆外內(nèi)存管理不善而導(dǎo)致的問題,如果能說到這個程度,甚至面試架構(gòu)師都行。
第四步,解決。發(fā)現(xiàn)問題后,對癥下藥解決就很容易,比如降低Redis超時時間,或者修改好對應(yīng)的代碼。但既然你說是根據(jù)線上問題排查出來的,那么就得說如何解決,善始善終。
總之這里是結(jié)合線上問題發(fā)現(xiàn)的,所以就別說些因Connection對象沒關(guān)閉,大的HashMap用好沒clear之類的問題了,倒不是這些原因不會引發(fā)OOM問題,而是這些問題大多會在上線前測試階段解決掉了,你再把它們說成線上問題,可能會暴露你們項目組能力不行。
Java核心方面:準(zhǔn)備集合,線程和異常處理等方面的亮點
通過上述分布式組件和調(diào)優(yōu)方面的說辭,你展示的能力已經(jīng)比別人強很多了,雖然相比之下,Java核心方面的能力屬于單機版的技能,但畢竟屬于基礎(chǔ)技能,你除了基本問題之外,也得適當(dāng)準(zhǔn)備亮點。如下給出些同樣適用于初級開發(fā)的亮點。
1、集合方面,可以準(zhǔn)備下HashMap和HashCode的底層代碼,同樣可以準(zhǔn)備下ArrayList和快速失效(fast fail)的底層代碼,然后再進(jìn)一步看下ConcurrentHashMap的讀寫并發(fā)管理部分的代碼,因為其中包含volatile,散列表數(shù)據(jù)結(jié)構(gòu)和線程并發(fā)部分的技能。
而且JDK1.7和1.8 ConcurrentHashMap的底層代碼實現(xiàn)起來還不同,你如果找到機會通過這個對象展示多線程并發(fā)和數(shù)據(jù)結(jié)構(gòu)的能力,或許Java核心方面,面試官就不問別的問題了。
2、線程方面,準(zhǔn)備下鎖、volatile、線程池和ThreadLocal的說辭,具體通過ConcurrentHashMap了解下鎖(1.7)版本和synchronized+volatile(1.8版本)的用法,以及ThreadLocal里可能引發(fā)內(nèi)存泄漏的問題,這些點網(wǎng)上都有,本文就不展開了,其實也未必多,能講清楚就行了。
3、異常方面,準(zhǔn)備下你在項目里的異常處理方法實踐說辭,比如盡量縮小try...catch的范圍,finally從句里放釋放資源的代碼,catch里應(yīng)盡量處理異常,先用IOException等專業(yè)異常處理,再用Exception兜底,以及盡量縮小異常的影響范圍,別讓程序一遇異常就崩。
Java核心方面,其實還有很多可以挖掘的點,比如String、final關(guān)鍵字等,而且Java核心方面,網(wǎng)上面試題太多了,這里就不再展開了。
同樣這里要結(jié)合項目案例,比如在測試階段發(fā)現(xiàn)了因為遍歷集合而導(dǎo)致的問題,同時展開快速失效,或者在壓測階段發(fā)現(xiàn)因HashMap在高并發(fā)場景下丟數(shù)據(jù)所以用ConcurrentHashMap,同時展示其中的volatile和并發(fā)等細(xì)節(jié)。
其實上述技能不復(fù)雜,初級開發(fā)照樣能說,但涉及到了底層代碼,尤其ThreadLocal還涉及到弱引用和OOM問題,更能體現(xiàn)實力,哪怕你經(jīng)驗未必比人家多,但你面試時能結(jié)合底層代碼展示,想都不用想,面試官一定看好你。
介紹項目時,拋出準(zhǔn)備過的亮點,別展開
上文里給出的是面試準(zhǔn)備的技巧,按值錢角度分析,講了分布式組件、數(shù)據(jù)庫和JVM調(diào)優(yōu)以及Java核心方面的技能,更重要的是,你是結(jié)合實際項目準(zhǔn)備的。
臺上一分鐘臺下一年功,如果準(zhǔn)備得當(dāng),面試時你就可以發(fā)揮了。先是在自我介紹環(huán)節(jié),你除了介紹基本情況學(xué)校學(xué)歷外,還可以綜合說明,比如用過Redis組件,有過數(shù)據(jù)庫和JVM調(diào)優(yōu)經(jīng)驗,有過壓測經(jīng)驗(下文會講),有過排查OOM方面問題的經(jīng)驗等,總之別客氣,準(zhǔn)備了就說。
然后進(jìn)入到項目介紹環(huán)節(jié),除了介紹項目背景,開發(fā)情況以外,你再結(jié)合業(yè)務(wù)說,這里給出若干說辭范例。
1、這個項目里,我們用到了Dubbo作為模塊間的調(diào)用,我除了寫代碼外,還解決過因Dubbo超時也引發(fā)的問題(別展開)
2、在數(shù)據(jù)庫方面,我除了實現(xiàn)技能外,還做了數(shù)據(jù)庫調(diào)優(yōu)、具體用過索引、執(zhí)行計劃、Redis緩存和MyCAT分庫分表,最后兩點自己斟酌。
3、在項目里,每個請求我們會用一個線程處理,其中用到了ThreadLocal對象(結(jié)合業(yè)務(wù)引出ThreadLocal),對此我還解決過因ThreadLocal和線程池設(shè)置不當(dāng)而引發(fā)的OOM問題。同時這里可以拋出準(zhǔn)備過的其它OOM問題說辭。
4、在這個項目里,我參與過壓測,并在壓測過程中解決過 OOM問題,并通過看日志優(yōu)化代碼,從而改善了系統(tǒng)的響應(yīng)時間。
5、在這個項目里,我會結(jié)合Cat系統(tǒng)監(jiān)控長SQL問題,一旦出現(xiàn),我會通過看Linux日志排查問題。(展示看日志排查問題的能力,同時可以進(jìn)一步展示你準(zhǔn)備過的技能)。
大家可以看到,上述結(jié)合項目拋出的亮點時沒有展開,因為這時屬于項目介紹階段,如果展開的話可能會讓面試官感覺你條理不清晰,而且拋出的亮點都是屬于分布式和調(diào)優(yōu)等高級技能。對一些Java核心方面的單機版技能,別人或許當(dāng)成寶,你可能都掌握的值錢技能太多,都不算什么了。當(dāng)然,后面有機會,你還是要展示Java核心部分的亮點,只是優(yōu)先講更值錢的。
回答技術(shù)問題后,可以引導(dǎo)到你準(zhǔn)備過的亮點上
你介紹項目時,由于已經(jīng)拋出了足夠多的亮點,面試官自然而然就會往這方面提問,這樣就達(dá)到了引導(dǎo)效果。比如聽你講到Redis緩存,自然就會問了, 問題無非是怎么用?這你可以結(jié)合你的項目實際說,底層細(xì)節(jié),這塊網(wǎng)上資料太多。也就是說,通過項目介紹,你可以把面試官引導(dǎo)你準(zhǔn)備好的話題上,這還不算,在回答問題的時候,你照樣還能引導(dǎo),如下給出些引導(dǎo)的技巧。
1、比如你在回答Redis相關(guān)問題時,如果之前你沒機會講“排查因超時時間過長而引發(fā)的OOM問題”,那么還可以展開說,對Redis,我還解決過xx問題,面試官自然會問了,然后再展開。
2、當(dāng)你回答好Redis問題后,可以再“順口”說句,在我們項目里,除了Redis外,還用過Dubbo組件,結(jié)果過因Dubbo超時時間過長而導(dǎo)致的問題。然后面試官自然就會問到這塊了,你同樣可以準(zhǔn)備些Dubbo底層細(xì)節(jié)的問題,這方面也很多資料。
3、在回答好任何數(shù)據(jù)庫相關(guān)的問題,比如索引、JDBC等,你順口說句,我在項目里,還通過執(zhí)行計劃(或Mycat)優(yōu)化過SQL技能,然后然開。
4、在回答好任何集合(如ArrayList)方面問題時,你可以說,在遍歷集合的時候,我們項目里會非常小心快速失效問題,然后展開。
5、在回答好任何線程內(nèi)存模型,或被問到volatile相關(guān)問題時,你就說,我知道ConcurrentHashMap里用到volatile,我能具體說下嗎?再結(jié)合這個對象,擴(kuò)展到 線程并發(fā)話題,而且這還是結(jié)合底層代碼講的。
6、被問到任何異常處理問題,比如運行期異常,如何自定義異常,那么再引導(dǎo)到異常處理最佳實踐。
7、從ThreadLocal,引出底層的Weak引用話題,再引出JVM結(jié)構(gòu)以及OOM調(diào)優(yōu)方面的話題。
寫到這里我都懶得再寫了,在上文里,我已經(jīng)列出了很多亮點,它們兩兩橫向關(guān)聯(lián),你說好一個再關(guān)聯(lián)另外一個,足以能全方面展示技能。
但在擴(kuò)展時你需要注意,萬一面試官沒接嘴問,你就要立即停止,或者另外找機會再引導(dǎo),這時如果再說下去,就屬于自說自話了。而且盡量不露痕跡地引導(dǎo),比如上文給出的范例中,引導(dǎo)的話術(shù)大多是,除了xx技術(shù),我們項目里還用到了xx(關(guān)聯(lián)性很強)技術(shù),然后坐等面試官來問。
也就是說,遇到一些不大自主思考的面試官,你甚至可以通過事先準(zhǔn)備外帶面試引導(dǎo),控制面試全程節(jié)奏,哪怕是遇到一些大廠的面試官,你同樣可以據(jù)此把問題引導(dǎo)你熟悉的范圍,最多就再根據(jù)網(wǎng)上面試題再準(zhǔn)備些(Dubbo、線程模型等的)細(xì)節(jié)問題,畢竟人的思維方式的很相似的,聽到你“隨口”這樣一說,很有可能就“接茬”向下提問了。
引導(dǎo)到壓測和排查線上問題經(jīng)驗等值錢話題
比起分布式實踐技能,更值錢的是壓測和排查線上問題和項目上線方面的經(jīng)驗,這在面試時非常容易引導(dǎo),也就是一兩句話的事,比如你隨口一說:“在這個項目里我做過壓測,而且有過根據(jù)壓測結(jié)果調(diào)優(yōu)系統(tǒng)的經(jīng)驗 ”,或者說,在Dubbo等方面,我排查過線上問題。自然前提是你要做過,等到面試官提問時,壓測方面你可以給出如下的說辭。
1、你參與全鏈路壓測,即相應(yīng)的同學(xué)坐一起,用Jmeter發(fā)請求,用zabbix監(jiān)控CPU內(nèi)存指標(biāo),同時看日志監(jiān)控問題。
2、壓測是用測試環(huán)境,當(dāng)然你也可以說是線上環(huán)境,如果是線上環(huán)境的話,更要監(jiān)控,一旦出現(xiàn)CPU等負(fù)載過高,立即終止。
3、比如用Jmeter發(fā)500個線程,每個線程起5個交易,這些交易用2秒做完,那么每秒的壓力是1250。
4、最關(guān)鍵的是,你要根據(jù)壓測結(jié)果改善性能,比如通過壓測,發(fā)現(xiàn)了線程池設(shè)置參數(shù)時,把等待隊列設(shè)成了無界,或者有模塊IO對象沒關(guān),或者ArrayList沒clear,從而導(dǎo)致了OOM,或者發(fā)現(xiàn)高并發(fā)場景數(shù)據(jù)庫方面出現(xiàn)了長SQL,然后用執(zhí)行計劃分析,再解決,或者發(fā)現(xiàn)了系統(tǒng)日志本來是同步輸出的,從而導(dǎo)致性能瓶頸,最后改成異步日志。或者發(fā)現(xiàn)數(shù)據(jù)庫是瓶頸,所以再引入MyCAT和Redis。
總之,壓測說辭方面,面試官更關(guān)注你分析問題和解決問題的經(jīng)驗,至于發(fā)現(xiàn)和解決的問題,只要能說得過去就行了,況且你還能借此展示分布式和調(diào)優(yōu)方面的技能。而排查線上問題方面的經(jīng)驗,你可以用如下的步驟給出說辭。
1、如何發(fā)現(xiàn)?無非是通過CAT監(jiān)控發(fā)現(xiàn)長SQL,或者通過Kibana等工具發(fā)現(xiàn)。或者可以說是先期業(yè)務(wù)埋點,發(fā)現(xiàn)交易異常時拋提示。
2、發(fā)現(xiàn)問題后你的態(tài)度,通過手機發(fā)現(xiàn)問題后,你第一時間看,哪怕不在你的范圍內(nèi),你第一時間上報。
3、如何排查問題:通過Linux命令看日志,或者通過dump看OOM的鏡像。
4、分析原因,借此你可以展示上文給出的亮點技能,以及對應(yīng)解決。
話說回來,哪怕是初級開發(fā),也有資格參與壓測,平時也一定會遇到線上問題,你如果面試時不說,面試官自然不知道,但這塊你絕對是大有可為的。
先找實踐機會再提升技能,程序員該挑戰(zhàn)更高級的職位
總結(jié)下,本文的主題包括兩個,第一結(jié)合自身實際,面試前挖掘亮點,第二面試時通過引導(dǎo),盡量把問題引向自己熟悉的范圍。實踐起來,技術(shù)要結(jié)合項目,而且最好再結(jié)合你排查和解決過的線上問題,同時回答好一個問題后,再把問題引向同類以及調(diào)優(yōu)方面的話題。
比如Redis,當(dāng)你結(jié)合項目,壓測和線上問題,講述基本用法和解決過的問題后,面試官可能再會問數(shù)據(jù)結(jié)構(gòu),高可用集群和事務(wù)方面的問題,這些問題就可以事先準(zhǔn)備了。
對于初級開發(fā),你說好第一部分的說辭,哪怕細(xì)節(jié)問題沒回答上,面試官雖然無法給出“深入了解Redis細(xì)節(jié)”的評價,但至少能給出“在項目里用過Redis和排查過Redis相關(guān)問題”的評價,如果你再結(jié)合項目,如本文所示,全面展示調(diào)優(yōu),Java核心等方面的技能,那么你面試資深高級開發(fā)也夠了,面試初級開發(fā)真就綽綽有余了,如果經(jīng)驗再豐富些,再去面試小公司的職位,更有些委屈了。
當(dāng)你按本文所述,準(zhǔn)備好相應(yīng)技能,然后再通過一些面試實踐變成面霸后,很有可能你面臨的不是要面試什么公司的問題,而是“面試通過后能不能適應(yīng)更高級職位”的問題。
不過總是先有實踐機會再提升,比如當(dāng)你是初級開發(fā)時,從事第一份高級開發(fā)工作時一定很吃力,甚至還會看人臉色,但如果你不追求更高級的崗位,一直陷入低級職位的舒適區(qū)不可自拔時,你的競爭力也會逐月下降。
所以到了必要的時候,你總得根據(jù)本文給出到的建議,不斷挑戰(zhàn)更高級的職位。況且,本文在開篇時就提到,技術(shù)能力和面試能力是兩個方面,而本文給出面試技巧,都是靠平時技能積累,本文給出的面試建議,能幫助大家更好地在面試中展示亮點。
希望本文不僅能幫到大家更好地挖掘自己項目經(jīng)驗,更能幫到大家高效地找到自己心儀的工作,最后感謝大家看完長文,本文寫了有5個小時,如果大家感覺可以,請多多點贊,有問題也可以多寫評論。
作者簡介:知名外企資深架構(gòu)師,8年內(nèi)面試過數(shù)以百計的Java工程師,5年的Java培訓(xùn)講師經(jīng)驗,幫助眾多初學(xué)者成功拿到心儀的Offer。著有《Java核心技術(shù)及面試指南》。CSDN博客專家。
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計