天天看點

面試常考的幾個題

  管道( pipe ):管道是一種半雙工的通信方式,資料隻能單向流動,而且隻能在具有親緣關系的程序間使用。程序的親緣關系通常是指父子程序關系。

  有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系程序間的通信。

  信号量( semophore ) : 信号量是一個計數器,可以用來控制多個程序對共享資源的通路。它常作為一種鎖機制,防止某程序正在通路共享資源時,其他程序也通路該資源。是以,主要作為程序間以及同一程序内不同線程之間的同步手段。

  消息隊列( message queue ) : 消息隊列是由消息的連結清單,存放在核心中并由消息隊列辨別符辨別。消息隊列克服了信号傳遞資訊少、管道隻能承載無格式位元組流以及緩沖區大小受限等缺點。

  信号 ( sinal ) : 信号是一種比較複雜的通信方式,用于通知接收程序某個事件已經發生。

  共享記憶體( shared memory ) :共享記憶體就是映射一段能被其他程序所通路的記憶體,這段共享記憶體由一個程序建立,但多個程序都可以通路。共享記憶體是最快的 IPC 方式,它是針對其他程序間通信方式運作效率低而專門設計的。它往往與其他通信機制,如信号兩,配合使用,來實作程序間的同步和通信。

  套接字( socket ) : 套解口也是一種程序間通信機制,與其他通信機制不同的是,它可用于不同及其間的程序通信。

  TCP/IP是個協定組,可分為三個層次:網絡層、傳輸層和應用層。

  在網絡層有IP協定、ICMP協定、ARP協定、RARP協定和BOOTP協定。

  在傳輸層中有TCP協定與UDP協定。

  在應用層有FTP、HTTP、TELNET、SMTP、DNS等協定。

  是以,HTTP本身就是一個協定,是從Web伺服器傳輸超文本到本地浏覽器的傳送協定。

一群人開舞會,每人頭上都戴着一頂帽子。帽子隻有黑白兩種,黑的至少有一頂。每個人都能看到其它人帽子的顔色,卻看不到自己的。主持人先讓大家看看别人頭上戴的是什麼帽子,然後關燈,如果有人認為自己戴的是黑帽子,就打自己一個耳光。第一次關燈,沒有聲音。于是再開燈,大家再看一遍,關燈時仍然鴉雀無聲。一直到第三次關燈,才有劈劈啪啪打耳光的聲音響起。問有多少人戴着黑帽子?

  解:三個人

1. 若是兩個人,設A、B是黑帽子,第二次關燈就會有人打耳光。原因是A看到B第一次沒打耳光,就知道B也一定看到了有帶黑帽子的人,可A除了知道B帶黑帽子外,其他人都是白帽子,就可推出他自己是帶黑帽子的人!同理B也是這麼想的,這樣第二次熄燈會有兩個耳光的聲音。

2. 如果是三個人,A,B,C. A第一次沒打耳光,因為他看到B,C都是帶黑帽子的;而且假設自己帶的是白帽子,這樣隻有BC戴的是黑帽子;按照隻有兩個人帶黑帽子的推論,第二次應該有人打耳光;可第二次卻沒有。。。于是他知道B和C一定看到了除BC之外的其他人帶了黑帽子,于是他知道BC看到的那個人一定是他,是以第三次有三個人打了自己一個耳光

S先生、P先生、Q先生他們知道桌子的抽屜裡有16張撲克牌:紅桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方塊A、5。約翰教授從這16張牌中挑出一張牌來,并把這張牌的點數告訴P先生,把這張牌的花色告訴Q先生。這時,約翰教授問P先生和Q先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎?于是,S先生聽到如下的對話:P先生:我不知道這張牌。Q先生:我知道你不知道這張牌。P先生:現在我知道這張牌了。Q先生:我也知道了。聽罷以上的對話,S先生想了一想之後,就正确地推出這張牌是什麼牌。請問:這張牌是什麼牌?

解:方塊 5

P知道點數卻不知道是哪張牌,那麼就去掉點數不重複的 J、8、2、7、3、K、6.剩下:

紅桃 A、Q、4

黑桃 4

草花 Q、5、4、

方塊 A、5

然後,Q知道花色,并且知道P不知道是哪張牌,那麼就排除含有隻出現一次數的花色:黑桃、草花.剩下:

然後,P知道點數的,聽Q說“我知道你不知道這張牌.”就知道了是哪張牌,是以絕不可能是點數重複的A.于是剩下:

紅桃:Q、4

方塊:5

最後,Q聽P這麼說(P知道點數,而Q又可以确定花色),那麼隻能是方塊5

一個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!一天教授給他們出了一個題,教授在每個人腦門上貼了一張紙條并告訴他們,每個人的紙條上都寫了一個正整數,且某兩個數的和等于第三個!(每個人可以看見另兩個數,但看不見自己的)教授問第一個學生:你能猜出自己的數嗎?回答:不能,問第二個,不能,第三個,不能,再問第一個,不能,第二個,不能,第三個:我猜出來了,是144!教授很滿意的笑了。請問您能猜出另外兩個人的數嗎?

 解:經過第一輪,說明任何兩個數都是不同的。第二輪,前兩個人沒有猜出,說明任何一個數都不是其它數的兩倍。現在有了以下幾個條件:1.每個數大于02.兩兩不等3.任意一個數不是其他數的兩倍。每個數字可能是另兩個之和或之差,第三個人能猜出144,必然根據前面三個條件排除了其中的一種可能。假設:是兩個數之差,即x-y=144。這時1(x,y>0)和2(x!=y)都滿足,是以要否定x+y必然要使3不滿足,即x+y=2y,解得x=y,不成立(不然第一輪就可猜出),是以不是兩數之差。是以是兩數之和,即x+y=144。同理,這時1,2都滿足,必然要使3不滿足,即x-y=2y,兩方程聯立,可得x=108,y=36。

這兩輪猜的順序其實分别為這樣:第一輪(一号,二号),第二輪(三号,一号,二号)。這樣分大家在每輪結束時獲得的資訊是相同的(即前面的三個條件)。

那麼就假設我們是C,來看看C是怎麼做出來的:C看到的是A的36和B的108,因為條件,兩個數的和是第三個,那麼自己要麼是72要麼是144(猜到這個是因為72的話,108就是36和72的和,144的話就是108和36的和。這樣子這句話看不懂的舉手):

  假設自己(C)是72的話,那麼B在第二回合的時候就可以看出來,下面是如果C是72,B的思路:這種情況下,B看到的就是A的36和C的72,那麼他就可以猜自己,是36或者是108(猜到這個是因為36的話,36加36等于72,108的話就是36和108的和):

  如果假設自己(B)頭上是36,那麼,C在第一回合的時候就可以看出來,下面是如果B是36,C的思路:這種情況下,C看到的就是A的36和B的36,那麼他就可以猜自己,是72或者是0(這個不再解釋了):

  如果假設自己(C)頭上是0,那麼,A在第一回合的時候就可以看出來,下面是如果C是0,A的思路:這種情況下,A看到的就是B的36和C的0,那麼他就可以猜自己,是36或者是36(這個不再解釋了),那他可以一口報出自己頭上的36。(然後是逆推逆推逆推),現在A在第一回合沒報出自己的36,C(在B的想象中)就可以知道自己頭上不是0,如果其他和B的想法一樣(指B頭上是36),那麼C在第一回合就可以報出自己的72。現在C在第一回合沒報出自己的36,B(在C的想象中)就可以知道自己頭上不是36,如果其他和C的想法一樣(指C頭上是72),那麼B在第二回合就可以報出自己的108。現在B在第二回合沒報出自己的108,C就可以知道自己頭上不是72,那麼C頭上的唯一可能就是144了。

前提: 1 有五棟五種顔色的房子 2 每一位房子的主人國籍都不同 3 這五個人每人隻喝一種飲料,隻抽一種牌子的香煙,隻養一種寵物 4 沒有人有相同的寵物,抽相同牌子的香煙,喝相同的飲料 提示:1  英國人住在紅房子裡 2  瑞典人養了一條狗 3  丹麥人喝茶 4  綠房子在白房子左邊 5  綠房子主人喝咖啡 6  抽PALL MALL煙的人養了一隻鳥 7  黃房子主人抽DUNHILL煙 8  住在中間那間房子的人喝牛奶 9  挪威人住第一間房子 10 抽混合煙的人住在養貓人的旁邊 11 養馬人住在抽DUNHILL煙的人旁邊 12 抽BLUE MASTER煙的人喝啤酒 13 德國人抽PRINCE煙 14 挪威人住在藍房子旁邊 15 抽混合煙的人的鄰居喝礦泉水 問題是:誰養魚???

第一間是黃房子,挪威人住,喝礦泉水,抽DUNHILL香煙,養貓;

第二間是藍房子,丹麥人住,喝茶,抽混合煙,養馬;

第三間是紅房子,英國人住,喝牛奶,抽PALL MALL煙,養鳥;

第四間是綠房子,德國人住,喝咖啡,抽PRINCE煙,養貓、馬、鳥、狗以外的寵物;

第五間是白房子,瑞典人住,喝啤酒,抽BLUE MASTER煙,養狗。

5個人來自不同地方,住不同房子,養不同動物,吸不同牌子香煙,喝不同飲料,喜歡不同食物。根據以下線索确定誰是養貓的人。 1. 紅房子在藍房子的右邊,白房子的左邊(不一定緊鄰) 2. 黃房子的主人來自香港,而且他的房子不在最左邊。 3. 愛吃比薩的人住在愛喝礦泉水的人的隔壁。 4. 來自北京的人愛喝茅台,住在來自上海的人的隔壁。 5. 吸希爾頓香煙的人住在養馬人的右邊隔壁。 6. 愛喝啤酒的人也愛吃雞。 7. 綠房子的人養狗。 8. 愛吃面條的人住在養蛇人的隔壁。 9. 來自天津的人的鄰居(緊鄰)一個愛吃牛肉,另一個來自成都。 10.養魚的人住在最右邊的房子裡。 11.吸萬寶路香煙的人住在吸希爾頓香煙的人和吸“555”香煙的人的中間(緊鄰) 12.紅房子的人愛喝茶。 13.愛喝葡萄酒的人住在愛吃豆腐的人的右邊隔壁。 14.吸紅塔山香煙的人既不住在吸健牌香煙的人的隔壁,也不與來自上海的人相鄰。 15.來自上海的人住在左數第二間房子裡。 16.愛喝礦泉水的人住在最中間的房子裡。 17.愛吃面條的人也愛喝葡萄酒。 18.吸“555”香煙的人比吸希爾頓香煙的人住的靠右

答案:

第一間是蘭房子,住北京人,養馬,抽健牌香煙,喝茅台,吃豆腐;

第二間是綠房子,住上海人,養狗,抽希爾頓,喝葡萄酒,吃面條;

第三間是黃房子,住香港人,養蛇,抽萬寶路,喝礦泉水,吃牛肉;

第四間是紅房子,住天津人,抽555,喝茶,吃比薩;

第五間是白房子,住成都人,養魚,抽紅塔山,喝啤酒,吃雞。

有5個囚犯(A、B、C、D、E),在裝有100顆綠豆的麻袋裡抓綠豆,規定每人至少抓一顆,而抓的最多和最少的人将被處死,而且、他們之間不能交流,但在抓的時候,可以摸出剩下的豆子數.問他們中誰的存活幾率最大?

提示:1、他們都是很聰明的人

2、他們的原則是先求保命,再去多殺人

3、100顆不必都分完

4、若有重複的情況,則也算最大或最小,一并處死.

每個人拿的個數必須大于等于2,否則就是死

是以,1号最多敢拿50-2*4=42顆,但這也是死,因為2号就拿41顆,剩下17顆,1号也是死.

是以1号必須讓拿了N顆後,再讓2号拿後,還剩很多.那麼我們把100顆分為5份.

如果1号拿21顆,2号就拿20顆,剩下59顆,肯定有一個人拿的少于20顆,是以1号拿21顆死定.

再看1号拿20顆,2号拿21顆的話,剩下也是59顆,可以是20+20+19,2号死定.

那麼,看2号拿20顆,剩下60顆,3号如果拿21顆,剩下39顆,可以是20+19,3号死定.

是以,接着看3号拿20顆,剩下40顆,那麼,4号怎麼拿也是死!而且和5号一起死!要不就全部一起死(都拿20顆)

3号當然怕同歸于盡啊,因為4号5号心想怎麼也是個死,不如弄死全部.

是以看3号拿19顆,剩下41顆,可以是20+20,20+19.20+21,不管怎麼,3号都死定了.

是以,3号隻敢拿20顆.因為可以活不成也弄個全體一起死.

那麼,4号也同樣怕全部20顆的情況,是以,而21顆不能拿,是以,他拿19顆.

剩下61顆,可以是20+20+19,20+20+20,20+20+21,他怎麼也是個死!

是以,4号沒得選擇,隻能拿20顆.至少可以弄得個全部拿20顆一起同歸于盡.

同理!5号也隻能拿20顆!

這樣下去,1-5号都拿20顆,同歸于盡!

因為:任何一個人,拿21個以上或者19個以下(包括)就是單獨死或者隻死幾個.

是以.答案是:“同歸于盡”

繼續閱讀