那些年讓你吐血的面試題

QQ羣288567073,無商業廣告,每日干貨電子書+視頻分享

荔枝FM手機客戶端搜索“挨踢脫口秀”即可訂閱我們

視頻彙總首頁:http://edu.51cto.com/lecturer/index/user_id-4626073.html

喝汽水撐死的小明

小明去小賣部買汽水喝,一塊錢一瓶,且喝完兩個空瓶可以換一瓶汽水。現在小明一共有20塊錢,問一共能喝多少瓶汽水?


看完我就想:靠,小明咋沒喝汽水撐死。


不過想完題還是要做的,代碼還是要寫的。其實這題想想也不難,遞歸實現,不斷喝,撐死爲止。


wKiom1ZKhq_jGjvLAAGCvye_bhk866.png

兩行代碼搞定,還是還是可以的嘛。


不過被告知答案錯誤,最後只剩下一瓶的時候,小明還可以找老闆借個空瓶子,兩個空瓶子換一瓶汽水,喝完再把空瓶子還回去嘛。


小W一口老血。


這還不算關鍵,最後測試了幾組數據,驚奇地發現,答案原來就是:


2N


仔細想想,也好解釋,我們需要把每個瓶子看成一個獨立的單位,當喝完後拿該瓶子和和另外的空瓶一起去換時,可以想象成從別的去來一個空瓶子,換來的汽水喝完後再把空瓶子回去。


這樣就相當於每買一瓶都可以喝兩瓶,且不會有剩餘,最大化利用了,最後的結果就是2n

吐血2.0

什麼,上面那題你做過,還是小學!!!


好吧,只能感概現在小學生的題目越來越益(bian)智(tai)了。


那下面來道小學生沒做過的吧(不代表小學生不會做哦~)


給你一個數n,讓你找出m(m >= 3)個數,使得:

a1 - a2 + a3 - a4 + a5 - a6...am = n

前面數是後面數的整數倍(至少2倍),即a1除以任何一個後面的數結果都爲一個大於1的整數,依此類推a2,a3...am


例如:

99 = 128 - 32 + 4 - 1

224 = 256 - 64 + 32

2 就無法拆分成這樣的序列


現在給你一個正整數n,讓你構造這樣的序列。

拿到題了想啊,這題絕壁是化爲二進制處理嘛,化成二進制串,搜索加剪枝,搞搞差不多。


但是

n = 2(n-1) - (n-1) + 1

只要保證 n - 1 > 1,即n > 2都可以這樣拆,小於等於2的無解。

好吧。

面對這種吐血的題該怎麼辦

1、很快有想法了不用急着寫代碼,因爲一旦思維定式了很難回來,而且或許你多想兩分鐘就可以少敲20分鐘的代碼,更重要的是在面試官的心中的印象分會大大提高;


2、想了會,還是沒有巧解的想法,那就趕緊先把本的想法寫出來,像第一題你先寫個遞歸的也還可以;


3、就是完全沒有想法,像第二題,即想不到巧解的辦法,又不會寫複雜的搜索程序。那這個時候你就危險了,但記住千萬不要什麼都不做,你可以寫個不是完全對的代碼,比如這題我可以寫個遍歷,選擇一定的範圍一個個嘗試。雖然這種做法容易遭到鄙視,但是總比什麼不做好,至少向面試官證明你在努力解決問題,這個勇於死磕難題態度很重要。此外,如果你項目經驗豐富,或者代碼習慣好等等也可以在這時候展示給面試官,或許能從其他方面打動面試官;


4、如果你還是在校生,建議可以看看編程之美之類的書籍,如果你還是大一大二的話,那搞搞ACM吧,這個能給你面試提供很大的幫助,很大!!!

wKioL1ZKiDfQwtaNAAC7xM3r2nY437.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章