當(dāng)面試官問你這個(gè)問題的時(shí)候,想聽到什么?
你好呀,我是歪歪。
這期我想簡(jiǎn)單的聊一個(gè)面試中出現(xiàn)頻率比較高的,但又沒有標(biāo)準(zhǔn)答案的面試題。
你在工作中遇到過印象深刻的困難是什么,你怎么克服的?
為什么我想聊聊這個(gè)問題呢?
因?yàn)槲野l(fā)現(xiàn)這個(gè)問題經(jīng)常出現(xiàn)在各個(gè)技術(shù)交流群中,大家聊到這個(gè)話題的時(shí)候大多都苦不堪言,紛紛表示不知道怎么去回答這個(gè)問題。
或者說之前就沒有想過這樣的問題,突然一下被問起來,由于沒有準(zhǔn)備,也是摸不著頭腦的樣子。
匆匆的回顧一下自己的職業(yè)生涯,發(fā)現(xiàn)天天寫的都是 crud,也沒覺得有什么困難啊。
一時(shí)間,竟然想脫口而出:我覺得吧,也沒有啥特別大的困難,我做的就挺好的。

面試官聽了微微一笑:好了,那我們今天的面試就先到這里,請(qǐng)回去等通知吧。
考的是什么
你必須要知道正常情況下面試官在面試的過程中問的每一個(gè)問題,都一定是有他的目的。
比如面試官上來就要求候選人做個(gè)簡(jiǎn)單的自我介紹,很多人說這個(gè)目的是為了在候選人自我介紹的時(shí)間內(nèi)看一下他的簡(jiǎn)歷。
也許在早幾年,要候選人自己帶著簡(jiǎn)歷去面試的情況下,確實(shí)是這樣的。
但是現(xiàn)在來說,都是無紙化面試了,你的簡(jiǎn)歷的電子版早就到面試官手上了。
正常來說,面試官會(huì)在面試之前已經(jīng)看過你的簡(jiǎn)歷了,不需要面試的時(shí)候借著你自我介紹的時(shí)間,瀏覽簡(jiǎn)歷。
我一般讓候選人自我介紹的時(shí)候,我是在認(rèn)真的聽,我想要從他的自我介紹找挖掘到簡(jiǎn)歷上沒有體現(xiàn)的東西,也是在尋找面試的切入點(diǎn),如果自我介紹中有讓我感興趣的地方,我就會(huì)從這個(gè)地方開始,圍繞著簡(jiǎn)歷往下問。
再比如,問你項(xiàng)目的時(shí)候:
說一下你最熟悉的項(xiàng)目。
是問你項(xiàng)目是干啥的,業(yè)務(wù)場(chǎng)景有哪些嗎?
不是的。
問這個(gè)問題的目的是想知道你所熟悉的項(xiàng)目的架構(gòu)是怎么樣的,是單體服務(wù)還是拆了微服務(wù),拆了哪些模塊,每個(gè)服務(wù)大概多大的體量,它們之間是怎么相互的,涉及到的技術(shù)棧有哪些。
知道了這些,面試官才能從中找到討論的點(diǎn),從而展開技術(shù)面試。
至于項(xiàng)目是干啥的,簡(jiǎn)單說幾句,鋪墊一個(gè)背景就行了。
有的同學(xué)介紹項(xiàng)目的時(shí)候把領(lǐng)導(dǎo)在業(yè)務(wù)上給他畫的餅,又給面試官描述一遍。如果不是同一業(yè)務(wù)線的話,面試官是不會(huì)關(guān)心你的業(yè)務(wù)的。
你要知道,如果你要介紹業(yè)務(wù)場(chǎng)景的話,其目的必然是為了引出背后的一個(gè)比較復(fù)雜的技術(shù)解決方案。否則,面試官不會(huì)太感興趣,多說無益,反而占用了面試的時(shí)長(zhǎng)。
還不如拿出紙筆,在上面畫一下你們的服務(wù)交互,同時(shí)描述一下對(duì)應(yīng)地方涉及到的技術(shù)棧。
你要不會(huì)畫的話,可以參考一下我之前分享的這篇文章:
再說這個(gè)問題:
你在工作中遇到過印象深刻的困難是什么,你怎么克服的?
有的同學(xué)說他不會(huì)回答,我分析了一下,不會(huì)回答的原因其實(shí)就是因?yàn)椴恢烂嬖嚬倏疾斓氖鞘裁捶较颉?/p>
所以只能給出一些諸如查詢慢了就加索引、熱點(diǎn)數(shù)據(jù)加緩存、出了問題重啟了就好了...這類泛泛地回答,找不到什么讓面試官眼前一亮的東西。
怎么能答的閃亮一點(diǎn)呢?
一般來說,我認(rèn)為這個(gè)題有兩個(gè)回答的方向。
第一個(gè)方向就是往技術(shù)的深度,對(duì)于技術(shù)的追求這個(gè)方向答。想看看你有沒有碰到過什么棘手的技術(shù)問題,然后是怎么定位,怎么解決的。
第二個(gè)方向就是往主人翁意識(shí),體現(xiàn)主觀能動(dòng)性的方向答。面對(duì)一個(gè)項(xiàng)目或者領(lǐng)導(dǎo)給到的任務(wù)涉及到其他項(xiàng)目組、甚至其他部門的時(shí)候,自己是怎么去推動(dòng)的。

技術(shù)的深度
如果你往這個(gè)方向答,就得自己平時(shí)工作中多積累,多觀察相關(guān)的案例,然后記錄下來。
可以把觀察的目光放的長(zhǎng)遠(yuǎn)一點(diǎn),不一定非得是自己所在的項(xiàng)目組遇到的問題,也可以是其他的項(xiàng)目組遇到的問題。
這里就需要自己有一個(gè)情報(bào)收集的能力,和對(duì)于技術(shù)的敏感度。
一聽到這問題就應(yīng)該要知道:這是一個(gè)好素材呀,可以深入了解一下。
這個(gè)問題都不一定是你解決的,但是你要清楚的知道來龍去脈,就可以包裝成自己的經(jīng)歷。
面試官是察覺不出來的。
而且我一直認(rèn)為,適度的包裝,也不算是面試造假。
當(dāng)然了,這個(gè)方向你也可以去背。
但是不能純粹的背誦,得適當(dāng)?shù)娜U(kuò)展。
比如我之前分享過這樣的一篇文章:
這個(gè)案例從最開始 Dubbo 調(diào)用超時(shí)的這個(gè)表象,分別從數(shù)據(jù)庫、GC、網(wǎng)絡(luò)、鏈路追蹤等各個(gè)角度去分析了問題,且是一個(gè)循序漸進(jìn)的過程。
你會(huì)發(fā)現(xiàn)大家對(duì)于超時(shí)這一類的問題的排查套路都無外乎這樣,層層遞進(jìn)的排查,抽絲剝繭的尋找問題。
這個(gè)案例你就是可以自己拿去用的,套一個(gè)自己工作相關(guān)的業(yè)務(wù)場(chǎng)景。
我就不信了,你們接口調(diào)用沒出現(xiàn)過超時(shí)的情況?
網(wǎng)上這樣的文章很多很多,但是作者寫的只專注于面試問題的本身。
如果你想要把這個(gè)案例套過來自己用,那么而這個(gè)問題能延伸出來的東西,你也必須得去研究。
比如前面這個(gè)文章里面,為什么要說“失敗策略是 failFast,快速失敗不會(huì)重試”?因?yàn)槿绻莊ailover,會(huì)默認(rèn)重試,且超時(shí)時(shí)間是重試時(shí)間之和。所以,他告訴我們,這里沒有重試,超時(shí)不是因?yàn)檎?qǐng)求重試帶來的時(shí)間疊加導(dǎo)致的。
文章提到的 ElapsedFilter 過濾器,“超過 300 毫秒的接口耗時(shí)都會(huì)打印”,是作者公司自己擴(kuò)展的 Filter,基于Dubbo 的 SPI 實(shí)現(xiàn)的,并不是 Dubbo 官方的自帶功能。所以,他才額外提了一句“ElapsedFilter是 Dubbo SPI 機(jī)制的(自定義)擴(kuò)展點(diǎn)之一”。
作者用的 Druid 連接池,猜測(cè)連接長(zhǎng)時(shí)間不被使用后都回收了,那么關(guān)于 Druid ?的配置文件中的有關(guān)時(shí)間的配置,你是否知道且清楚其作用?
如果要觀察 GC 日志,你是否大概知道應(yīng)該配置什么參數(shù),是否知道應(yīng)該關(guān)注的信息是什么?為什么他這里要提到安全點(diǎn)?安全點(diǎn)和 STW 的時(shí)間之間的關(guān)系又是什么?
等等后面的一些關(guān)于容器的、Arthas工具使用的、網(wǎng)絡(luò)抓包工具使用的相關(guān)技能和知識(shí)儲(chǔ)備。
當(dāng)我們把這些知識(shí)單獨(dú)拎出來形成面試題的時(shí)候,也許你會(huì)覺得,為什么你老是問我 MySQL 的知識(shí)、問我網(wǎng)絡(luò)相關(guān)的知識(shí)、問我一些用不上的垃圾回收的知識(shí)?
問你,把你問的啞口無言不是目的??疾炷阒R(shí)的廣度,讓你學(xué)以致用才是目的。
重要的是把你學(xué)的一個(gè)個(gè)孤立的點(diǎn),通過某種方式,串聯(lián)起來。
而“你在工作中遇到過印象深刻的困難是什么”就是你把這些知識(shí)點(diǎn)串聯(lián)起來的一種方式。
除了前面的文章,我還分享這些類似的,你以為我只是單純的給你分享嗎?
不是的,我自己也在收集,也在融會(huì)貫通,也想著“拿來主義”:
一個(gè)不錯(cuò)的線上故障排查案例,現(xiàn)在它是你的了。
我給Apache頂級(jí)項(xiàng)目提了個(gè)Bug
另外,還有一個(gè)人盡皆知的面試小竅門。
回答問題的時(shí)候盡量有意識(shí)的引導(dǎo)面試官到自己熟悉的領(lǐng)域中來。
怎么引導(dǎo)呢?
不可能別人問你:你給我說一下線程池吧?
你回答說:這多沒意思啊,我給你說一下 HashMap 吧。
面試官一定當(dāng)時(shí)就覺得自己的頭大。

我們可以在這些開放的問題上就可以去引導(dǎo)面試官。
如果你對(duì) kafka、RabbitMQ、RocketMQ 這一類技術(shù)了解的比較深入,又或者對(duì)于 Redis、MySQL 這一類存儲(chǔ)的技術(shù)學(xué)習(xí)的比較多,你準(zhǔn)備這類問題的時(shí)候就可以多講這方面的原因。
比如如果讓我來講,我可能就會(huì)選擇回答一些由于 Dubbo 框帶來的技術(shù)問題,讓面試官進(jìn)入到我熟悉的領(lǐng)域,讓他在這里面和我展開博弈。
再或者說往 JVM 方向引導(dǎo),反正大家學(xué)這東西,看的都是同一份資料,就看你記得多還是我記得多了。
又或者我們可以 battle 一下多線程領(lǐng)域相關(guān)的問題,但是現(xiàn)在多線程都爛大街了,我可能不太會(huì)去在這里面和面試官博弈太長(zhǎng)時(shí)間。因?yàn)榫退隳慊卮鸬牡嗡宦嬖嚬俅蠖嘁矔?huì)認(rèn)為這只是需要掌握的基本技能而已,用的熟練,不足為奇,沒有閃光點(diǎn)。
總之一句話吧:如果你向往技術(shù)的深度這方面去回答,一定要言之有物,最終定位到的問題可以是一個(gè)很小的問題,比如配置的原因、網(wǎng)絡(luò)的原因、框架的 bug,但是重點(diǎn)得體現(xiàn)出排查的過程。而排查問題的過程,有一定的方法論,提煉出來就好了。
對(duì)于這個(gè)問題,上策是加工一下自己的親身經(jīng)歷,實(shí)實(shí)在在的有解決問題的經(jīng)驗(yàn),只是如何把它包裝的高大上而已。
下策是包裝別人的經(jīng)歷,要包的惟妙惟肖,以假亂真。
如果你真的很無奈要選下策,那么我只能再送你一句話了:加入一些細(xì)節(jié)的描述,可以是點(diǎn)擊工具的什么按鈕、翻看了什么類的源碼、參照了某個(gè)大牛的博客一類的。
能不能過,就看你的造化了。

主觀能動(dòng)性
主觀能動(dòng)性這方面其實(shí)我沒有什么特別想要說的。
核心思想就是前面說的:主人翁意識(shí)。
你所負(fù)責(zé)的任務(wù),是別人分配給你的。但是你就是這個(gè)任務(wù)的主人翁,你要想著怎么去積極主動(dòng)的去完成它。
舉個(gè)例子:
你本來只是一個(gè)寫著 crud 的快樂的程序員,每天等著領(lǐng)導(dǎo)分配任務(wù),然后領(lǐng)任務(wù)寫代碼。
突然有一天,領(lǐng)導(dǎo)給你說:小王啊,這邊有一個(gè)項(xiàng)目很著急,但是我這邊有更加緊急的事情要做,所以我把這個(gè)任務(wù)分配給你,你去全權(quán)負(fù)責(zé)一下吧。
你當(dāng)時(shí)就懵逼了,敲鍵盤的手一下就不快樂了。

這意味著你不再是一個(gè)只寫代碼的程序員了,你還是一個(gè)項(xiàng)目的負(fù)責(zé)人。
一個(gè)項(xiàng)目的負(fù)責(zé)人得統(tǒng)籌帷幄,去協(xié)調(diào)需求、產(chǎn)品、開發(fā)、測(cè)試、運(yùn)維等各方面的資源。
而這事兒,你之前從來沒干過。要命的是,這事還挺著急。
怎么辦?
這不就是你在工作中遇到的印象深刻的困難嗎?
場(chǎng)景框架都給你了,你就按照你們公司的流程往里面填內(nèi)容就行了。
你是怎么拆分任務(wù)的,怎么組織評(píng)審會(huì)的,最后項(xiàng)目成功上線自己的收獲是什么。
可以多講點(diǎn)從程序員視野看不到的東西。著重體現(xiàn)自己協(xié)調(diào)資源和跨部門合作時(shí)遇到的困難和自己的解決方案。
什么,你說你沒有這個(gè)方面的經(jīng)歷?
你就不能假設(shè)嗎?
你就不能觀察你們公司的一個(gè)項(xiàng)目周期的全過程嗎?
得發(fā)揮你的主觀能動(dòng)性呀。
然后再說一下,如果你往這個(gè)方向去回答,大概率會(huì)遇到一個(gè)追問的問題:
如果讓你再來一次,你會(huì)怎么處理的更好。
這玩意考的又是什么?
考的就是你的復(fù)盤的能力,考的就是有沒有對(duì)于項(xiàng)目進(jìn)行復(fù)盤。
如果你回答說:由于是我第一次負(fù)責(zé)一個(gè)項(xiàng)目,并跟進(jìn)了它一期需求的全過程,所以對(duì)我來說是一次非常寶貴的經(jīng)歷,于是在項(xiàng)目上線之后我對(duì)其進(jìn)行了一次復(fù)盤,發(fā)現(xiàn)了其中還有一二三四點(diǎn)可以優(yōu)化的地方...
我覺得基本上朝著這個(gè)方法回答就十拿九穩(wěn)了。
你要說你不會(huì)復(fù)盤,好的,沒救了,回去等通知吧。

總結(jié)
面試的時(shí)候?qū)τ谶@類開放性題目,其實(shí)并不是想象中的那么好回答,處處都是暗流涌動(dòng)。
所以一定要在面試前做好這類題目的準(zhǔn)備,臨場(chǎng)發(fā)揮肯定是效果很一般的。
就拿我個(gè)人作為面試官的經(jīng)歷來說,特別是三到五年工作經(jīng)驗(yàn)的朋友容易遇到這個(gè)問題。
校招生我肯定是不問這個(gè)問題的。三年以下的經(jīng)驗(yàn)還不夠豐富,回答起來也很難有什么滿意的答案,所以我也不問。問這個(gè)還不如多問幾個(gè)技術(shù)問題,考察他的技術(shù)是否扎實(shí)。
還有,前面說的兩個(gè)方向,都得準(zhǔn)備一下。
如果是前兩輪面試問題了,可以往技術(shù)的方法回答,因?yàn)檫@個(gè)時(shí)候一般都是在一線編碼的程序員充當(dāng)技術(shù)面試官,他更愿意在技術(shù)方面和你切磋。
如果是后幾輪面試,可以往主人翁意識(shí)的方向去回答,因?yàn)榈胶竺娴拿嬖嚧蠖喽际遣块T負(fù)責(zé)人一類的管理人員,已經(jīng)很少在一線編碼了,他們更愿意看到你除了技術(shù)之外的軟實(shí)力。
荒腔走板
剛剛過去的周末,我去拍婚紗照了。
周六拍了整整一天,從早上 8 點(diǎn)一直忙到晚上 20 點(diǎn),整整 12 個(gè)小時(shí),好在一天就搞定了,接下來就是從幾百張照片中選幾十張出來精修就行了,但是聽起來也是一件非常痛苦的事情。
說到拍婚紗照,我就要特別感謝大學(xué)的一個(gè)朋友,小我一屆的學(xué)弟,人送外號(hào)小飛機(jī),大學(xué)的時(shí)候我們經(jīng)常廝混在一起,畢業(yè)之后就深耕成都攝影行業(yè)。
早在今年年初的時(shí)候他就給我說過,今年要拍婚紗照,可以找他,他會(huì)幫我聯(lián)系一個(gè)靠譜的攝影師。
果不其然,我聯(lián)系他之后,他很快就給我找到了靠譜的攝影師,還給我拿到了骨折價(jià),最后拍攝全天他還全程開車送我們,并幫忙拍攝花絮,可以說安排的明明白白。
拍攝的過程中,他給我看了一張放大的照片,照片上的我笑的很開心,魚尾紋都爬上了眼睛。
他說我也長(zhǎng)魚尾紋了,不再年輕了。
我說我也開始變老了。
相比于浮躁氣盛的大學(xué)時(shí)光,我們現(xiàn)在確實(shí)都沉穩(wěn)了很多。只有一起走過了浮躁氣盛的人,才會(huì)說如今的這份沉穩(wěn)是“不再年輕了”,因?yàn)槲覀兌家娺^對(duì)方最純粹的樣子,此后的樣子,都是“越來越老”。
說到結(jié)婚,其實(shí)我們還有很多事情都沒有準(zhǔn)備好,接下一個(gè)多月的周末休息時(shí)間肯定少很多了。
結(jié)婚真的是一件需要付出很多時(shí)間和心血的事情呢,但是它同樣讓人值得期待。
畢竟這個(gè)我叫了十多年女朋友的人,我要改口叫老婆了。

最后說一句
好了,看到了這里了,轉(zhuǎn)發(fā)、在看、點(diǎn)贊隨便安排一個(gè)吧,要是你都安排上我也不介意。寫文章很累的,需要一點(diǎn)正反饋。
給各位讀者朋友們磕一個(gè)了:

本文已收錄自個(gè)人博客,歡迎大家來玩。點(diǎn)擊[閱讀原文]即可直達(dá)。
https://www.whywhy.vip/
推薦???:這絕對(duì)是我今年最最值得收藏的一篇文章!
推薦???:裂開了,一次連接池參數(shù)導(dǎo)致的雪崩問題!
推薦???:填個(gè)坑!再談線程池動(dòng)態(tài)調(diào)整那點(diǎn)事。
推薦???:當(dāng)我看源碼的時(shí)候,我在想什么?
··································你好呀,我是歪歪。一個(gè)主要敲代碼,經(jīng)常懟文章,偶爾拍視頻的成都人。
我沒進(jìn)過一線大廠,沒創(chuàng)過業(yè),也沒寫過書,更不是技術(shù)專家,所以也沒有什么亮眼的title。
當(dāng)年以超過二本線 13 分的優(yōu)異成績(jī)順利進(jìn)入某二本院校計(jì)算機(jī)專業(yè),誤打誤撞,進(jìn)入了程序員的行列,開始了運(yùn)氣爆棚的程序員之路。
說起程序員之路還是有點(diǎn)意思,可以看看。點(diǎn)擊藍(lán)字,查看我的程序員之路
