【被面试官吊打系列】啥,你没说面试要考智力题呀 (上) ?

2023-11-10 08:45

本文主要是介绍【被面试官吊打系列】啥,你没说面试要考智力题呀 (上) ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • 1. 二进制问题
    • 分金条问题
    • 毒药问题
  • 2. 先手必胜问题
    • 轮流拿石子
    • 抢30的必胜策略
    • Nim游戏
  • 3. 水桶问题
    • 5L和6L的水桶怎么量出3L的水?
    • 3L和5L的水桶怎么量出4L的水?
    • 一个装了10L水的桶,一个7L的空桶还有一个3L的空桶
    • 舀酒问题
  • 4. 计时问题
    • 漏斗计时
    • 烧绳子
    • 蜡烛燃烧
  • 5. 赛马问题
    • 25匹马5条跑道找最快的3匹马
    • 64匹马8条跑道找最快的4匹马
  • 6. 思维发散题:为什么井盖是圆的?

随着现在越来越卷,我们面试的时候,无论是技术岗,还是非技术岗,往往都会遇到一种特殊的题型:智力题。

有一说一,这种题目,有点恶心,有点类似于脑筋急转弯,面试官主要是想考察候选人的思维灵活性。

所以我们不但要刷leetcode,智力题最好也要有个印象,不然一问三不知就怪尴尬的,OK,一起走着吧老铁~
在这里插入图片描述

1. 二进制问题

分金条问题

问:工人给你打工,工作七天可以得到一根金条,这根金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?

解答:切两刀,分成1/7,2/7,4/7三段

第一天给1/7;

第二天给2/7,并换回之前的1/7;

第三天给1/7;

第四天给4/7,并换回之前给的1/7和2/7;

第五天给1/7;

第六题给2/7,并换回之前给的1/7;

第七天给1/7.

毒药问题

问:有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?

解答:首先一共有1000瓶,2的10次方是1024,刚还大于1000,也就是说1000瓶药品可以使用10位二进制数表示出来。

  • 第一瓶 : 00 0000 0001
  • 第二瓶 : 00 0000 0010
  • 第三瓶 : 00 0000 0011
  • ……
  • 第999瓶: 11 1111 0010
  • 第1000瓶:11 1111 0011

将10只老鼠按照顺序进行编号为ABCDEFGHIJ,代表着从低位到高位的每一个二进制位。

每只老鼠对应一个二进制位,如果该位的数字为1,则让老鼠喝瓶里的药。观察,若死亡的老鼠编号为:ACFGJ这5只老鼠,则对应的编号为10 0110 0101,有毒的药品就是该编号,转为十进制为:613号。

2. 先手必胜问题

轮流拿石子

题目链接:石子游戏

问:你和你的朋友面前有一排石头堆,用一个数组 piles 表示,piles[i] 表示第 i 堆石子有多少个。你们轮流拿石头,一次拿一堆,但是只能拿走最左边或者最右边的石头堆。所有石头被拿完后,谁拥有的石头多,谁获胜。

由你第一个开始拿,注意,石头的堆的数量为偶数,所以你们两人拿走的堆数一定是相同的。石头的总数为奇数,也就是你们最后不可能拥有相同多的石头,一定有胜负之分。

举个例子,piles=[2, 1, 9, 5],你先拿,可以拿 2 或者 5,你选择 2。

piles=[1, 9, 5],轮到对手,可以拿 1 或 5,他选择 5。

piles=[1, 9] 轮到你拿,你拿 9。

最后,你的对手只能拿 1 了。

这样下来,你总共拥有 2 + 9 = 11 颗石头,对手有 5 + 1 = 6 颗石头,你是可以赢的,所以算法应该返回 true。

你看到了,并不是简单的挑数字大的选,为什么第一次选择 2 而不是 5 呢?因为 5 后面是 9,你要是贪图一时的利益,就把 9 这堆石头暴露给对手了,那你就要输了。

解答:这个条件下,先下手必胜。

如果我们把这四堆石头按索引的奇偶分为两组,即第 1、3 堆和第 2、4 堆,那么这两组石头的数量一定不同,也就是说一堆多一堆少。因为石头的总数是奇数,不能被平分。

而作为第一个拿石头的人,你可以控制自己拿到所有偶数堆,或者所有的奇数堆。

你最开始可以选择第 1 堆或第 4 堆。如果你想要偶数堆,你就拿第 4 堆,这样留给对手的选择只有第 1、3 堆,他不管怎么拿,第 2 堆又会暴露出来,你就可以拿。同理,如果你想拿奇数堆,你就拿第 1 堆,留给对手的只有第 2、4 堆,他不管怎么拿,第 3 堆又给你暴露出来了。

也就是说,你可以在第一步就观察好,奇数堆的石头总数多,还是偶数堆的石头总数多,然后步步为营,就一切尽在掌控之中了。知道了这个漏洞,可以整一整不知情的同学了。

当然,「总共有偶数堆石子」和「石子总数为奇数」是先手必胜的前提条件。

抢30的必胜策略

问:抢30是双人游戏,游戏规则:第一个人喊1 或 2,第二个人要接着往下喊一个或两个数,然后再轮到第一个人。两个人轮流进行下去,问喊数字的最佳策略。

解答:尽量喊3的倍数。

倒着看,其实,喊到27时就决定胜负了。

假设A喊了27,B只能喊28或29,下个回合,A一定可以喊到30,也就是说,喊27者必胜。

再倒着看,喊24时就决定胜负了,假设A喊了24,B只能喊25或者26,下个回合A一定能喊27.

同理可以推出:喊3的倍数者必胜。

然后会发现,这个游戏谁先喊,谁一定输。

Nim游戏

这道题的思路跟抢30的必胜策略很相似,游戏规则是这样的:

问:你和你的朋友面前有一堆石子,你们轮流拿,一次至少拿一颗,最多拿三颗,谁拿走最后一颗石子谁获胜。

假设你们都很聪明,由你第一个开始拿,比如现在有 4 颗石子,无论你拿 1 颗 2 颗还是 3 颗,对方都能一次性拿完,拿走最后一颗石子,所以你一定会输。

解答:我们解决这种问题的思路一般都是反着思考。

如果我能赢,那么最后轮到我取石子的时候必须要剩下 1~3 颗石子,这样我才能一把拿完。

如何营造这样的一个局面呢?显然,如果对手拿的时候只剩 4 颗石子,那么无论他怎么拿,总会剩下 1~3 颗石子,我就能赢。

如何逼迫对手面对 4 颗石子呢?要想办法,让我选择的时候还有 5~7 颗石子,这样的话我就有把握让对方不得不面对 4 颗石子。

如何营造 5~7 颗石子的局面呢?让对手面对 8 颗石子,无论他怎么拿,都会给我剩下 5~7 颗,我就能赢。

这样一直循环下去,我们发现只要踩到 4 的倍数,就落入了圈套,永远逃不出 4 的倍数,而且一定会输。

所以本题要尽量避开4的倍数。

3. 水桶问题

5L和6L的水桶怎么量出3L的水?

问:在水资源无限的情况下,5L和6L的水桶怎么量出3L的水?

解答:

  • 6L水桶装满水倒入5L水桶,余下1L水
  • 5L水桶倒空,将6L水桶中剩余的1L水倒入5L水桶
  • 6L水桶再次装满水倒入5L水桶,余下2L水
  • 5L水桶倒空, 将6L水桶中剩余2L水倒入5L水桶
  • 6L水桶再次装满水倒入5L水桶,余下3L水

3L和5L的水桶怎么量出4L的水?

问:在水资源无限的情况下,3L和5L的水桶怎么才能量取4L的水?

解答:

  • 初识时0,5
  • 然后3,2
  • 然后0,2
  • 然后2,5
  • 然后1,4

一个装了10L水的桶,一个7L的空桶还有一个3L的空桶

问:一个装了10L水的桶,一个7L的空桶,一个3L的空桶,怎样变成2个5L?

解答:

  • 初始时10,0,0;
  • 然后7,0,3;
  • 然后7,3,0;
  • 然后4,3,3;
  • 然后4,6,0;
  • 然后1,6,3;
  • 然后1,7,2;
  • 然后8,0,2;
  • 然后8,2,0;
  • 然后5,2,3;
  • 然后5,5,0

舀酒问题

问:据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗?

解答:

  • 初始0,11
  • 然后7,4
  • 然后0,4
  • 然后4,0
  • 然后4,11
  • 然后7,8
  • 然后0,8
  • 然后7,1
  • 然后0,1
  • 然后1,11
  • 然后7,5
  • 然后0,5
  • 然后5,0
  • 然后5,11
  • 然后7,9
  • 然后0,9
  • 然后7,2

4. 计时问题

漏斗计时

有一个能计时6分钟的小沙漏和一个能计时8分钟的大沙漏,如何计时10分钟?

解答:

  • 两个沙漏同时倒置开始计时,等小沙漏漏完,大沙漏还剩2分钟,这时倒置小沙漏继续计时;
  • 大沙漏漏完小沙漏还剩4分钟,再把大沙漏倒置继续计时;
  • 小沙漏漏完大沙漏还剩4分钟,这时准备工作已经完毕;
  • 等待大沙漏漏完(4分钟)+ 小沙漏(6分钟) = 10分钟。

烧绳子

问:烧一根绳子需要一个小时,现有两条相同的绳子,问如何计时15分钟?

解答:

  • 点燃绳子A的一头,同时点燃绳子B的两头;
  • 绳子B烧完的时候绳子A还剩一半,此时点燃绳子A的另一头开始计时;
  • 15分钟绳子A烧完。

蜡烛燃烧

问:两根蜡烛,燃烧完都需要1小时,问我们怎么确定15分钟是多久?

解答:

跟上题一样:

  • 点燃第一根的一端,第二根的两端。
  • 第二根烧完代表半小时后,点燃第一根另一端,烧完代表15分钟。

5. 赛马问题

25匹马5条跑道找最快的3匹马

问:25匹马5条跑道找最快的3匹马,最少需要跑几次?

解答:最少需要跑7次。

  • 将25匹马分成ABCDE5组,假设每组的排名就是A1>A2>A3>A4>A5, 这里比赛5次
  • 第6次,每组的第一名进行比赛,可以找出最快的马,这里假设A1>B1>C1>D1>E1, D1,E1肯定进不了前3,直接排除掉
  • 第7次,B1 C1 A2 B2 A3比赛,可以找出第二,第三名

img

64匹马8条跑道找最快的4匹马

问:64匹马8条跑道找最快的4匹马,最少需要跑几次?

解答:至少需要跑11次。

**第一步:**全部马分为8组,每组8匹,每组各跑一次,然后淘汰掉每组的后四名(需要比赛8场)

img

**第二步:**取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马,如下图(需要比赛1场)

img

这个时候总冠军已经诞生,它就是A1,蓝域(它不需要比赛了)。

而其他可能跑得最快的三匹马只可能是下图中的A2,A3,A4,B1,B2,B3,C1,C2,D1,共9匹马

img

**第三步:**只要从上面的9匹马中找出跑得最快的三匹马就可以了,但是现在只要8个跑道,怎么办? 那就随机选出8匹马进行一次比赛吧(需要比赛一场)

**第四步:**上面比赛完,选出了前三名,但是9匹马中还有一匹马没跑呢,它可能是一个潜力股啊,那就和前三名比一比吧,这四匹马比一场,选出前三名。最后加上总冠军,跑得最快的四匹马诞生了!!!(需要一场比赛)

最后,一共需要比赛的场次:8 + 1 + 1 + 1 = 11 场

6. 思维发散题:为什么井盖是圆的?

在这里插入图片描述

解答:

  • 原因1:圆井盖更容易搬运。

我们知道,井盖在生产出来后,需要运输到相应的位置,而且由于井盖比较重,所以在搬运的时候,非常费力气。井盖做成圆形后,在平坦的地方就可以滚着走,并且在调整井盖位置的时候,圆形的东西,更加容易翻滚。所以把井盖做成圆形更加容易搬运。

  • 原因2:圆井盖不易损坏,且节省材料

很多下水井都设置在马路上,井盖覆盖在下水井上面,通常要承受路面车辆和行人带来的压力。而汽车运行在公路上,压力非常大,井盖在设计以及用料上都要承受巨大的压力,才能保证安全。

当然井盖也有方的,从物理上的力学定律来看,圆形物体边缘受力均匀,比同等面积其它形状的物体更能承受压力,而且边缘不容易破损。所以我们现在看到圆形的井盖,其实有着很大的科学道理。

  • 原因3:井盖设计成圆形,更能和下水道契合。

同时,下水道使用的都是圆形的管道。这种圆形管道,更有利于污水通过,为了契合下水道的形状,所以井盖也设计成圆形。圆形井盖能完美地契合下水道,这有利于节约成本,提高下水道的使用效率。这也是通过长期科学验证得到的正确做法。

  • ……
遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

在这里插入图片描述

这篇关于【被面试官吊打系列】啥,你没说面试要考智力题呀 (上) ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381603

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma