你們在面試的時候,不免會遇到讓人摸不着頭腦的邏輯題,這類題目讓同窗們每每連答案應該回答些什麼都摸不清楚,只能和麪試官四目相對,很是尷尬。git
其實,不少面試的考官,都是從題庫隨機挑選邏輯題來考驗同窗們,面試官有時候本身也未必徹底摸透這類題目,因此面試的時候沒必要過於緊張,就算答不出來啊也很是正常。程序員
在個人理解中,這類題目主要仍是考你們的思路,至於答案標準與否,其實不是特別重要。github
本文總結了面試中我本身面試中遇到的幾道很是常見的邏輯題,你們能夠做爲面試前的突擊複習材料。面試
此文屬於Java後端知識點複習手冊專欄內容算法
全複習手冊文章導航:經過如下兩種途徑查看後端
18年秋招今日頭條二面原題(by:Rude3Knife)設計模式
一羣人開舞會,每人頭上都戴着一頂帽子。帽子只有黑白兩種,黑的至少有一頂。每一個人都能看到其它人帽子的顏色,卻看不到本身的。主持人先讓你們看看別人頭上戴的是什麼帽子,而後關燈,若是有人認爲本身戴的是黑帽子,就打本身一個耳光。第一次關燈,沒有聲音。因而再開燈,你們再看一遍,關燈時仍然鴉雀無聲。一直到第三次關燈,纔有劈劈啪啪打耳光的聲音響起。問有多少人戴着黑帽子?安全
三我的服務器
如果兩我的,設A、B是黑帽子,第二次關燈就會有人打耳光。緣由是A看到B第一次沒打耳光,就知道B也必定看到了有帶黑帽子的人,可A除了知道B帶黑帽子外,其餘人都是白帽子,就可推出他本身是帶黑帽子的人!同理B也是這麼想的,這樣第二次熄燈會有兩個耳光的聲音。微信
若是是三我的,A,B,C。A第一次沒打耳光,由於他看到B,C都是帶黑帽子的;並且假設本身帶的是白帽子,這樣只有BC戴的是黑帽子;按照只有兩我的帶黑帽子的推論,第二次應該有人打耳光;可第二次卻沒有...因而他知道B和C必定看到了除BC以外的其餘人帶了黑帽子,因而他知道BC看到的那我的必定是他,因此第三次有三我的打了本身一個耳光
N我的是黑帽子,就會在第N天,有N我的打本身一個耳光。
18年秋招網易測試開發一面原題(by:Rude3Knife)
一個是兩種藥片,每種有兩個,一我的須要早上吃兩種藥片各一個,如今這四個藥片混在一塊兒了這我的什麼方法吃。
把全部的4顆藥丸都切開成相等的兩半,而後早上和晚上,分別吃掉每顆藥丸的一半
18年秋招網易測試開發一面原題(by:Rude3Knife)
一個5L,一個6L的瓶子,要獲得3L的水,問什麼方法
6-5=1 1L水放在5L那個瓶裏面,而後再裝6L水,往5L(裏面已經有1L)裏面倒,這樣就會剩下2L水在6L裏面,再把2L水放在5L裏面,再裝一次,不就能夠6L那裏處處3L水到5L裏面,本身就剩下3L了
一共1000瓶酒,其中一瓶有毒。若是一隻老鼠喝了有毒的酒,會在一天以後死亡,那麼若是給你一天時間,然你斷定哪瓶酒有毒,至少須要幾隻老鼠?
答案是10只。這個須要使用二進制編碼來解決,1000瓶酒至少須要10位二進制數來進行編碼。而後取十隻杯子分別表明這是個二進制數的十個位,分別將1000瓶酒倒入其編碼爲1的對應的杯子中。取十個老鼠分別喝十個杯子中的酒,一天以後,就能夠根據喝哪些杯子的老鼠死掉來肯定出有毒的那瓶酒的編碼,從而肯定哪瓶酒有毒。其根據就是隻有有毒酒的編碼對應的毒死老鼠的杯子位置。這個題目就是利用了二進制編碼的一些特性。
還有一些其餘的題目也使用這些特性,好比使用特殊的位運算,通常使用比較多的位運算就是與、或和異或。 這樣,就能夠對應到現實生活中的一些爲題,好比一個相似的問題本來咱們想須要用900多臺服務器來解決,通過這樣分析後就可使用10臺服務器來解決,大大節約了成本。
再好比,國王有10000桶酒,已知一桶酒有毒,喝了以後必定會在23-24小時內死亡(例如0點喝,會在23-次日0點這個時間段死亡)。如今國王要在48小時後舉辦一個宴會,須要用罪犯實驗,請問最少幾個罪犯。(能夠混合酒)
若是是常規利用二進制解題的話,那就須要14個犯人,2^14=16384>10000,可是這樣一來死亡時間這個條件就用不到,也不是最優解。
應該利用酒死的時間是固定的,一個罪犯像上面那樣能夠表示成25種狀態,三個罪犯就能夠表示25 x 25 x25種狀態,超過10000了,因此只須要三個罪犯。
有8個小球,其中七個的重量是相同的,有一個較輕。給你一個天平,問秤幾回能找出那個較輕的小球,若天平只能秤兩次,又該怎麼秤
第一次兩邊各放隨機三個,若是平了,則另一個是輕的,若不平,還有第二次,拿出那三個輕的,在兩邊隨機放一個,就能測出哪一個最輕了。
18年秋招騰訊測試開發一面原題(by:蠻三刀把刀)
本體圖解參考:
已知: 每一個飛機只有一個油箱,飛機之間能夠相互加油(注意是相互,沒有單獨的加油機),一箱油可供一架飛機繞地球飛半圈
問題:爲使至少一架飛機繞地球一圈回到起飛時的飛機場,至少須要出動幾架飛機?(全部飛機從同一機場起飛,並且必須安全返回機場,不容許中途降落,中間沒有飛機場)
分爲3架飛機5架次和3架飛機6架次
1. 3架飛機6架次
(上圖)ABC 3架同時起飛
(上圖)1/8處,C給AB加滿油,C返航。此時飛機的油量分別是:A: 3/4, B: 3/4, C: 3/4。此時C分別給A和B加滿油,三架飛機當前油量分別是:A: 1, B: 1, C: 1/4。C返回機場。A、B繼續向前飛行。
(上圖)1/4處,B給A加滿油,B返航,A到達1/2處,此時C已經返回機場,三家飛機此時油量分別是:A: 3/4, B: 3/4, C: 0。此時B給A加滿油,C加滿油,此時三架飛機的油量分別是:A: 1, B: 1/2, C: 1。而後B返回機場,A繼續向前飛行。
(上圖)當A飛行至半圈位置時,B已經返回機場而且加滿了油(假設加油時間爲0),此時,B和C沿逆時針方向飛行,三架飛機當前油量分別是:A: 1/2, B: 1, C: 1。A繼續向前飛行。
(上圖)當A飛行至另外半圈的1/4位置時,三架飛機剩餘油量分別是:A: 1/4, B: 3/4, C: 3/4。此時,C給B加滿油。此時三架飛機油量分別是:A: 1/4, B: 1, C: 1/2。C返回機場,B和A繼續向前飛行。
當A飛行至另外半圈的1/2位置時,C已經返回機場,A和B相遇,此時三架飛機剩餘油量分別是:A: 0, B: 3/4, C: 0。B給A加1/4的油,三架飛機剩餘油量:A: 1/4, B: 1/2, C: 1。C加滿油從機場逆時針飛出,B返回機場,A繼續向前飛行。
(上圖)當A飛行至另外半圈的3/4位置時,A和C相遇。此時三架飛機的油量分別是:A: 0, B: 1/4, C: 3/4。C給A加1/4的油,此時三架飛機的油量分別是:A: 1/4, B: 1/4, C: 1/2。C掉頭返回機場,A和B繼續向前飛行。
(上圖)三架飛機順利回到機場!
2. 3飛機5架次
(1)3 架飛機同時從機場出發,飛行八分之一週(A點),各耗油四分之一。此時某架飛機給其他兩架補滿油,本身返回基地;
(2)另外一架飛機和目標機結伴,飛至四分之一週(B點),給目標機補滿油,本身返回;
(3)目標機獨自飛行半周(C點);
(4)與從基地反向出發的一架飛機相遇,2 機將油平分,飛至最後八分之一處(D點);
(5)與從基地反向出發的另外一機相遇,各分四分之一油,返回。
75道程序員面試邏輯題和答案
全複習手冊文章導航:經過如下兩種途徑查看
複習手冊文章推薦
我目前是一名後端開發工程師。主要關注後端開發,數據安全,網絡爬蟲,物聯網,邊緣計算等方向。
微信:yangzd1102
Github:@qqxx6661
我的博客:
若是文章對你有幫助,不妨收藏起來並轉發給您的朋友們~