苹果面试8大难题及答案

摘要:苹果这样的公司通常会在面试过程中向求职者抛出一些逻辑的问题来考研面试者,所以,如果你对进入苹果感兴趣,或者向往类似的公司,又或者只是对逻辑问题感兴趣,这些面试难题值得你仔细研究。

导读:苹果这样的公司通常会在面试过程中向求职者抛出一些逻辑的问题来考研面试者,所以,如果你对进入苹果感兴趣,或者向往类似的公司,又或者只是对逻辑问题感兴趣,这些面试难题值得你仔细研究。

问题一:

“你面前有两扇门,其中一扇门内藏着宝藏,但如果你不小心闯入另一扇门,只能痛苦地慢慢死掉……”

这一听就是那种经典的最令人头痛的一类问题,但其实与其他问题相比,这只是个热身。在这两扇门后面,有两个人,这两个人都知道哪扇门后有宝藏,哪扇门擅闯者死,而这两个人呢,一个人只说真话,一个人只说假话。

谁说真话谁说假话?那就要看你有没有智慧自己找出来了,游戏规则是,你只能问这两个人每人一个问题。

那么,你问什么问题?问哪个人?根据他们的回答,你又该怎么做?

求职者的最佳答案:

随便问其中一个人:“如果我问另一个人,他会跟我说哪扇门后是宝藏?

如果你问的恰好是讲真话的那个人,那他指给你的答案就是那扇通向死亡的门,因为他会诚实地告诉你那个说谎的人会怎么说。

如果你问的是那个只说谎话的,你得到的也是错误的答案,因为另一个人是讲真话的,说谎话的人会告诉你与讲真话的人相反的答案。

所以你只要随便问一个人上述问题,然后选择与他们说的相反的门就行了。

问题二:

“你前面站了5个人,他们中间只有一个人讲真话……” 

这个问题比上个问题难就难在,你只知道他们五个中有一个只讲真话,但其余四个,他们有时候讲真话,有时候讲假话,只有一点可以确定,这四个人将真话和假话有个规律:如果这次讲了真话,下次就会讲假话,如果这次讲假话,下次就讲真话。你的任务是,把五个人中那个只讲真话的人找出来。

你可以问两个问题,两个问题可以向同一个人发问,也可以分别问两个人。

你该问什么问题?

小提示:你可以这样安排两个问题承担的任务:首先你可以先问一个问题,不管得到的答案是什么,你都能从中知道下一个问题你将得到的答案是真是假。

求职者的最佳答案:

随便找一个人,首先问:“你是那个只讲真话的吗?”如果答案是肯定的,你再问这个人:“谁是只讲真话的?”;如果第一个问题你得到的答案是否定的,你就再问对方“谁不是只讲真话的?”

正如这个问题给出的提示,第一个问题的价值在于,如果你得到的答案是“我是”,那么你问的人要么是那个只讲真话的,要么是那个这一轮讲假话的“半真话半假话”者,不管是谁,他下一轮一定会说真话。所以你可以继续问这个人:“谁是只讲真话的?”对方的答案就是正确答案。

如果对第一个问题你得到的答案是“我不是”,那么回答者不可能是只讲真话的那个人,只能是一个此轮讲真话的“半真话半假话”者。此人下一轮将会说假话,所以你应该问他:“谁不是只讲真话的?”同样他告诉你的,只能是那个只讲真话的。

问题三:

“外星人打算将地球用来种蘑菇,并且已经抓了十个人类……” 

外星人用这十个人代表地球60亿人口,将通过外星人的方式来测试这十个人,决定地球是不是有资格加入跨星际委员会,如果没有,就把地球变成一个蘑菇农场。

明天,这十个人将被关在一间漆黑的屋子里前后排成一队,外星人将给每个人戴一顶帽子,帽子为紫色或者绿色,然后外星人会将灯打开,这十个人每个人都无法看见自己头上的帽子是什么颜色,但可以看见排在你前面的每个人头上帽子的颜色。

帽子的颜色是随机的,可能全是紫的,也可能全是绿的,或者是任意的组合。

外星人会从后往前问每一个人:“你头上的帽子是什么颜色?”如果这个人答对了,这个人就安然无事,他所代表的地球上6亿人口也将获救。否则,这个人将被爆头,外星人将把他所代表的6亿人口变成蘑菇的肥料。每个人的答案屋子里所有人都可以听到。

现在,人类的命运在你手上,你可以设计一个方案,使这十个人提前制定一个计划,这个计划必须拯救尽可能多的人。

提示:有个方案可以让你拯救其中至少九个人。

求职者的最佳答案:

第十个人计算排在前面的所有人的绿帽子是奇数还是偶数并向前面的人发出一个信号,这样排在前面人就可以再通过排在更前面的所有人的绿帽子的奇偶数是否变化来判断自己帽子的颜色,因为如果绿帽子奇偶发生变化,那自己就是那个导致变化的“绿帽子”,如果没变化,自己就是“紫帽子”。

因为所有的人除了回答外星人的问题不能说话,所以第十个人的“信号”只能包含在自己的答案里,比如如果排在前面的九个人有奇数顶绿帽子,这个人类就告诉外星人自己的帽子是“绿色”,如果是偶数,就猜自己的帽子是“紫色”。这样等于给他前面的人一个暗号,排在他前面的这个人,可以通过计算自己前面的所有人的绿帽子的奇偶变化来判断自己的帽子是绿还是紫。

排在最后的那个人为了大众利益没有选择,根据前面的人的帽子情况告诉外星人自己是“绿帽子”还是“紫帽子”,他的答案有1/2的几率正确,但他前面的人一定都能答对。

还没懂?比如第十个人看到前面有奇数个绿帽子,他就告诉外星人自己的是绿色,这是他前面的人就知道他的意思是前面九个人中有奇数个绿帽子,这是第九个人再数前面八个人的,如果前面八个人中也有奇数个,那自己就是紫色帽子。第九个人告诉外星人自己是紫色帽子,第八个人就知道绿帽子没有减少还是奇数个,再数数前面七个人绿帽子数的奇偶,就可以判断自己帽子的颜色;反之,如果第九个人告诉外星人自己是绿色帽子,那第八个人就应该知道绿色帽子减少了一个由奇数变成了偶数,再看看前面所有的绿帽子情况作出判断。这样一个接一个,只要每个人都认真听后面的人的答案并在心里计算所剩绿帽子的奇偶变化,前面九个人都能获救。

当然,你也可以计算紫色帽子的奇偶。

问题四:

“100个完美的逻辑学家坐在一个房间里……” 

这是一个电视真人秀节目,节目里100个拥有完美无瑕逻辑思维能力的人围成一圈坐在一个房间里。在进入房间前,这100个人被告知,100个人中至少有一个人的额头是蓝色的。你可以看见别人额头的颜色,但无法看到自己的,你需要对自己额头是不是蓝色进行猜测,在房间的灯被关掉时,如果你推测出你的额头是蓝色的,你需要站起来离开房间。

然后房间的灯被再次打开,那些认为自己额头是蓝色的人已经不在屋内。接下来灯会再次被关掉,剩下的人中推测自己额头是蓝色的离开房间,如此重复。

问题来了,假设这100个人的额头都是蓝色的,将会发生什么情况?注意,这100个人都有完美无瑕的逻辑推理能力,他们会根据其他人的额头颜色对自己进行合理的推理和猜测。

提示:想想看,如果100个人不全是蓝色额头,又会发生什么情况?

求职者的最佳答案:

将会出现的情况是:灯关了又开,开了又关,重复到第一百次时,所有人都同时离开。

这是为什么呢?想想看,每个人都看见其他99个人额头是蓝色的,灯关掉后再打开,发现这99个蓝色额头的同伴都没有离开,然后灯再次关掉后打开,如此重复100遍后,所有人同时离开了房间。

这么理解吧,假设只有一个人的额头是蓝色的,由于这100个人事先被告知至少有一个人额头是蓝色,所以这个人如果看到其他99个人额头都不是蓝色,立马就知道自己是蓝色,所以灯一关掉,这个人就会离开房间。

如果有两个人额头是蓝色呢?

其中一个蓝色额头的人会想:我的额头可能是蓝色也可能不是蓝色,现在其他99个人中有一个蓝色额头的人,如果我不是蓝色,那么就只有这一个人是,那么他看到我们都不是蓝色额头就能推断出他是,那么灯一关他就会离开,我先等一下,灯再打开如果他已经走了,那就证明我的额头不是蓝色的。

反之,如果我的额头是蓝色的,那个蓝色额头的人的想法会和我刚才的想法一样先等一等,第一次关灯他不会离开,这样如果灯开了那个蓝色额头的人还在,就证明我的额头也是蓝色的。这样第二次关灯我们俩会一起离开。

以此类推,如果有三个人额头是蓝色,你看到另外两个人额头是蓝色,应该推算出如果自己的额头不是蓝色的话,那么灯第二次关的时候他们俩会同时离开,如果他们俩没有同时离开,那就证明我的额头是蓝色的,我应该在第三次关灯的时候离开。结果是,三个蓝色额头的人在第三次关灯的时候同时离开。

把上述逻辑重复一百遍,你就得到了最上面的正确答案。

问题五:

“你有一个横6竖6的方格……”

你现在在左上第一个格子里,你的任务是移动到最右下脚的格子里,你每次只能向右或者向下移动,不能斜向移动,也不能后退。

你能找出几种方法移动到最右下脚的格子?

求职者的最佳答案: 

252种。

从对称的角度思考这个问题。

随便挑选一个格子,假设你从出发点有n种方法从到达与所选格子上边相邻的格子,m种方法到达与它左边相邻的格子。

想想看,从出发点到达一个格子的方法与到达它左边和上边的格子的方法有什么关系?说对了,由于你只能向右和向下移动,到达一个格子,不是从它左边来,就是从它上边来。所以你从出发点到达一个格子的方法等于到达它上边格子的方法好到达它左边格子的方法的和相同,也就是n+m.

这样,参照上图,你就可以算出从出发点到达每一个格子的方法了。

问题六:

“逻辑学家们围成一圈坐着,他们的额头上面画有数字……”

又来一个逻辑学家围成一圈的问题,这次是这样的,三个拥有完美逻辑推理能力的人围成一圈坐在一个房间里,每个人的额头上都画着一个大于0的数字,三个人的数字各不相同,每个人都看得见其他两个人的数字,看不见自己的。

这三个数字的情况是,其中一个数字是其他两个数字的和,已知的情况还有,其中一个逻辑学家的数字是20,一个是30。

游戏组织者从这三个逻辑学家后面走过,并问三个人各自额头上的数字是什么。但第一轮每个逻辑学家都回答他们无法推测自己的数字是什么。游戏组织者只好进行第二轮的发问,这是为什么?你能据此猜出三个逻辑学家的数字吗?

求职者的最佳答案:

结果由第三个逻辑学家的答案而定。他们三个的数字分别是20,30和50。

假设第二个和第三个逻辑学家额头上的数字是20和30,这时候如果第一个逻辑学家的数字是10,那么第二个逻辑学家看到其他两个人一个是10,一个是30,会想:“我要么是20,要么是40.”

第三个逻辑学家看到其他两个人一个是10,一个是20,会想:“我要么是30,要么是10,但我不会是10,因为每个数字都不一样,所以我应该是30.”

这样第三个逻辑学家就会猜出自己的数字是30了,但他没有,第一轮谁也没有准确推测出自己的数字,这说明我们的前提不正确,第一个逻辑学家的数字不是10,那么他只能是50。

问题七:

“你面前有一百个灯泡,排成一排……”

一百个灯泡排成一排,第一轮你把他们全都打开亮着,然后第二轮,你每隔一个灯泡关掉一个,这样所有排在偶数的灯泡都被关掉了。

然后第三轮,你每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开(也就是说将所有排在3的倍数的灯泡的开关状态改变)。

以此类推,你将所有排在4的倍数的灯泡的开关状态改变,然后将排在5的倍数的灯泡开关状态改变……

第100轮的时候,还有几盏灯泡亮着?

提示:如果你是第n轮(n大于1小于100),排在n的倍数位置的灯泡的开关状态就发生转变。

反过来,比如第8个灯泡,当你在8的因子轮(即第1,2,4和8轮)的时候,它就会改变开关状态。所以对于第m个灯泡,如果m有奇数个因子,你的开关状态就发生奇数次变化。

求职者的最佳答案:

10盏灯泡亮着,这10盏灯泡排位数都是平方数。

根据提示已经可以看出,这个问题的实质就是找出有多少个灯泡的排位数拥有奇数个因子。每拥有一个因子,到这个因子数的那一轮时,这个灯泡就会被转换开关状态。

比如第1轮,因为所有100个数字都有因数1,所以全部被打开;第2轮,只有那些拥有2这个因子、能被2整除的数字的灯泡转换状态被关掉;第3轮,只有那些拥有3这个因子、能被3整除的数字的灯泡被转换状态。以此类推,如果灯泡排位数拥有奇数个因子,意味着它被打开和关上奇数次,那它就最终还是被打开的状态,如果灯泡排位数拥有偶数个因子,那它最终就是被关上的状态。

比如第1个灯泡有奇数个因子,第2个有偶数个(1,2),第3个有偶数个(1,3)第4个有奇数个(1,2,4),所以 第4个灯泡最后还是亮着的。

最终计算得出,所有排位数为平方数的灯泡最终还是亮着的,因为这些数都拥有奇数个因子,1,4,9,16……

在100以内,共有10个平方数,分别是1,4,9,16,25,36,49,64,81,100。这10个排位数的灯泡,最终都还是亮着。

问题八:

“你有一个立方体,立方体的边长是3……”

这个问题比前面那个从左上格子走到右下格子的问题难,因为那毕竟是个平面问题。如图所示,这次的任务是从立方体的背面左上的小立方体走到完全相对的正面右下小立方体。

你可以往上移,也可以往下移,还可以往前移。

问题还是,你共有几种走法?

求职者的最佳答案:

90种,思路是将这个立方体分成“三层”。

上面平面图的那道题的思路就是个最好的提示。你可以将这个立方体分成“三层”,粉红色代表最上面那层,紫色代表中间那层,橘红色代表下面那层。

现在,我们把问题变成了:从左边、右边和上边到达目标小立方体的走法共有多少(如图所示,即到达紫色中间层最右下脚方块以及橘红色最右下脚左边以及上边相邻方块的方法)?假设从起点小立方体到达终点小立方体左边相邻小立方体共有m种方法,到达右边相邻小立方体共有n种方法,到达上边相邻小立方体有r种方法,那我们需要求出来的,就是n+m+r.

按照前面那道平面题的思路和方法,你就可以一点一点计算出来我们的正确答案。


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

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

相关文章

idea自动导入jar包的快捷键

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 见:http://blog.csdn.net/u014771464/article/details/52330254 altenter(光标紧跟在类的后面)

ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为:传送门 其中包含:三维造型设计文件(所有零件装配效果)(tips:基于Solidwork…

【2022】JVM常见面试真题详解

文章目录5. JVM5.1 JVM包含哪几部分?5.2 JVM是如何运行的?5.3 Java程序是怎么运行的?5.4 本地方法栈有什么用?5.5 没有程序计数器会怎么样?5.6 说一说Java的内存分布情况5.7 类存放在哪里?5.8 局部变量存放…

Linux 基本操作--文件查看 (day3)

一、查看文件-----cat (详情参考:http://blog.sina.com.cn/s/blog_52f6ead0010127xm.html) 语法结构: cat 查看方式 文件 cat -A : show all 显示所有内容,相当于-vET [rootlocalhost tmp]# cat -A /etc/profile #注释:查看/erx/目录下profile文件的内容 cat -b  :对非空…

如何在面试时写出高质量的代码

摘要:有些程序员由于平时没有养成良好的编程习惯,在面试时写出的代码质量不高,最终遗憾地与心仪的公司和职位失之交臂。如何在面试时能写出高质量的代码,是很多程序员关心的问题。 程序员在职业生涯中难免要接受编程面试。有些程序…

IntelliJ IDEA添加jar包

见:http://blog.csdn.net/a153375250/article/details/50851049 以JDBC-MySQL驱动包为例 1、在IntelliJ IDEA中打开要添加jar包的Project 2、File – Project Structure如下图 3、选择Moudules – 再选择Dependencies如下图 4、选中Moudule source – 然后点击2处号…

Python3 与 C# 并发编程之~ 进程篇

上次说了很多Linux下进程相关知识,这边不再复述,下面来说说Python的并发编程,如有错误欢迎提出~ 如果遇到听不懂的可以看上一次的文章:https://www.cnblogs.com/dotnetcrazy/p/9363810.html 官方文档:https…

11月12号 用户登录输入密码错误达到指定次数后,锁定账户 004

用户表里添加两个属性 连续密码输错次数private Integer loginFailCount;/** 登录失败禁用时间 */ private Date missDate; / 如果登录错误次数大于5次 规定时间内禁止登录if(dbUser.getLoginFailCount() ! null && dbUser.getLoginFailCount() > 3){if(DateUtils.…

Goobuntu:谷歌的内部桌面系统

摘要:大多数Linux用户都知道Google用Linux作为它们的桌面和服务器端操作系统,有的人可能还知道Google选择的是定制的Ubuntu——Goobuntu,但在此之前几乎没有Google外部人员了解他们究竟是如何使用Ubuntu的,8月29日,Tho…

Springboot 之 Hibernate自动建表(Mysql)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 引入Maven依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-…

Spring全家桶面试真题

文章目录1. Spring Boot1.1 说说你对Spring Boot的理解1.2 Spring Boot Starter有什么用&#xff1f;1.3 介绍Spring Boot的启动流程1.4 Spring Boot项目是如何导入包的&#xff1f;1.5 请描述Spring Boot自动装配的过程1.6 说说你对Spring Boot注解的了解2. Spring2.1 请你说说…

WSDL测试webservice接口记录

收到一个事情&#xff0c;需要对接第三方API&#xff0c;对方给了个service&#xff0c;看了一下&#xff0c;原来是webservices的。 上一次测试webervice的接口&#xff0c;还是至少八九年前的时候了&#xff0c;这种相对比较老旧的也好久不在使用。 于是&#xff0c;简单搞了…

idea窗口下方滚动条不明显设置

在使用idea时&#xff0c;下方的滚动条老是显示不明显&#xff0c;每次点击拖拽都很费劲&#xff0c;在网上找了很多相关设置&#xff0c;最后确定了一个最好的办法解决问题&#xff1a; Shift &#xff08;上档&#xff09; 鼠标滚动&#xff0c;这样就可以横向翻滚了&#…

把握本质规律——《数学之美》作者吴军

无论是互联网&#xff0c;还是手机、电视&#xff0c;现代通信都遵循信息论的规律&#xff0c;整个信息论的基础都是数学。搜索引擎、语音识别、机器翻译也都是我们生活中离不开的技术&#xff0c;数学也是解决这些问题的最好工具。在《浪潮之巅》出版后&#xff0c;吴军将蕴含…

Hibernate4 注解方法说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.类级别注解 Entity 映射实体类 Table 映射数句库表 Entity(name"tableName") - 必须&#xff0c;注解将一个类声明…

消息队列常见面试题

文章目录2. 消息队列2.1 MQ有什么用&#xff1f;2.2 说一说生产者与消费者模式2.3 消息队列如何保证顺序消费&#xff1f;2.4 消息队列如何保证消息不丢&#xff1f;2.5 消息队列如何保证不重复消费&#xff1f;2.6 MQ处理消息失败了怎么办&#xff1f;2.7 请介绍消息队列推和拉…

Mybatis 详解--- 一级缓存、二级缓存

2019独角兽企业重金招聘Python工程师标准>>> Mybatis 为我们提供了一级缓存和二级缓存&#xff0c;可以通过下图来理解&#xff1a; ①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象&#xff0c;在对象中有一个数据结构&#xff08;Hash…

我的nabcd

我们组要做的软件是一款MP3播放软件&#xff0c;名字叫TDG音乐 N&#xff08;need需求&#xff09;&#xff0c;由于现在版权越来越被重视&#xff0c;许多播放软件里面的大部分歌曲都是收费的&#xff0c;不想花钱又想听可怎么办呢&#xff0c;只能在网上找免费资源&#xff0…

【C/C++和指针】深度解析---指针与数组 【精华】

一&#xff0c;引例子 二维数组可以使用指向数组的指针代替&#xff0c;而指针数组才可以用指向指针的指针代替。 [html] view plaincopy#include<iostream> using namespace std; void main() { char *a[]{"Hello","the","World&q…

Redis常见面试题详解

文章目录1. Redis1.1 Redis可以用来做什么&#xff1f;1.2 Redis和传统的关系型数据库有什么不同&#xff1f;1.3 Redis有哪些数据类型&#xff1f;1.4 Redis是单线程的&#xff0c;为什么还能这么快&#xff1f;1.5 Redis在持久化时fork出一个子进程&#xff0c;这时已经有两个…