1. 程式人生 > >程式設計師證明自己智商的時候到了,一大波智力面試題正在靠近

程式設計師證明自己智商的時候到了,一大波智力面試題正在靠近

與傳統的面試不同,程式設計面試題以程式設計題、IQ智力題及各種與計算機相關的技術性問題為主。其中智力題,每個正式的筆試、面試都會出,而且在面大企業的時候必然會問到,下面介紹幾個面試智力題。

1、兩柱香問題

題目:有兩柱不均勻的香,每柱香燃燒完需要1個小時,問:怎樣用兩柱香切出一個15分鐘的時間段?這個題的重點就是怎麼切。

解答:將甲香的一頭點著,將乙香的兩頭點著,當乙香燃燒完時,說明已經過了半個小時,同時也說明甲香也正好燃燒了一半,此時,將甲香的另一頭點著,從此時起到甲香完全燒完,正好15分鐘。

理解:可以聯想下二分法

2、燈管問題

在房裡有三盞燈,房外有三個開關,在房外看不見房內的情況,你只能進門一次,你用什麼方法來區分那個開關控制那一盞燈?

解答:開啟一盞燈10分鐘,關掉,開啟第二盞,進去看看哪盞亮,摸摸哪盞熱,熱的是第一個開啟的開關開的,亮的是第二個開關開的,另一個就是第三個。

3、兩位盲人問題

他們都各自買了兩對黑襪和兩對白襪,八對襪了的布質、大小完全相同,而每對襪了都有一張商標紙連著。兩位盲人不小心將八對襪了混在一起。 他們每人怎樣才能取回黑襪和白襪各兩對呢?

答案:每一對分開,一人拿一隻,因為襪子不分左右腳的;

4、果凍問題

你有一桶果凍,其中有黃色,綠色,紅色三種,閉上眼睛,同時抓取兩個果凍。抓取多少個就可以確定你肯定有兩個同一顏色的果凍?

答案:2次4個!

5、喝啤酒問題

假如每3個空啤酒瓶可以換一瓶啤酒,某人買了10瓶啤酒,那麼他最多可以喝到多少瓶啤酒?

答案:喝完10瓶後用9個空瓶換來3瓶啤酒(喝完後有4個空瓶)喝完這三瓶又可以換到1瓶啤酒(喝完後有2個空瓶),這時他有2個空酒瓶,如果他能向老闆先借一個空酒瓶,就湊夠了3個空瓶可以換到一瓶啤酒,把這瓶喝完後將空瓶還給老闆就可以了。
所以他最多可以喝10+3+1+1=15瓶

6、三人住旅館

有三個人去住旅館,住三間房,每一間房$10元,於是他們一共付給老闆$30,第二天,老闆覺得三間房只需要$25元就夠了於是叫小弟退回$5給三位客人,誰知小弟貪心,只退回每人$1,自己偷偷拿了$2,這樣一來便等於那三位客人每人各花了九元,於是三個人一共花了$27,再加上小弟獨吞了不$2,總共是$29。可是當初他們三個人一共付出$30那麼還有$1呢?

答案:他們所消費的27元裡已經包括小弟貪汙的2元了,再加退還的3元=30元。這種題一定不要亂了陣腳,根據一條思路做:這30元現在的分佈是:老闆拿25元,夥計拿2元,三人各拿1元,正好!

7、三筐蘋果問題

有三筐水果,一筐裝的全是蘋果,第二筐裝的全是橘子,第三筐是橘子與蘋果混在一起。筐上的標籤都是騙人的,(就是說筐上的標籤都是錯的)你的任務是拿出其中一筐,從裡面只拿一隻水果,然後正確寫出三筐水果的標籤。

答案:從標著“混合”標籤的筐裡拿一隻水果,就可以知道另外兩筐裝的是什麼水果了。

分析:從混合的拿出一個來,如果是蘋果,而貼蘋果的筐裡有可能是橘子和混合,如果是混合,說明貼橘子的筐裡是橘子,不成立(因為前提說了,每個標籤都是錯的)。所以貼蘋果的筐裡是橘子,則貼橘子的筐裡是混合。

8、汽車加油問題

一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗油量為1升,A處有無窮多的油,其他任何地點都沒有油,但該車可以在任何地點存放油以備中轉,問從A到B最少需要多少油

解答:嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵。題目可歸結為求數列an=500/(2n 1)   n=0,1,2,3......的和Sn什麼時候大於等於1000,解得n>6當n=6時,S6=977.57,所以第一個中轉點離起始位置距離為1000-977.57=22.43公里.所以第一次中轉之前共耗油22.43*(2*7 1)=336.50升此後每次中轉耗油500升,所以總耗油量為7*500 336.50=3836.50升。

9、兩個人猜數問題

教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流猜這兩個數, 甲說:“我猜不出”, 乙說:“我猜不出”, 甲說:“我猜到了”,   乙說:“我也猜到了”, 問這兩個數是多少?

解答:3和4。設兩個數為n1,n2,n1> =n2,甲聽到的數為n=n1 n2,乙聽到的數為m=n1*n2,證明n1=3,n2=4是唯一解。證明:要證以上命題為真,不妨先證n=7

1)必要性
     i)   n> 5   是顯然的,因為n <4不可能,n=4或者n=5甲都不可能回答不知道
     ii)   n> 6   因為如果n=6的話,那麼甲雖然不知道(不確定2 4還是3 3)但是無論是2,4還是3,3乙都不可能說不知道(m=8或者m=9的話乙說不知道是沒有道理的)
     iii)   n <8   因為如果n> =8的話,就可以將n分解成   n=4 x   和   n=6 (x-2),那麼m可以是4x也可以是6(x-2)而4x=6(x-2)的必要條件是x=6即n=10,那樣n又可以分解成8 2,所以總之當n> =8時,n至少可以分解成兩種不同的合數之和,這樣乙說不知道的時候,甲就沒有理由馬上說知道。以上證明了必要性。

2)充分性
    當n=7時,n可以分解成2 5或3 4
    顯然2 5不符合題意,捨去,容易判斷出3 4符合題意,m=12,證畢
    於是得到n=7   m=12   n1=3   n2=4是唯一解。

10、猴子吃香蕉問題

一個小猴子邊上有100 根香蕉,它要走過50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,請問它最多能把多少根香蕉搬到家裡。 

解答:設 小猴從0 走到50, 到A 點時候他可以直接抱香蕉回家了, 可是到A 點時候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一個限制就是小猴只能抱50 只香蕉, 那麼在A 點小猴最多49 只香蕉.100-3A=49, 所以A=17.   這樣折騰完到家的時候香蕉剩100-3A-(50-A)=50-2A=16.

下面是15道谷歌的智力面試題,我已選擇死亡。

1、 村子裡有100對夫妻,其中每個丈夫都瞞著自己的妻子偷情。村裡的每個妻子都能立即發現除自己丈夫之外的其他男人是否偷情,唯獨不知道她自己的丈夫到底有沒有偷情。村裡的規矩不容忍通姦。任何一個妻子,一旦能證明自己的男人偷情,就必須當天把他殺死。村裡的女人全都嚴格照此規矩辦事。一天,女頭領出來宣佈,村裡至少有一個丈夫偷情。請問接下來會發生什麼事?

答案:這是一個典型的遞迴問題。一旦所有的妻子都知道至少有一個男人出軌,我們就可以按遞迴方式來看待這個流程。先讓我們假設只有一個丈夫偷情。則他的妻子見不到任何偷情的男人,因此知道這個人就是自己丈夫,她當天就會殺了他。假如有兩個丈夫偷情,則他倆的妻子只知道不是自己丈夫的那一個男人偷情。因此她會等上一天看那個人有沒有被殺死。假如第一天沒人被殺死,她就能確定她自己的丈夫也偷了情。依此類推,假如有100個丈夫偷情,則他們能安全活上99 天,直到100天時,所有妻子把他們全都殺死。

應聘職位:產品經理

2、假設在一段高速公路上,30分鐘之內見到汽車經過的概率是0.95。那麼,在10分鐘內見到汽車經過的概率是多少?(假設預設概率固定)

答案:這題的關鍵在於0.95是見到一輛或多輛汽車的概率,而不是僅見到一輛汽車的概率。在30分鐘內,見不到任何車輛的概率為0.05。因此在10分鐘內見不到任何車輛的概率是這個值的立方根,而在10分鐘內見到一輛車的概率則為1減去此立方根,也就是大約63%。

應聘職位:產品經理

3、有四個人要在夜裡穿過一條懸索橋回到宿營地。可是他們只有一支手電,電池只夠再亮17分鐘。過橋必須要有手電,否則太危險。橋最多隻能承受兩個人 同時通過的重量。這四個人的過橋速度都不一樣:一個需要1分鐘,一個需要2分鐘,一個需要5分鐘,還有一個需要10分鐘。他們如何才能在17分鐘之內全部 過橋?

答案:1和2一起過(2分鐘);1返回(3分鐘);5和10一起過(13分鐘);2返回(15分鐘);1和2一起過(17分鐘)。全體安全過橋。

應聘職位:產品經理

4、你和一個朋友去參加聚會。聚會算上你們一共10人。。。你的朋友想要跟你打個賭:你在這些人每找到一個和你生日相同的,你就贏1塊錢。他在這些人裡每找到一個和你生日不同的人,他就贏2塊錢。你該不該打這個賭?

答案:不算閏年的話,別人跟你生日相同的概率是1/365;跟你生日不同的概率是364/365。因此不要打這個賭。

應聘職位:產品經理

5、如果你看到時鐘上面的時間是3:15,那麼其時針和分針之間的角度是多少?答案不是零)

答案:7.5度。時鐘上每一分鐘是6度(360度/60分鐘)。時針每小時從一個數字走到下一個數字(此例中為從3點到4點),也就是30度。因為此題中時間剛好走過1/4小時,因此時針走完30度的1/4,也就是7.5度。

應聘職位:產品經理

6、將一根木條折成3段之後,可以形成一個三角形的概率有多大?答案:因為題目中沒有說要求木條必須首尾相連的做成三角形,因此答案是100%。任何長度的三根木條都可以形成一個三角形。

應聘職位:產品經理

7、南非有個延時問題。請對其加以分析。

答案:這顯然是個非常模糊的問題,因此沒有唯一的正確答案。比較好的回答應該是由被面試者展示自己對“延時”概念的熟悉程度以及發揮自己的想象力,構想出一個有趣的延時問題並對其提供一個有趣的解決方案。

應聘職位:產品經理

8、在一個兩維平面上有三個不在一條直線上的點。請問能夠作出幾條與這些點距離相同的線?

答案:三條。將兩點之間聯成一條線段。在這條線段與第三點之間正中的位置,做一條與此線段平行的直線,即為一條距三點等距的線。然後按此方法對其餘兩點的組合做出另外兩條來。

應聘職位:軟體工程師

9、2的64次方是多少?

答案:如果你不是因為坐在面試室裡,手邊沒有計算器的話,應該可以很容易找到答案,即1.84467441 乘以10的19次方。

應聘職位:軟體工程

10、假設你在衣櫥裡掛滿襯衫,很難從中挑出某一件來。請問你打算怎樣整理一下,使得它們容易挑選?

答案:此題沒有固定答案。考驗的是被面試者在解決問題方面的想象力和創造性。我們覺得讀者”Dude”的這個答案可能會給Google留下深刻印象:把它們按布料的種類進行雜湊(HASH)組合。然後每類再按2-3-4樹或紅黑樹(都是計算機演算法)排序。

應聘職位:軟體工程師

11、給你一副井字棋(Tic Tac Toe)。。。你來寫一個程式,以整個遊戲和一個玩家的名字為引數。此函式需返回遊戲結果,即此玩家是否贏了。首先你要決定使用哪種資料結構處理遊戲。你 還要先講出使用哪種演算法,然後寫出程式碼。注意:這個遊戲中的某些格子裡可能是空的。你的資料結構需要考慮到這個條件。

答案:所需要的資料結構應為二元字元數列。呼叫此函式檢查6種條件,判斷是否有贏家。其中第6種條件就是看是否還有空格。如果有贏家,則字元判斷玩家是X還是O。因此你需要一個旗標。如果有贏家則返回此值並結束遊戲,如果沒有則繼續遊戲。

應聘職位:軟體工程師

12、為1萬億個數排序需要多長時間?請說出一個靠譜的估計。

答案:這又是一個沒有標準答案的題目。目的是考察被面試者的創造性。我們傾向於兩位讀者給出的簡單答案:用歸併排序法(Merge Sort)排序。平均情況下為O(1,000,000,000,000 Log 1,000,000,000,000)。最差情況下為O(1,000,000,000,000 Log 1,000,000,000,000)。現在可以做到每秒10億次的運算,所以大約應需要3000秒。

應聘職位:軟體工程師

13、請設計一個“蛙跳”遊戲的演算法,並寫出方案的程式碼。。。

答案:這個遊戲的目標是引導一個青蛙避開來往車輛,橫穿一條繁忙的公路。你可以用一個數列來代表一條車道。將方案簡化成一條N車道的公路。我們只找到 一個對此問題的解答,它來自Glassdoor.com網站:“一個方法是寫一個遞迴演算法來決定何時等待,何時跳進下一個車道。這由下條車道中是否有逐漸 接近的障礙物來決定。”

應聘職位:軟體工程師

14、Google每年收到多少份軟體工程師的簡歷?這也是在考察應試者是否有能力把問題簡單明確化,並提出創造性的解決方案。

答案:一個“量化報酬分析師”職位的求職者,應該知道2008年Google僱傭了3400人。估計其中75%,即2550人,應該是工程師,並且 Google和哈佛的錄取率類似,即從申請人中取3%。由此可知應該收到大約85000簡歷(85000 x 3% = 2550)

應聘職位:量化報酬分析師

15、給你一個數字連結串列。連結串列到頭之後又會從頭開始(迴圈連結串列)。請寫出尋找連結串列中最小數字的最高效演算法。找出此連結串列中的任意給定數字。連結串列中的 數字總是不斷增大的,但是你不知道迴圈連結串列從何處開始。例:38, 40, 55, 89, 6, 13, 20, 23, 36。

答案:我們最喜歡的答案來自讀者”dude”:建立臨時指標並從根上開始。(迴圈連結串列大多數情況下都有向前或向後指標。)判斷是向前更大還是向後更 大。如果向前更大則知道已達到連結串列最後,又重新位於連結串列開始位置。如果向前更大,那你可以向後搜尋並進行數字比較。如果既沒有根也沒有指標指向連結串列,那麼 你的資料就丟失在記憶體中了。

應聘職位:量化報酬分析師

參考連結

http://www.studyofnet.com/news/821.html

http://www.cnblogs.com/greatfish/p/5988882.html