一般面經(jīng)很少會(huì)告訴你如何臨場(chǎng)發(fā)揮,我覺得這邊文章對(duì)你很重要。
上一篇文章講了如何進(jìn)行前期的準(zhǔn)備,但是在面試的過程中,一定會(huì)問到?jīng)]有準(zhǔn)備過的問題。那么這個(gè)時(shí)候怎么辦的?那么我來簡(jiǎn)單講一下我總結(jié)下來的經(jīng)驗(yàn)。依然分為幾種情況:
- 編程測(cè)試
- 面試
1. 編程測(cè)試
編程測(cè)試是很多大公司都會(huì)有的環(huán)節(jié)。有些考察算法,有些是考察編程能力,有些是考察設(shè)計(jì)。內(nèi)容要看面試官想考察面試者什么能力有關(guān)。對(duì)于這種測(cè)試,很多人就要問了,“這不就和高考一樣,拿到題目做,不就完了,和臨場(chǎng)發(fā)揮有什么關(guān)系?”。其實(shí)這和高考大有不同。
編程測(cè)試的時(shí)候你是面對(duì)著命題者的。而且命題者往往有他想要考察的點(diǎn)。但是命題者都是語(yǔ)文水平和我們差不多的程序員,題目就是他們隨便寫寫的。意思的表達(dá)多少會(huì)有點(diǎn)不清晰。那么這個(gè)時(shí)候就是臨場(chǎng)發(fā)揮的時(shí)候了。
審?fù)觐}不要急著做,先簡(jiǎn)單思考一下命題者究竟想要考察什么,題意究竟是什么。然后把自己理解的題意講給命題者聽,問下他題目是不是這個(gè)意思。
無論你理解的對(duì)不對(duì),都沒有關(guān)系,理解的不對(duì)命題者會(huì)給你指出,總比你把代碼都寫完了才發(fā)現(xiàn)題目理解錯(cuò)了好。無論對(duì)錯(cuò),無形中都為自己加了一些分。因?yàn)檫@反應(yīng)了你平時(shí)是一個(gè)動(dòng)手做之前,先把需求理解清楚的人。那么題目理解完之后就可以直接寫了嗎?錯(cuò)。
對(duì)于一道題目,一定會(huì)有很多解題思路和方法。高考的時(shí)候是你最后的結(jié)果對(duì),那這題就能拿到滿分。但是編程測(cè)試可不是。使用了不好的思路和方法一樣會(huì)掛掉。那么這就又到了臨場(chǎng)發(fā)揮的時(shí)候了!
明確了題目意思之后,先講“那我思考一下”為自己爭(zhēng)取一些時(shí)間。然后就讓自己的CPU跑起來思考吧,盡量多想幾種方案。然后把自己的方案講給命題者聽,如果能講出每種方案的優(yōu)缺點(diǎn)更好。
有的人可能覺得做到這一點(diǎn)很難。其實(shí)在我自己的面試過程中,以及與其他人交流面試的時(shí)候發(fā)現(xiàn),編程測(cè)試的題目一般都能做出來。掛掉的都是掛在方法上。如果水平不是太差,至少能想出一種簡(jiǎn)單粗暴的方法。但是,如果你把這個(gè)寫下來,往往拿不到Offer。所以講你的思路就很重要了。把你的思路和解題方法講出來,和面試官一起探討。面試官往往會(huì)試探的引導(dǎo)你去尋找正確方法,這就又給自己增加了機(jī)會(huì)。當(dāng)探討到面試官滿意的方法,或者實(shí)在想不出來,面試官說“那你就按當(dāng)前討論的方法寫吧”的時(shí)候再動(dòng)手寫。
按照上面的方法編程測(cè)試下來,就算你沒有用完美的方法解題,也一定會(huì)給面試官留下一個(gè)好的印象。
2. 面試
面試環(huán)節(jié)可變因素實(shí)在太多,問到自己沒有準(zhǔn)備過的問題非常正常。遇到自己準(zhǔn)備過的內(nèi)容,精確正確的回答是最理想的。然而遇到自己沒有準(zhǔn)備過的問題,也沒有必要直接說自己不會(huì)。往往一場(chǎng)面試下來,你發(fā)現(xiàn)有幾次“這個(gè)我不會(huì)”,那Offer也就沒了。那么怎么樣在自己不會(huì)的時(shí)候也能給面試官留下好印象呢?
- 讓面試官重復(fù)問題(確認(rèn)問題內(nèi)容,爭(zhēng)取思考時(shí)間)
- 復(fù)述問題(讓面試官確認(rèn)一下你是否理解了問題,同時(shí)爭(zhēng)取思考時(shí)間)
- 表明自己沒有研究過(讓面試官可以諒解,畢竟再厲害的人也有沒有研究過的問題)
- 請(qǐng)求時(shí)間思考一下(爭(zhēng)取時(shí)間,拼命想)
- 30秒到1分鐘后,講思路與面試官探討,不一定要有答案(表明自己的思路,以探討的方式和面試官交流,面試官會(huì)引導(dǎo)你向正確的答案靠近。)
舉一個(gè)我支付寶面試?yán)踝樱牡搅藬?shù)據(jù)庫(kù)分表,面試官突然問了如下問題:
假如有一個(gè)交易表,用戶和商家每進(jìn)行一次交易就會(huì)在交易表中產(chǎn)生一條記錄,那么分庫(kù)分表,要按照怎樣的規(guī)則分。
這個(gè)問題我之前并沒有準(zhǔn)備過。于是我說:“不好意思,我沒有太明白您的問題,您能否再重復(fù)一下。”,他重復(fù)一遍之后,我又復(fù)述了一下問題,得到了他的肯定之后,我說:“我之前沒有研究過這個(gè)問題,我現(xiàn)在思考一下可以嗎?”,面試官不會(huì)說不行的。
然后過了大概三四十秒的樣子。我回答:“對(duì)這張表進(jìn)行分表的話,我們希望的效果是同一個(gè)用戶的所有數(shù)據(jù)都在一個(gè)表中,同一個(gè)商家的所有數(shù)據(jù)都在同一個(gè)表中。但是任何用戶是可以和任何商家交易的。假設(shè)一個(gè)A表中的用戶和B表中的商家交易,那么產(chǎn)生的數(shù)據(jù)就無法確定放在哪個(gè)表中,所以不存在這樣的一個(gè)分表規(guī)則。”其實(shí)我在那段時(shí)間里就想到這里,在說這段話的時(shí)候想到的接下來的。然后我接著說:“那么不知道是不是可以將這個(gè)表通過用戶分表,另外再維護(hù)一個(gè)商家到原始數(shù)據(jù)的索引表。來為商家提供查詢。”然后面試官說:“這樣確實(shí)可以,但是有些麻煩,沒關(guān)系,我隨便問問的。”
如果遇到?jīng)]有準(zhǔn)備過的問題,按照這個(gè)思路,最后只要說出一些自己的思路。即使思路不太正確。也比直接說不會(huì)好。畢竟誰都有沒有研究過的問題。這樣回答至少說明了你樂于去思考。
總結(jié)
在面試過程中,遇到?jīng)]有準(zhǔn)備過的問題很正常。遇到的時(shí)候不要慌張,要保持冷靜,想辦法爭(zhēng)取時(shí)間,并在爭(zhēng)取到的時(shí)間內(nèi)全速開啟自己的CPU去思考。最后把握好時(shí)間不要冷場(chǎng)尷尬。沒有想出結(jié)果就說思路。無論對(duì)錯(cuò)都比直接說不會(huì)好。祝大家面試成功。下一篇介紹平時(shí)工作工程中如何積累。