面試了一個(gè)39歲程序員,我有點(diǎn)慌……
目前在國(guó)內(nèi)一說到程序員,談?wù)撟疃嗟木褪羌影喽啵d頭,不修邊幅,以及 35 歲被裁。
圖片來自 Pexels
顯然 35 歲被裁的說法帶有一定調(diào)侃意味,但是無風(fēng)不起浪,大齡程序員被裁這種現(xiàn)象還是有一定代表性的。
本文是我面試一個(gè) 39 歲程序員的親身經(jīng)歷,希望能夠?qū)Υ蠹矣袉l(fā)。
1.招人背景
首先說下公司招人的背景吧,公司要招的是一個(gè)研發(fā)經(jīng)理的崗位,負(fù)責(zé)管理技術(shù)團(tuán)隊(duì)的各個(gè)項(xiàng)目組。
領(lǐng)導(dǎo)只給了我兩個(gè)要求:
- 技術(shù)可以
- 管理有一套
說白了,這是一個(gè)技術(shù)+管理的崗位,不是純粹的管理崗,能寫代碼,技術(shù)上過得去是前提,所以底層還得是個(gè)程序員。
干我們這行的都懂,大廠都在清理 35 歲以上的基礎(chǔ)崗,如果到了這個(gè)年紀(jì)還混不到中高層管理崗位,基礎(chǔ)崗確實(shí)不太好找了。
現(xiàn)在的年輕人很厲害,很年輕就走上了管理層,所以我很慶幸公司在年齡上沒有卡人,給了很多 35+ 的程序員簡(jiǎn)歷供我篩選,因?yàn)槲乙彩浅绦騿T,所以我也不會(huì)在年齡上有所顧慮。
所以,確實(shí)就和標(biāo)題寫的那樣,這兩天我就面試了一個(gè) 39 歲程序員,全程讓我都感覺有點(diǎn)慌……
為什么慌?主要是因?yàn)槟挲g比我大不少,技術(shù)是不是很牛逼,會(huì)不會(huì)吊打我,狠狠地虐我?我真心怕 hold 不住。
但實(shí)際面試下來,場(chǎng)面一度尷尬,結(jié)局讓我感覺有點(diǎn)唏噓。
2.面試過程
面試者 15 年工作經(jīng)驗(yàn),簡(jiǎn)歷卻只有 2 頁(yè),可以說非常簡(jiǎn)練,從程序員到項(xiàng)目經(jīng)理、研發(fā)經(jīng)理、技術(shù)總監(jiān)都干了個(gè)遍,Java/PHP/Python/C# 也都有涉及。
從交談過程中,他說是可以做技術(shù)+管理的,然后我說問一些技術(shù)上的問題,他說好。
我:你有互聯(lián)網(wǎng)分布式相關(guān)項(xiàng)目開發(fā)經(jīng)歷么?
面試者:有啊,那個(gè) XXX 項(xiàng)目就是...(說了一堆)
我:好,我看到了,我看這個(gè)項(xiàng)目是用 Dubbo 框架做的,為什么要用 Dubbo 呢?在你們整個(gè)項(xiàng)目里面 Dubbo 承擔(dān)了什么角色?
面試者:做服務(wù)治理,底層是 ZK…
然后他就一直在說和 ZK 的關(guān)系,我也沒怎么聽明白,我再怎么引導(dǎo)也沒說清楚 Dubbo 在項(xiàng)目中承擔(dān)什么角色。
我:能介紹下服務(wù)與服務(wù)之間相互調(diào)用的時(shí)候,如果調(diào)用超時(shí)了是怎么處理的?
面試者:超時(shí)啊,(想了幾秒后)那應(yīng)該是報(bào)錯(cuò)吧。
我:確定是報(bào)錯(cuò)嗎?(他想了想,不說話,然后我接著說)沒有重試機(jī)制嗎?重試機(jī)制是怎樣的?
做過分布式的項(xiàng)目的都知道重試機(jī)制,至少讀操作要支持重試,寫操作支持重試的話被調(diào)用方還要支持冪等性,不然會(huì)造成重復(fù)寫入。
面試者:(又想了想,笑著和我說)這個(gè)項(xiàng)目有點(diǎn)久了,這個(gè)不太記得了……
然后我看了下這個(gè)項(xiàng)目,2014 年做的,6 年前了,他說太久不記得了,那也情有可原了。
我:OK,你最近做的這個(gè)項(xiàng)目,能介紹下它的整體架構(gòu)么?
面試者:我們用了 MQ,用了 Redis,用了……(他說了一堆,都沒說到重點(diǎn))
我:我想問的是,從上到下,這些技術(shù)是怎么承接起來的,整體的系統(tǒng)架構(gòu)是怎樣的?(現(xiàn)場(chǎng)沒紙筆,不然我都想讓他畫圖了)
面試者:呃……我知道你的意思,主要是我真的不知道怎么表達(dá)……(然后他不說話了,場(chǎng)面尷尬了)
我:沒事,問你一個(gè)設(shè)計(jì)性的問題,假如有一個(gè)接口,五個(gè)實(shí)現(xiàn)類,現(xiàn)在的需求可能要往接口加一個(gè)方法,這樣就要改動(dòng)五個(gè)實(shí)現(xiàn)類,但需求只需要改動(dòng)其中兩個(gè)實(shí)現(xiàn)類,要怎么設(shè)計(jì)才好?
面試者:那就只能把方法寫在兩個(gè)實(shí)現(xiàn)類中……(想了半天也沒有說出好的方案)
其實(shí)這里至少有兩個(gè)方案:
- 可以再定義一個(gè)抽象類去實(shí)現(xiàn)這個(gè)接口,在抽象類中新增這個(gè)方法,然后其他兩個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)這個(gè)抽象類就好了。
- 使用 Java 8 中的新特性,在接口中新增默認(rèn)方法或者靜態(tài)方法。
所以,其實(shí)這里我一方面是考一下他的設(shè)計(jì)能力,另一方面我是想了解下他對(duì) JDK 新特性各方面知識(shí)的應(yīng)用和掌握。還有更多設(shè)計(jì)方案,我這里只列了兩種。
我:好的,沒事,那你覺得你擅長(zhǎng)的技術(shù)或者框架有哪一些呢?
面試者:擅長(zhǎng)的啊……(半天沒說出來一個(gè))也沒什么,就 Java 基礎(chǔ)方面還可以吧!
我:Java 基礎(chǔ)可以是吧,好吧,我問一些 Java 基礎(chǔ)方面的問題吧。請(qǐng)問:Java 接口和抽象類的區(qū)別是什么?(其實(shí)就是上一題的答案)
面試者:呃……(想了半天)好像是抽象類還是接口里面可以寫實(shí)現(xiàn)方法的吧(不確定的回答)
我:到底是哪個(gè)可以寫實(shí)現(xiàn)方法呢?
面試者:(左右搖頭,眼神飄浮不定,不說話了,場(chǎng)面再度陷入尷尬……)
我:(沒辦法,我要打破這個(gè)尷尬場(chǎng)面)你確定是做過 Java 么,這都是非常基礎(chǔ)的呀,感覺你基礎(chǔ)也不是很好啊!
面試者:哎,來這家公司面試沒做準(zhǔn)備!(一臉無奈)
我:這樣啊,那建議你還是回去好好準(zhǔn)備一下吧,因?yàn)槲覀冞@個(gè)崗位是需要有一定技術(shù)能力的,所以,非常不好意思……
面試者:好的,我明白。
為了不浪費(fèi)他的時(shí)間,我非常間接的告訴了他直接的結(jié)果了,說完然后他順溜的拿著他的包從洽談室出去了,頭也沒回。
哎,面試其他人,出去的時(shí)候都會(huì)為我擋下門的。
3.結(jié)語
最后我把面試結(jié)論和領(lǐng)導(dǎo)說了,領(lǐng)導(dǎo)就說了一句:技術(shù)是提前。
第一次面試一個(gè) 39 歲的程序員,干了 15 年,如果還要面試做技術(shù)+管理崗位,這個(gè)面試情況確實(shí)不理想。也不知道他的真實(shí)經(jīng)歷是啥?或許真該清楚認(rèn)識(shí)下自己的定位。
從剛開始面試的時(shí)候有點(diǎn)慌,直到現(xiàn)在寫文章,我感覺更慌了,日月如梭,我也快有這么一天了,如果做不到中高層,我也要去和年輕搶飯碗,沒辦法,這是現(xiàn)實(shí)。
年紀(jì)來了,我感覺我自己寫代碼確實(shí)也寫不太動(dòng)了,人也變得越來越焦慮不安,能干嘛去了?生意又不會(huì)做!
唯一能做的就是朝著自已期望的崗位或者目標(biāo)不斷努力,不斷的提升自己的硬實(shí)力和基本功,越努力越幸運(yùn),只要這樣才能面對(duì)日益焦慮不安的自己,迎接未來更多的機(jī)會(huì)。
現(xiàn)在的很多年輕人很厲害啊,年輕有為的不少,但有句話是怎么說的,大器晚成,為時(shí)不晚,這樣的例子也數(shù)不勝數(shù),我想信,只要堅(jiān)持學(xué)習(xí),提升自己,總會(huì)有成功的那天。
本文只是代表個(gè)人觀點(diǎn),不一定符合所有人,但不喜勿噴。
大家一起加油,共勉!
作者:棧長(zhǎng)
編輯:陶家龍
出處:轉(zhuǎn)載自公眾號(hào) Java 技術(shù)棧(ID:javastack)