1. 程式人生 > >面試軟體測試 智力題題目與部分答案

面試軟體測試 智力題題目與部分答案

1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如
何用燒繩的方法來計時一個小時十五分鐘呢?
答案:三根繩,第一根點燃兩端,第二根點燃一端,第三根不點第一根繩燒完(30分鐘)後,
點燃第二根繩的另一端,第二根繩燒完(45分鐘)後,點燃第三根繩子兩端,第三根繩燒
完(1小時15分)後,計時完成
2.你有一桶果凍,其中有黃色、綠色、紅色三種,閉上眼睛抓取同種顏色的兩個。抓取多
少個就可以確定你肯定有兩個同一顏色的果凍?
答案:根據抽屜原理,4個
3.如果你有無窮多的水,一個3公升的提捅,一個5公升的提捅,兩隻提捅形狀上下都不均
勻,問你如何才能準確稱出4公升的水?
答案:把三公升的桶注滿水,倒入五公升桶裡去,然後在把三公升的桶倒滿,把五公升的桶給注滿了倒掉,三公升桶裡還有一升,把這一升倒入五公升桶裡去,在注入三公升就是四公升了。
4.一個岔路口分別通向誠實國和說謊國。來了兩個人,已知一個是誠實國的,另一個是說
謊國的。誠實國永遠說實話,說謊國永遠說謊話。現在你要去說謊國,但不知道應該走哪
條路,需要問這兩個人。請問應該怎麼問?
答案:問其中一人:另外一個人會說哪一條路是通往誠實國的?回答者所指的那條路必然是通
往說謊國的。
5.12個球一個天平,現知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個
球。13個呢?(注意此題並未說明那個球的重量是輕是重,所以需要仔細考慮)
答案:12個球:
    第一次:4,4 如果平了:那麼剩下的球中取3放左邊,取3個好球放右邊,稱:如果左邊重
,那麼取兩個球稱一下,哪個重哪個是次品,平的話第三個重,是次品,輕的話同理如果
平了,那麼剩下一個次品,還可根據需要稱出次品比正品輕或者重。如果不平:那麼不妨
設左邊重右邊輕,為了便於說明,將左邊4顆稱為重球,右邊4顆稱為輕球,剩下4顆稱為好
球取重球2顆,輕球2顆放在左側,右側放3顆好球和一顆輕球。如果左邊重,稱那兩顆重球
,重的一個次品,平的話右邊輕球次品。如果右邊重,稱左邊兩顆輕球,輕的一個次品。
如果平,稱剩下兩顆重球,重的一個次品,平的話剩下那顆輕球次品。
13個球:第一次:4,4,如果平了 剩5顆球用上面的方法仍舊能找出次品,只是不能知道
次品是重是輕,如果不平,同上
6.在9個點上畫10條直線,要求每條直線上至少有三個點?
 o     o     o
     o o
 o     o     o 
7.在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別
是什麼時間?你怎樣算出來的?
答案:23次,因為分針要轉24圈,時針才能轉1圈,而分針和時針重合兩次之間的間隔顯然>1
小時,它們有23次重合機會,每次重合中秒針有一次重合機會,所以是23次重合時間可以
對照手錶求出,也可列方程求出
8.你讓工人為你工作7天,回報是一根金條,這個金條平分成相連的7段,你必須在每天結
束的時候給他們一段金條。如果只允許你兩次把金條弄斷,你如何給你的工人付費?
答案:分成1,2,4三段,第一天給1,第二天給2取回1,第3天給1,第4天給4取回1、2,第5天
給1,第6天給2取回1,第七天給1,2

9.有一輛火車以每小時15公里的速度離開北京直奔廣州,同時另一輛火車每小時20公里的
速度從廣州開往北京。如果有一隻鳥,以30公里每小時的速度和兩輛火車同時啟動,從北
京出發,碰到另一輛車後就向相反的方向返回去飛,就這樣依次在兩輛火車之間來回地飛
,直到兩輛火車相遇。請問,這隻鳥共飛行了多長的距離?
答案:求出火車相遇時間,鳥速乘以時間就是鳥飛行的距離

10,你有四個裝藥丸的罐子,每個藥丸都有一定的重量,被汙染的藥丸是沒被汙染的藥丸的
重量+1。只稱量一次,如何判斷哪個罐子的藥被汙染了?
答案:
四個罐子中分別取1,2,3,4顆藥丸,稱出比正常重多少,即可判斷出那個罐子的藥被汙

11.門外三個開關分別對應室內三盞燈,線路良好,在門外控制開關時候不能看到室內燈的
情況,現在只允許進門一次,確定開關和燈的對應關係?
答案:三個開關分別:關,開,開10分鐘,然後進屋,暗且涼的為開關1控制的燈,亮的為開
關2控制的燈,暗且熱的為開關3控制的燈。

12.人民幣為什麼只有1、2、5、10的面值?
答案:因為可以用1,2,5,10組合成任何需要的貨幣值,日常習慣為10進位制
.13.給你兩顆6面色子,可以在它們各個面上刻上0-9任意一個數字,要求能夠用它們拼出任
意一年中的日期數值
答案:012345 0126(9)78


 第一題 . 五個海盜搶到了100顆寶石,每一顆都一樣大小和價值連城。他們決定這麼分:
抽籤決定自己的號碼(1、2、3、4、5)首先,由1號提出分配方案,然後大家表決,當且
僅當超過半數的人同意時,按照他的方案進行分配,否則將被扔進大海喂鯊魚如果1號死後
,再由2號提出分配方案,然後剩下的4人進行表決,當且僅當超過半數的人同意時,按照
他的方案進行分配,否則將被扔入大海喂鯊魚依此類推。條件:每個海盜都是很聰明的人
,都能很理智地做出判斷,從而做出選擇。
問題:第一個海盜提出怎樣的分配方案才能使自己的收益最大化?
第二題 . 一道關於飛機加油的問題
已知:每個飛機只有一個油箱,飛機之間可以相互加油(注意是相互,沒有加油機)一箱
油可供一架飛機繞地球飛半圈,問題:為使至少一架飛機繞地球一圈回到起飛時的飛機場
,至少需要出動幾架飛機?(所有飛機從同一機場起飛,而且必須安全返回機場,不允許
中途降落,中間沒有飛機場)
第三題. 汽車加油問題:一輛載油500升的汽車從A開往1000公里外的B,已知汽車每公里耗
油量為1升,A處有無窮多的油,其他任何地點都沒有油,但該車可以在任何地點存放油以
備中轉,問從A到B最少需要多少油
第四題. 擲杯問題
一種杯子,若在第N層被摔破,則在任何比N高的樓層均會破,若在第M層不破,則在任何比
M低的樓層均會破,給你兩個這樣的杯子,讓你在100層高的樓層中測試,要求用最少的測
試次數找出恰巧會使杯子破碎的樓層。
第五題. 推理遊戲
教授選出兩個從2到9的數,把它們的和告訴學生甲,把它們的積告訴學生乙,讓他們輪流
猜這兩個數甲說:"我猜不出";乙說:"我猜不出";甲說:"我猜到了";乙說:"我也猜到
了"。問這兩個數是多少
第六題. 病狗問題
一個住宅區內有100戶人家,每戶人家養一條狗,每天傍晚大家都在同一個地方遛狗。已知
這些狗中有一部分病狗,由於某種原因,狗的主人無法判斷自己的狗是否是病狗,卻能夠
分辨其他的狗是否有病,現在,上級傳來通知,要求住戶處決這些病狗,並且不允許指認
他人的狗是病狗(就是隻能判斷自己的),過了7天之後,所有的病狗都被處決了,問,一
共有幾隻病狗?為什麼?
第七題. U2合唱團在17分鐘內得趕到演唱會場,途中必需跨過一座橋,四個人從橋的同一
端出發,你得幫助他們到達另一端,天色很暗,而他們只有一隻手電筒。一次同時最多可
以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來
回橋兩端。手電筒是不能用丟的方式來傳遞的。四個人的步行速度各不同,若兩人同行則
第七題. U2合唱團在17分鐘內得趕到演唱會場,途中必需跨過一座橋,四個人從橋的同一
端出發,你得幫助他們到達另一端,天色很暗,而他們只有一隻手電筒。一次同時最多可
以有兩人一起過橋,而過橋的時候必須持有手電筒,所以就得有人把手電筒帶來帶去,來
回橋兩端。手電筒是不能用丟的方式來傳遞的。四個人的步行速度各不同,若兩人同行則
以較慢者的速度為準。BONO需花1分鐘過橋,EDGE需花2分鐘過橋,ADAM需花5分鐘過橋,LARR
Y需花10分鐘過橋,他們要如何在17分鐘內過橋呢?
第八題. 監獄裡有100個房間,每個房間內有一囚犯。一天,監獄長說,你們獄房外有一電
燈,你們在放風時可以控制這個電燈(熄或亮)。每天只能有一個人出來放風,並且防風
是隨機的。如果在有限時間內,你們中的某人能對我說:"我敢保證,現在每個人都已經至
少放過一次風了。"我就放了你們!問囚犯們要採取什麼策略才能被監獄長放掉?如果採用
了這種策略,大致多久他們可以被釋放?

答案:
第一題:97 0 1 2 0 或者 97 0 1 0 2 (提示:可用逆推法求出)
第二題:3架飛機5架次,飛法:ABC 3架同時起飛,1/8處,C給AB加滿油,C返航,1/4處,
B給A加滿油,B返航,A到達1/2處,C從機場往另一方向起飛,3/4處,C同已經空油箱的A平
分剩餘油量,同時B從機場起飛,AC到7/8處同B平分剩餘油量,剛好3架飛機同時返航。所
以是3架飛機5架次。
第三題:需要建立數學模型
(提示,嚴格證明該模型最優比較麻煩,但確實可證,大膽猜想是解題關鍵)題目可歸結
為求數列 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升
第四題:需要建立數學模型
題目可歸結為求自然數列的和S什麼時候大於等於100,解得n>13。第一個杯子可能的投擲
樓層分別為:14,27,39,50,60,69,77,84,90,95,99,100
第五題: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是唯一解。
第六題:7只(數學歸納法證明)
1)若只有1只病狗,因為病狗主人看不到有其他病狗,必然會知道自己的狗是病狗(前提
是一定存在病狗),所以他會在第一天把病狗處決。
2)設有k只病狗的話,會在第k天被處決,那麼,如果有k+1只,病狗的主人只會看到k只病
狗,而第k天沒有人處決病狗,病狗主人就會在第k+1天知道自己的狗是病狗,於是病狗在
第k+1天被處決
3)由1)2)得,若有n只病狗,必然在第n天被處決
第七題:(提示:可用圖論方法解決)
BONO&EDGE過(2分),BONO將手電帶回(1分),ADAM&LARRY過(10分),EDGE將手電帶回
(2分),BONO&EDGE過(2分) 2+1+10+2+2=17分鐘
第八題:
約定好一個人作為報告人(可以是第一個放風的人)
規則如下:
1、報告人放風的時候開燈並數開燈次數
2、其他人第一次遇到開著燈放風時,將燈關閉
3、當報告人第100次開燈的時候,去向監獄長報告,要求監獄長放人......
按照概率大約30年後(10000天)他們可以被釋放
第五組無標準答案
第六組部分題參考答案:
4.
char * strcpy(char * pstrDest,const char * pstrSource)
{
      assert((pstrDest!=NULL)&&(pstrSource!=NULL));
      char * pstr=pstrDest;
      while((*(pstrDest++)=*(pstrSource++))!=''\0'');
          return pstr;
}
5.
char * strrev(char * pstr)
{
      assert(pstr!=NULL);

      char * p=pstr;
      while(*(p++)!=''\0'');
      p--;
      char tmp;
      while(p>pstr)
      {
          tmp=*p;
          *(p--)=*(pstr);
          *(pstr++)=tmp;
      }
      return pret;
}