4.1 经典智力题

【考点讲解】

在一场测试岗位的技术面试中,除了一些项目经历、技术性题型以外,面试官还喜欢出一些智力题,因为候选人对技术知识的掌握固然重要,但是对于程序员来说,缜密的逻辑思维、灵活解决问题的能力更加难能可贵。
技术性的问题,稍加以复习强化,在面试过程中一般都能回答得比较稳定,但智力题却比较难,题型变化莫测,而且解题思路也是千变万化,让人意想不到。如果碰到一些陌生的题目,可能思考半天都不一定能回答出来,这也是一场面试中最充满变数的一个环节。
当然,一般来说,智力题不会决定求职者一场面试的成败,但是假如说能够经过思考之后,顺利作答,无疑也会对接下来的面试更加充满自信。
在准备智力题的复习过程中,大家可以上牛客网去刷刷面经,可能会找到一些出题规律,比如:百度经常爱出赛马题,这已经不是什么新鲜事。
智力题题型多样,比较考验智商,但是如果经常刷智力题的话,你可能会发现不少题目都是换汤不换药的,比如:老鼠和毒药这个经典的问题,摇身一变就变成了时下火热的核酸检测问题,但实际解法都是利用了二进制的规律进行解答。
笔者抽取了12道比较典型例题,希望大家看完后能够举一反三,在面试中随机应变。

【例题示例】

4.1.1 水桶问题

【考点映射】
  • 水桶问题
【出现频度】★★★★
【难度】★★★
【题目描述】
一个装了10L水的桶,一个7L的空桶,一个3L的空桶,怎样变成2个5L

【参考答案】
思路:
这种问题被称为倒水问题,倒水方法从本质上说只有两种:
第一种是大桶倒入中桶,中桶倒入小桶,小桶倒回大桶。为避免陷入循环,每次只有小桶满了才倒回大桶,也只有中桶空了才从大桶中加满水,不断重复上述过程;
第二种是大桶倒入小桶,小桶倒入中桶,中桶倒回大桶。为避免陷入循环,每次只有中桶满了才倒回大桶,也只有小桶空了才从大桶中加满水,不断重复上述过程。
所有的倒水方法都是这两种方法的变形。


4.1.2 猜数字

【考点映射】
  • 数学问题
【出现频度】★★★★
【难度】★★
【题目描述】
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数, 甲说:“我猜不出”, 乙说:“我猜不出”, 甲说:“我猜到了”, 乙说:“我也猜到了”, 问这两个数是多少?

【参考答案】
为了说明此题解法,先放上一张乘法口诀表。
  • 第一步:因为数字是从2到9,所以先把 1xn 的结果排除掉,图中划黄线的去掉。