前端面试常见逻辑题收集及分析

前端面试中常出现一些有趣的逻辑题,初见的时候有可能会手足无措,但实际多看几个题之后就会有一定的思考逻辑,有种打通任督二脉的感觉.以下是我个人面试经历以及网络上收集来的一些经典题目.

题目:

  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,也就是所谓的奇数和偶数的区别.那么,这是一个圆,所以我们应该想到,中心对称.所以最后必定是偶数吗?不是,因为我们忘了中心这个点,所以.只要我们占了中心位置,后面绝对就是偶数.

   先手放在圆心位置.然后无论对方放在那儿,你都放在和他对称的位置,只要他能放下硬币,和它对称的位置肯定能放下一枚硬币,所以先手稳赢.

 

转载于:https://www.cnblogs.com/Shyno/p/11060970.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php htaccess实现缓存,使用.htaccess进行浏览器图片文件缓存,_PHP教程

使用.htaccess进行浏览器图片文件缓存,对于图片类网站,每次打开页面都要重新下载图片,慢不说,还非常浪费流量。这时就需要用到缓存,强制浏览器缓存图片文件缓存文件,提问网站访问数度,减少流量消…

leetcode5. 最长回文子串(动态规划)

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 代码 class Solution {public String longestPalindrome(String s) {int ns.length(),max-…

aws v2.2.exe_如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用

aws v2.2.exeby Evrim Persembe通过埃夫里姆佩塞姆贝 如何在AWS Elastic Beanstalk上部署Rails 5.2 PostgreSQL应用 (How to deploy a Rails 5.2 PostgreSQL app on AWS Elastic Beanstalk) It’s official, using Heroku for all my Rails projects so far has spoiled me ro…

学习中遇到的c++问题,持续更新

原文请訪问我的博客&#xff1a;http://xiaoshig.sinaapp.com/ 向上取整 使用ceil函数。ceil(x)返回的是大于x的最小整数。如&#xff1a; ceil(2.5) 3 ceil(-2.5) -2 sort排序头文件#include <algorithm> 数组初始化总结 整型数组初始化&#xff1a;//仅仅能赋值0…

创建邮箱过程中的问题及解决办法

转自白手起家博客 http://bbs.chinaunix.net/forum.php?modviewthread&tid770141 说明一下&#xff1a;Q代表安装过程中遇到的问题&#xff0c;或者是日志中出现的现象。A&#xff1a;代表解决方法。 Q&#xff1a; Jan 13 11:26:29 mail authdaemond: failed to connect …

php的addslashes,PHP addslashes()用法及代码示例

addslashes()函数是PHP中的内置函数&#xff0c;它返回预定义字符前带有反斜杠的字符串。该参数中不包含任何指定的字符。预定义的字符是&#xff1a;单引号(’)双引号(“)反斜杠(\)NULL注意&#xff1a;addslashes()函数不同于addcslashes()函数接受要在其之前添加斜杠的指定字…

如何在React Native中使用Redux Saga监视网络更改

by Pritish Vaidya通过Pritish Vaidya 如何在React Native中使用Redux Saga监视网络更改 (How to monitor network changes using Redux Saga in React Native) 为什么要使用Redux Saga监视网络更改&#xff1f; (Why should I use Redux Saga to monitor Network Changes?) …

leetcode214. 最短回文串(kmp)

给定一个字符串 s&#xff0c;你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1: 输入: “aacecaaa” 输出: “aaacecaaa” 代码 class Solution {public int getShortestPalindrome(String s) {//求next数组的最后一…

跟我一起屏蔽百度搜索页面右侧的内容

苦恼百度搜索热点等冗杂信息很久了&#xff0c;然后今天下定决心解决这个问题了。 第一步&#xff1a;搜索&#xff0c;并安装插件Adblock Plus 第二步&#xff1a;使用拦截器 1.打开拦截器 2.具体使用 点击这一块 添加 转载于:https://www.cnblogs.com/smart-girl/p/11058774.…

JavaScript语法详解(三)

一、JavaScript循环语句 1.for循环、for/in 12345678910111213141516<!DOCTYPE html><html lang"en"> <head><meta charset"UTF-8"> <title>Title</title> </head><body><script> var array [1,2,…

鼠标拖拽吸附效果

JavaScript鼠标拖动自动吸附实例 学了几天的JavaScript&#xff0c;自己动手做了一个简单的鼠标拖动的实例&#xff0c;拖动过程中科自动检测与目标容器的距离&#xff0c;在一定的距离范围内可以自动将被拖动的元素加入到目标容器中&#xff0c;希望对开始学习javascript的童鞋…

php修改mysql数据库中的表格,如何修改mysql数据库表?

修改mysql数据库表的方法&#xff1a;使用“ALTER TABLE”语句&#xff0c;可以改变原有表的结构&#xff0c;例如增加字段或删减字段、修改原有字段数据类型、重新命名字段或表、修改表字符集等&#xff1b;语法“ALTER TABLE [修改选项]”。修改数据表的前提是数据库中已经存…

微软最新GDI漏洞MS08-052安全解决方案

微软最新GDI漏洞MS08-052安全解决方案 Simeon微软于九月九日凌晨爆出有史以来最大的安全漏洞MS08-052&#xff0c;通过该漏洞&#xff0c;攻击者可以将木马藏于图片中&#xff0c;网民无论是通过浏览器浏览、还是用各种看图软件打开、或者在即时聊天窗口、电子邮件、Office文档…

DEM轨迹后处理

方法一&#xff1a;直接在paraview中显示 首先在输出颗粒信息的时候保存global ID&#xff1a;然后在paraview中导入vtp数据&#xff08;不要导入pvd&#xff09;&#xff0c;并使用Temporal Particle To Pathlines这个filter&#xff08;可以直接ctrlspace调出搜索框搜索&…

Oracle的JDBC Url的几种方式

1.普通SID方式jdbc:oracle:thin:username/passwordx.x.x.1:1521:SID2.普通ServerName方式 jdbc:Oracle:thin:username/password//x.x.x.1:1522/ABCD3.RAC方式jdbc:oracle:thin:(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOSTx.x.x.1)(PORT1521))(ADDRESS(PROTOCOLTCP)(H…

leetcode945. 使数组唯一的最小增量(排序)

给定整数数组 A&#xff0c;每次 move 操作将会选择任意 A[i]&#xff0c;并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 示例 1: 输入&#xff1a;[1,2,2] 输出&#xff1a;1 解释&#xff1a;经过一次 move 操作&#xff0c;数组将变为 [1, 2, 3]。 代码 …

数据科学 python_如何使用Python为数据科学建立肌肉记忆

数据科学 pythonby Zhen Liu刘震 首先&#xff1a;数据预处理 (Up first: data preprocessing) Do you feel frustrated by breaking your data analytics flow when searching for syntax? Why do you still not remember it after looking up it for the third time?? It…

oracle 管道通信,oracle管道化表函数

转自&#xff1a;http://pengfeng.javaeye.com/blog/260360在我所做过和参与的大多数项目中,都会有用户提出的复杂的一些统计报表之内的功能要求,根据统计的复杂程度、效率及JAVA程序调用的方便性方面考虑,主要总结出以下几种方案&#xff1a; 1、SQL语句 该方案只能实现一些相…

ebtables之BROUTING和PREROUTING的redirect的区别

ebtables和iptables实用工具都使用了Netfilter框架&#xff0c;这是它们一致的一方面&#xff0c;然而对于这两者还真有一些需要联动的地方。很多人不明白ebtales的broute表的redirect和nat表PREROUTING的redirect的区别&#xff0c;其实只要记住两点即可&#xff0c;那就是对于…

LVS的四种模式的实现

LVS 是四层负载均衡&#xff0c;也就是说建立在 OSI 模型的第四层——传输层之上&#xff0c;传输层上有我们熟悉的 TCP/UDP&#xff0c;LVS 支持 TCP/UDP 的负载均衡。LVS 的转发主要通过修改 IP 地址&#xff08;NAT 模式&#xff0c;分为源地址修改 SNAT 和目标地址修改 DNA…