前端面試常見邏輯題收集及分析


前端面試中常出現一些有趣的邏輯題,初見的時候有可能會手足無措,但實際多看幾個題之后就會有一定的思考邏輯,有種打通任督二脈的感覺.以下是我個人面試經歷以及網絡上收集來的一些經典題目.

題目:

  1.現有一個裝有無限水的池塘,你手里有兩個空壺,一個容積為6升,一個為5升,請問你如何用這兩個空壺打3升水?請寫出具體步驟(騰訊)

  2.有一個烤肉架,它能同時烤兩塊肉,已知每塊肉完全烤熟一面需要5分鍾,請問用這個烤肉架烤熟三塊肉最快是多少時間?(騰訊)

  3.現有A、B兩輛汽車相隔一段距離,它們之間有一只小鳥,現在兩只輛汽車相向勻速行駛,小鳥也同一時間勻速運動,它先飛向其中一輛車,快撞上時再飛向另一輛車,以此循環,請問直到兩輛車相撞是小鳥運動了多少距離?(騰訊)

  4.已知班里有百分之八十喜歡籃球,有百分之七十喜歡排球,百分之六十喜歡足球,請問有多少學生既喜歡籃球又喜歡足球的?(騰訊)

  5.7點15分的夾角是多少?(騰訊)

以上是我面試過程中被問及到的邏輯題,所以印象比較深刻.

 6.一個商人騎一頭驢要穿越1000公里長的沙漠去賣3000根蘿卜、已知驢一次性可駝1000根蘿卜,但沒走一公里要吃一根胡蘿卜,商人最多可賣出多少根蘿卜?寫出思路?

  7.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鍾呢?

  8.一群人開舞會,每人頭上都戴着一頂帽子。帽子只有黑白兩種,黑的至少有一頂。每個人都能看到其他人帽子的顏色,卻不知自己的。主持人先讓大家看看別人頭上戴的什么帽子,然后關燈,如果有人認為自己戴的是黑帽子,就打自己一個耳光。第一次關燈,沒有聲音。於是再開燈,大家再看一遍,關燈時仍然鴉雀無聲。一直到第三次關燈,才有劈劈啪啪打耳光的聲音響起。問有多少人戴着黑帽子?(阿里)

  9.你讓某些人為你工作了七天, 你要用一根金條作為報酬.這根金條要被分成七塊.你必須在每天的活干完后交給他們一塊.如果你只能將這根金條切割兩次,你怎樣給這些工人分?(阿里)

  10.A、B兩人分別在兩座島上。B生病了,A有B所需要的葯。C有一艘小船和一個可以上鎖的箱子。C願意在A和B之間運東西,但東西只能放在箱子里。只要箱子沒被上鎖,C都會偷走箱子里的東西,不管箱子里有什么。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全遞交給B?

  11.有一個軟件公司,1/2的人是系統分析員,2/5的人是軟件工程師,有1/4的人兩者都是,問有多少人兩者都不是?

  12.有25匹🐴,速度都不同,但每匹🐴的速度都是定值。現在只有5條賽道,無法計時,即每賽一場最多只能知道5匹🐴的相對快慢。問最少賽幾場可以找出25匹🐴中速度最快的前3名?(百度2008年面試題)

  13.游戲在一個圓桌上進行。每個游戲者都有足夠多的硬幣。他們需要在桌子上輪流放置硬幣,每次必需且只能放置一枚硬幣,要求硬幣完全置於桌面內(不能有一部分懸在桌子外面),並且不能與原來放過的硬幣重疊。誰沒有地方放置新的硬幣,誰就輸了。游戲的先行者還是后行者有必勝策略?這種策略是什么?

答案:

 1.這類題目是一個數學題,現有兩個數字5和6,需要得到3.數字的個數和大小都限定死了,所以我們只能用的加法和減法.(6-(5-(6-(5-(6-5)))))=3

  (1)6-5=1:裝滿6升的壺,然后往5升里面倒,等5升的壺滿的時候,六升的壺里面剩了1升水.

  (2)5-1=4,6-4=2:把5升的壺里的水倒光,然后把六升壺里的1升水倒進5升壺里,接下來把6升壺裝滿水,接着用6升壺里的水裝滿5升壺,5升的壺差(5-1=4)升水滿,而裝滿5升壺時,6升壺還剩(6-4=2)升水.

  (3)5-2=3,6-3=3:把5升的壺里的水倒光,然后把六升壺里的2升水倒進5升壺里,接下來把6升壺裝滿水,接着用6升壺里的水裝滿5升壺,5升的壺差(5-2=3)升水滿,而裝滿5升壺時,6升壺還剩(6-3=3)升水.6升壺里面就是我們要的3升水.

這類題目就是用已知的兩個數字進行減法操作得到其他數字,之后就是重復的步驟了,注意第(2)步和第(3)的步驟一摸一樣,只不過數字不一樣.數字改變之后也許步驟會增加,或者再增加一個壺,但是核心方法是不變的.

2.這種題目講究一個資源的充分利用,我們先假設先放兩塊肉,同時烤熟一面,然后翻面,然后烤熟另一面,那么這兩塊肉同時烤熟,剩下一塊肉放上去烤,共計20分鍾,可是!這個烤肉架明明能烤兩塊肉,現在卻只烤一塊肉.資源沒被充分利用,所以肯定不是最快的方式.

 

  知道假設的思路的弊端的時候,那么就知道這道題的關鍵是保證任何時候烤肉架上都有兩塊肉就行.

 (1)先放兩塊肉A、B,同時烤一面,直到那一面烤熟.A、B各有一面烤熟了5分鍾.

 (2)其中一塊肉A翻面繼續烤,另一塊肉B拿走,放上第三塊肉C,直到這一面烤熟.此時.A完全熟了,B一面熟,C一面熟,5分鍾.

 (3)剩下的就是把B、C沒熟的放在烤肉架上烤了,直到完全熟.5分鍾. 共計15分鍾.

 假如總的肉片數量增加或者烤肉架一次能烤的數目變化了,其核心還是不變的.當然,如何不可能完全充分利用那情況就沒什么討論的余地了.畢竟烤肉沒有進度條.只能一面一面烤.

 

3.這種題乍一看啥有用的數據都沒有,看着很復雜.但是,這不就是高中數學題嗎?特點是啥,沒數據就自己假設.最終得到的結果不是百分比就是表達式.

  (1)假設A、B之間的距離為m,A的速度為V1,B的速度為V2,小鳥的速度為a(為啥不是V0?因為a比較可愛);

  (2)因為大家都是勻速,而且運動時間都是一樣的,所以"直至相撞"的時間算出來就是了,t=m/(V1+V2);

  (3)所以小鳥運動的路程=速度*時間=a*m/(V1+V2)

 可喜可賀-----------------------------------個鬼啊!這道題從高中的數學題角度來說是無解的,因為你看最終的答案中的所有數值都是你假設的而不是題目給的.我也可以假設小鳥的運動路程為a,所以答案就是a.可喜可賀.

  這種題只要陳述一個思路就好了,沒必要假設啊,列公式什么的.記住,要素較多,題目一個沒給,多半只要思路.

 

4.(1)喜歡籃球的80%,所有不喜歡籃球的20%;喜歡排球的70%,所以不喜歡排球的30%;喜歡足球的60%,所以不喜歡排球的40%

   (2)問題是1個人可能都喜歡也可能都不喜歡,所以只能假設了.假設喜歡籃球的都喜歡足球,那么有80%是喜歡籃球和足球的?(鬼哦!喜歡足球的總共就60%),所以應該反過來,假設喜歡足球的都喜歡籃球,那有60%同時喜歡足球和籃球.

   (3)上述情況應該是最多的,畢竟用了"都喜歡"這個詞了,那假設喜歡都不喜歡,應該就是最少的了吧?(注意,不喜歡籃球的只有20%,所以,下限定死了.)喜歡足球的里面最多只能有20%不喜歡籃球,所以剩下的40%應該是既喜歡籃球又喜歡足球.

   (4)所以班上有40%-60%的學生既喜歡籃球又喜歡足球.

范圍題注意上下限就ok了.

 

5.沒啥好說的,算就完事了.

 (1)七點:時針在7;15分:分針在3,中間相差4個數字.兩個數字間為30度角,所以是120度.好像沒毛病.

 (2)七點十五分:注意七點的時候,時針確實在數字7處,但是七點十五分的時候不在了.分針走了1/4圈,時針也走了1/4個間隔(30*1/4=7.5度).所以為120+7.5=127.5度.

 

  6. 一眼看去好像不光一根蘿卜都賣不出,還得欠一屁股債.3000根蘿卜,來回三趟6000公里,吃掉6000根?但是,結合之前烤肉的核心思想,我們並沒有充分利用驢這個資源.

  (1)怎么充分利用驢這個資源,即每次朝終點走的時候都讓驢背1000根,每次?對.我們換個理想思路,假如每走一公里就朝驢身上加一根蘿卜,走到的時候是不是就是1000根了?但是我們不能做到每公里給它加滿,不過我們可以分成三次.為啥是三次?因為3000/1000=3.

  (2)所以我們把路程分為三段,中間有兩個加油(蘿卜)站.起點------A站-------B站-------終點.起點到A點,不用說,出發的時候驢身上是1000根.但是要求A點到之后直接走嗎?那還有必要分嗎?肯定要加油(蘿卜)啊!蘿卜那里來?驢搬過來的啊!所以我們又得明確一點,從原點到A站我   們要把所有的蘿卜都搬過去.同理,從B點出發的時候,A點應該也沒有蘿卜了.

  (3)為了以上的要求,我們明確了從B點出發的時候驢身上也應該是1000根,那剩下的去哪兒了?吃掉了.所以我們得出結論,從起點到A點,運過去2000蘿卜吃了1000根,到B點又吃了1000根.

  (3)計算:a.驢為了把3000根運到A點,至少需要5趟,而這5趟吃了1000根,也就是總共運了1000公里,所以,A在起點1000/5=200公里處.好了,現在A處有2000根.出發去B.

              b.同理,驢運2000根去B最少3次,所以B在A處333.3公里處.所以呢.最后一次A經過B的時候補充剩下的蘿卜,相當於最后出B出發時帶上了所有的1000根,但是要走多少距離呢?(1000-200-333.3)公里,所以最后是(1000-(1000-200-333.3))≈533根(為啥不是534?人家驢這么辛苦,半根蘿卜都不賞?)

 

  7. 這個跟水壺那個一個道理,不同的是它隱藏了一個條件:繩子兩頭一起燒只要30分鍾.所以我們現在有兩個數值,60分鍾和30分鍾.也就是所謂了除以2這個操作

 (1)拿三根繩子,一根A兩頭燒,兩個根B、C一頭燒.同時點,然后A燒完后熄滅B,此時,燒完了半小時,而B還可以燒半小時(30分鍾),但是暫時不少,但是C還在燒.

 (2)等C燒完的時候(一個小時),將B從兩頭點燃,可燒15分鍾.共計一個小時十五分鍾.(1+1/2/2)小時

 

  8. (1)如果只有一人戴着,那第一次關燈的時候就有人打耳光了(卧槽!別人都是白的,那我肯定黑的了.我怎么能黑了?啪!)所以不止一個(有人戴黑帽子哎!那我是不是呢?)

  (2)如果只有兩個.第二次關燈的時候就該有人打了.(卧槽!上一會那個唯一戴黑帽的沒打,那我肯定是黑帽了.啪!)沒打,所以不止兩個.

  (3)如果有三個,第三次關燈的時候就該有人打了.(卧槽!上次關燈沒人打!看來黑帽不止我眼前看到的兩個,那我就應該是的了.啪!)他眼前的那兩個黑帽心理活動.(我也只看到兩個黑帽.看來我也是了.啪啪!)所以第三次關燈會,啪啪啪!(我是白色)

  9. 這道題也必須有前置條件,就是你的每一刀你都知道是多少.在這個前提下,其實又和水壺那個題目一樣了.所以你需要兩刀切出三個比較靈活的數組組合,而且總和為七.因為你要分七天給.14可不可以?可以!但是,你已經不能再切了,所以乘以這個2有啥意思呢?

 (1)根據水壺那道題,我們要盡可能得利用減法把7分開,所以我們要有3個數字,七種方式得到1.很難.但是,如果可以找錢呢?(沒說不可以找啊).出現5、6、7明顯是不合理的.因為三個數字相加等於7,所以其他兩個數字必須大於2,不能等於2,等於2就是1和1了,數字組合不靈活.

 (2)所以我們的數字組合只有一種1,2,4.不能有3,理由跟5一樣,不靈活.所以我們把一整塊金條分成了1/7和2/7以及4/7,之后以1,2,4來代替.

 (3)第一天:給1,工人總共有1.    第二天:給2,拿回1.工人總共有2.  第三天:給1,工人總共有3.   第四天:給4拿回2和1,工人總共有4.  第五天: 給1.工人有5.  第六天: 給2拿1,工人有6. 第七天:最后的1給他,工人有七.

 

  10.A、B兩人分別在兩座島上。B生病了,A有B所需要的葯。C有一艘小船和一個可以上鎖的箱子。C願意在A和B之間運東西,但東西只能放在箱子里。只要箱子沒被上鎖,C都會偷走箱子里的東西,不管箱子里有什么。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全遞交給B?

  梳理一下:A有葯,有a鎖和a鑰匙.

                B有病(確實有病嘛),有b鎖和b鑰匙.

                C有船,有箱子,有偷東西的習慣.物在箱中必拿.

其他:東西上船必須在箱子里(也就是說可以不在船上),也沒有說人葯(妖?)不分.所以,這道題必須是運兩次或以上.不能把鑰匙鎖在箱子里這個常識總不用說了吧?每次船上都是葯在箱中,箱被鎖上(??)

  (1)運葯和鎖A.船家,幫我把葯運給B,別看了,東西在箱子里.但是我鎖了.(A鎖鎖着葯)

  (2)運葯和鎖鎖:船家,把東西送回去吧!葯送過來,還給我鎖上了,告訴A我受夠他了,我也給它鎖上了,他也別想拿到里面的東西了.(A鎖和B鎖同時鎖着葯)

  (3)運葯和鎖B:船家,里面的東西我也拿不出來了,你給送回去,別看了,我的鎖雖然拿回來了,他還鎖着呢.(A拿掉了A鎖,但是B鎖鎖着葯)

  (4)B用自己的鑰匙打開鎖,喝了葯,沖着船家邪魅一笑.C:"你們玩戰術的心都臟!"

 

  11.有一個軟件公司,1/2的人是系統分析員,2/5的人是軟件工程師,有1/4的人兩者都是,問有多少人兩者都不是?

    同第四題

 

  12.有25匹🐴,速度都不同,但每匹🐴的速度都是定值。現在只有5條賽道,無法計時,即每賽一場最多只能知道5匹🐴的相對快慢。問最少賽幾場可以找出25匹🐴中速度最快的前3名?(百度2008年面試題)

    (1)25匹馬分成5個賽道賽5場,得每組第一.    5場.

    (2)每組第一放在一起賽一場,取得第一就是最快的,記錄下來此時的第2和3名.   1場.

    (3)問題是第2名和第3名到底是不是這兩匹馬,干擾項有第一名所在組的第2和3名,以及第2名所在組的第3名.其他不可能是前三.所以不明確名次的總共也就5匹馬了.放在一起跑一波就知道第2和第3名是誰了.   1場.

    (4)所以總共是 5+1+1=7場.

 

  13.游戲在一個圓桌上進行。每個游戲者都有足夠多的硬幣。他們需要在桌子上輪流放置硬幣,每次必需且只能放置一枚硬幣,要求硬幣完全置於桌面內(不能有一部分懸在桌子外面),並且不能與原來放過的硬幣重疊。誰沒有地方放置新的硬幣,誰就輸了。游戲的先行者還是后行者有必勝策略?這種策略是什么?

     區別就是1和2,也就是所謂的奇數和偶數的區別.那么,這是一個圓,所以我們應該想到,中心對稱.所以最后必定是偶數嗎?不是,因為我們忘了中心這個點,所以.只要我們占了中心位置,后面絕對就是偶數.

   先手放在圓心位置.然后無論對方放在那兒,你都放在和他對稱的位置,只要他能放下硬幣,和它對稱的位置肯定能放下一枚硬幣,所以先手穩贏.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM