前幾天我們一個師哥去面試,遇到了這樣的問題,人家給了個腦筋急轉彎讓他回答。他沒回答出來(這是米導說的,註:米導——米導師,把我們都迷倒了,
O(
∩
_
∩
)O~
),然後米導就把這個問題給了我們。於是有了這篇文章。
問題是:
13
加
4
或者減
4
在什麼情況下等於
1.
?
你可以先思考一下。記住,這是給一個挨踢人的轉彎題。
首先分析一下人家出這個面試題的目的。
個人感覺,人家出這樣的面試題一般要看你的思維是否敏捷,第二呢就是看你的基礎知識是否紮實,第三就是看你的知識面是否廣或聯想能力是否夠強。
既然是編程人員,上述的三點都是毋庸置疑需要具備的素質。
然後在拆開來說。
思維敏捷,也就是你的反應要快,這是長期訓練才能修鍊好的一項能力。但是這項能力的依據也是第二、第三要說的。
基礎知識,這是你整體知識或說是能力大廈的根基所在。沒有這個根基就算是再高的樓也會輕易被風吹倒。在此基礎上可以發展第三項能力。
廣闊的知識面:有了一定基礎你才能夠在此基礎之上不斷地發揮,讓知識蔓延。也在此基礎上你才可以有足夠的資源供你聯想。
當然了還有一點必須要說的就是你的基礎知識和你的寬廣的知識面必須形成一個完整的知識體系。要達到這一點就必須要不斷地總結,比較,和歸納。這樣就會慢慢的建立起知識網路,讓知識都聯絡起來。於是這樣你就可以從一點想到另外一點,想到另外的一片知識網路。這個可以參見米導的一篇部落格很經典:
《該歸倉了
----
總結的傳說》
額,貌似有人不滿了。是不是想迫不及待看到答案。看了我說的這麼多的“廢話”也不知道你有答案了沒有。下面公布一下由我們班裡想的一個參考和米導給的一個參考:
先回顧一下問題:問題是:
13
加
4
或者減
4
在什麼情況下等於
1.
?
第一個參考(由卓同學提出):在二進位只取四位的情況下
13
加
4
可以等於
1
。
解說:
13
加
4
等於
17
,換成二進位也就是
10001
。如果只取四位的話那就是說第一個
1
(從左至右)就算是溢出了。於是結果就是
1
。(很佩服這個同學呀,不愧為物電學院出身,對這個很瞭解。)
第二個參考(由米導提出):在電腦的世界裡,只有
0
和
1
,因此無論你什麼數相加減不是
1
就是
0
,而再由平常的
bool
型判斷可知,只要你不是
0
(
FALSE
),那麼就是
1
(
TRUE
)。因此無論什麼數相加減,只要不是
0
他就是
1
。(個人感覺這個答案很強悍,直接看到本質)
不知道看官還有什麼別的答案,歡迎提出,歡迎指教。