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

news2024/10/7 8:21:38

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • 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.coloradmin.cn/o/1191297.html

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

相关文章

2.【自动驾驶与机器人中的SLAM技术】左乘模型推导ESKF

目录 1. 证明题 证明:若某个高斯随机变量为零均值,协方差为对角线矩阵且大小相同(各向同性),那么在乘任意旋转矩阵以后,其均值仍为零,且协方差不变; 2. 代码实现运动方程将F矩阵…

FreeRTOS_内存管理

目录 1. 内存管理简介 2. 内存碎片 3. heap_1 内存分配方法 3.1 分配方法简介 4. heap_2 内存分配方法 4.1 分配方法简介 4.2 内存块详解 5. heap_4 内存分配方法 6. FreeRTOS 内存管理实验 6.1 实验程序 内存管理是一个系统基本组成部分,FreeRTOS 中大量…

计算机考研408有多难?25考研经验贴,开个好头很有必要

前言 大家好,我是陈橘又青,相信关注我的各位小伙伴们中,大多都是在计算机专业的大学生吧! 每天都有许多人在后台私信我,问我要不要考研,我想说这个东西是因人而异的,像我本人就选择了就业&…

istio 学习笔记

参考:istio简介和基础组件原理(服务网格Service Mesh)-CSDN博客 Istio 微服务框架 服务治理。 Istio的关键功能: HTTP/1.1,HTTP/2,gRPC和TCP流量的自动区域感知负载平衡和故障切换。 通过丰富的路由规则&#xf…

96 前缀树Trie

前缀树 题解1 STL题解2 参考官方 Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类: …

php冒泡算法实现倒序和正序排列

冒泡排序是一种简单的排序算法,其主要思想是比较相邻的两个元素,根据需要交换位置,将较大(或较小)的元素逐渐冒泡到数组的一端,从而实现排序。 1、从小到大排序 function bubbleSort($arr) {$len count(…

Antv/G2 图表背景实线改为虚线

坐标轴 - Axis 文档 绘图属性 - ShapeAttrs 文档 图表背景实线改为虚线代码示例: chart.axis("value", {grid: {// 背景网格刻度线样式line: {style: {lineWidth: 0.5,lineDash: [5, 2], //虚线},},}, });未设置前页面效果: 添加代码配置&…

MQTT协议消息代理服务公网远程连接

文章目录 前言1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 前言 Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不…

linux os cpufreq 调频

amd ubuntu os 调频: sudo apt install linux-intel-iotg-5.15-tools-common # version 5.15.0-1043.49~20.04.1, or sudo apt install linux-oem-5.6-tools-common # version 5.6.0-1017.17 sudo apt install linux-tools-common …

城市内涝积水监测,万宾科技内涝预警监测系统

每一个城市的排水体系都是一个复杂的网络系统,需要多个部分配合协调,预防城市排水管网带来安全隐患,也因此才能在一定程度上缓解城市内涝带来的安全问题。在海绵城市建设过程中不仅要解决大部分道路硬化导致的积水无法渗透等问题,…

Java 设计模式——访问者模式

目录 1.概述2.结构3.案例实现3.1.抽象访问者类3.2.抽象元素类3.3.具体元素类3.4.具体访问者类3.5.对象结构类3.6.测试 4.优缺点5.使用场景6.扩展6.1.分派6.2.动态分配6.3.静态分配6.4.双分派 1.概述 访问者模式 (Visitor Pattern) 是一种行为型设计模式,它用于将数…

潼南柠檬产业发展大会举行 这三个场景“柠”聚了人气

华龙网讯(首席记者 羊华)今(6)日下午,2023中国潼南柠檬产业发展大会正式举行。潼南区准备了“大礼包”,既有专业论坛峰会,也首发了“柠檬产业大脑”,还进行了招商引资集中签约&#…

Linux安装git和maven——拉取代码 --> mvn打包成jar包 --->运行jar包

前言 我们知道最后的代码都是要运行在Linux系统中的,所以就需要在Linux中安装git,从而能够拉取代码,安装maven,从而能够进行项目的打包。 本篇博客以centos为例,介绍如何安装git,安装maven3.8&#xff0c…

【LLMs】从大语言模型到表征再到知识图谱

从大语言模型到表征再到知识图谱 InstructGLMLLM如何学习拓扑?构建InstructGLM泛化InstructGLM补充参考资料 2023年8月14日,张永峰等人的论文《Natural Language is All a Graph Needs》登上arXiv街头,轰动一时!本论文概述了一个名…

界面组件DevExpress ASP.NET Core v23.1 - 进一步升级UI组件

DevExpress ASP.NET Core Controls使用强大的混合方法,结合现代企业Web开发工具所期望的所有功能。该套件通过ASP.NET Razor标记和服务器端ASP.NET Core Web API的生产力和简便性,提供客户端JavaScript的性能和灵活性。ThemeBuilder工具和集成的Material…

为什么推荐从Linux开始了解IT技术

IT是什么,是干什么的呢? 说起物联网,云计算,大数据,或许大家听过。但是,你知道,像云计算的底层基座是什么呢?就是我们现在说的Linux操作系统。而云计算就是跑在Linux操作系统上的一个…

管理驾驶舱这么做,领导都点赞(附方案下载)

你是否知道你的企业是否充分利用了可用的数据资源? 著名的著名的质量管理专家,威廉爱德华德莱克(William Edwards Deming)曾说过:"数据不是权力,能够理解数据的能力才是真正的权力。" 企业在经营…

Unity Mirror学习(一) SyncVars属性使用

官网中所说的网络对象,指的是挂了 NetworkIdentity组件的对象 官网中所说的玩家对象,指的是NetworkManager脚本上的PlayerPrefab预制体 这个概念对阅读官网文档很重要,我刚开始并不理解,走了歪路 SyncVars(同步变量&a…

ssm+vue的论文管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的论文管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项目介绍: 采用M&am…

使用promise创建一个同步事件驱动api

使用promise创建一个同步事件驱动api 事件驱动体系结构(EDA)是一种强大的方法,可以在网络上构建松散耦合、性能好、可伸缩的应用程序。它支持非常多功能,如推送通知、协作编辑和多人操作,以及其他实时交互。 但有时模型与我们开发人员需要的…