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