前端面试常见逻辑题收集及分析
Posted shyno
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试常见逻辑题收集及分析相关的知识,希望对你有一定的参考价值。
前端面试中常出现一些有趣的逻辑题,初见的时候有可能会手足无措,但实际多看几个题之后就会有一定的思考逻辑,有种打通任督二脉的感觉.以下是我个人面试经历以及网络上收集来的一些经典题目.
题目:
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,也就是所谓的奇数和偶数的区别.那么,这是一个圆,所以我们应该想到,中心对称.所以最后必定是偶数吗?不是,因为我们忘了中心这个点,所以.只要我们占了中心位置,后面绝对就是偶数.
先手放在圆心位置.然后无论对方放在那儿,你都放在和他对称的位置,只要他能放下硬币,和它对称的位置肯定能放下一枚硬币,所以先手稳赢.
以上是关于前端面试常见逻辑题收集及分析的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 最常见的 150 道前端面试题(简单题上)