2022年程序员面试智力题 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年程序员面试智力题 .pdf》由会员分享,可在线阅读,更多相关《2022年程序员面试智力题 .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1. 考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么?答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后行者能放,先行者一定也有地方放。先行者必胜。 2. 用线性时间和常数附加空间将一篇文章的单词(不是字符)倒序。答案:先将整篇文章的所有字符逆序(从两头起不断交换位置相对称的字符);然后用同样的办法将每
2、个单词内部的字符逆序。这样,整篇文章的单词顺序颠倒了,但单词本身又被转回来了。 3. 用线性时间和常数附加空间将一个长度为n 的字符串向左循环移动m 位(例如, abcdefg移动 3 位就变成了 defgabc)。答案:把字符串切成长为m 和 n-m的两半。将这两个部分分别逆序,再对整个字符串逆序。 4. 一个矩形蛋糕,蛋糕内部有一块矩形的空洞。只用一刀,如何将蛋糕切成大小相等的两块?答案:注意到平分矩形面积的线都经过矩形的中心。过大矩形和空心矩形各自的中心画一条线,这条线显然把两个矩形都分成了一半,它们的差当然也是相等的。 5. 一块矩形的巧克力,初始时由N x M 个小块组成。 每一次你
3、只能把一块巧克力掰成两个小矩形。最少需要几次才能把它们掰成N x M 块 1x1 的小巧克力?答案: N x M - 1次显然足够了。这个数目也是必需的,因为每掰一次后当前巧克力的块数只能增加一,把巧克力分成N x M 块当然需要至少掰N x M - 1次。 6. 如何快速找出一个32 位整数的二进制表达里有多少个1 ?用关于 1 的个数的线性时间?答案 1 (关于数字位数线性):for(n=0; b; b = 1) if (b & 1) n+; 答案 2 (关于 1 的个数线性):for(n=0; b; n+) b &= b-1; 7. 一个大小为N 的数组,所有数都是不超过N-1 的正整数
4、。用O(N) 的时间找出重复的那个数(假设只有一个)。一个大小为N 的数组,所有数都是不超过N+1的正整数。用O(N) 的时间找出没有出现过的那个数(假设只有一个)。答案:计算数组中的所有数的和,再计算出从1 到 N-1 的所有数的和,两者之差即为重复的那个数。计算数组中的所有数的和,再计算出从1 到 N+1的所有数的和,两者之差即为缺少的那个数。 8. 给出一行C 语言表达式,判断给定的整数是否是一个2 的幂。答案: (b & (b-1) = 0 9. 地球上有多少个点,使得从该点出发向南走一英里,向东走一英里,再向北走一英里之后恰好回到了起点?答案: “ 北极点 ” 是一个传统的答案,其实
5、这个问题还有其它的答案。事实上,满足要求的点有无穷多个。所有距离南极点1 + 1/(2)英里的地方都是满足要求的,向南走一英里后到达距离南极点1/(2 )的地方,向东走一英里后正好绕行纬度圈一周,再向北走原路返回到起点。事实上,这仍然不是满足要求的全部点。距离南极点1 + 1/(2k) 的地方都是可以的,其中k 可以是任意一个正整数。 10. A、B 两人分别在两座岛上。B 生病了, A 有 B 所需要的药。 C 有一艘小船和一个可以上锁的箱子。C 愿意在 A 和 B 之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C 都会偷走箱子里的东西,不管箱子里有什么。如果A 和 B 各自有一把锁和
6、只能开自己那把锁的钥匙, A 应该如何把东西安全递交给B?答案: A 把药放进箱子,用自己的锁把箱子锁上。B 拿到箱子后,再在箱子上加一把自己的锁。箱子运回A 后, A 取下自己的锁。箱子再运到B 手中时, B 取下自己的锁,获得药物。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 11. 一对夫妇邀请N-1 对夫妇参加聚会(因此聚会上总共有2N 人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共2N-1
7、个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手?答案:握手次数只可能是从0 到 2N-2这 2N-1个数。除去男主人外,一共有2N-1个人,因此每个数恰好出现了一次。其中有一个人(0) 没有握手,有一个人(2N-2)和所有其它的夫妇都握了手。这两个人肯定是一对夫妻,否则后者将和前者握手(从而前者的握手次数不再是0)。除去这对夫妻外,有一个人(1) 只与 (2N-2)握过手,有一个人(2N-3)和除了 (0) 以外的其它夫妇都握了手。这两个人肯定是一对夫妻, 否则后者将和前者握手(从而前者的握手次数不再是1) 。以此类推, 直到握过N-2 次手的
8、人和握过N 次手的人配成一对。此时,除了男主人及其配偶以外,其余所有人都已经配对。根据排除法,最后剩下来的那个握手次数为N-1 的人就是女主人了。 12. 两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同的程序, 使得这两个机器人保证可以相遇。程序只能包含 “ 左移 n 个单位 ” 、“ 右移 n 个单位 ” ,条件判断语句If ,循环语句 while ,以及两个返回Boolean值的函数 “ 在自己的起点处 ” 和“ 在对方的起点处” 。你不能使用其它的变量和计数器。答案:两个机器人同时开始以单位速度右移,直到一个机器人走到另外一个机器人的起点处。然后,该机器人以双倍速度追
9、赶对方。程序如下。while(!at_other_robots_start) move_right 1 while(true) move_right 2 13. 如果叫你从下面两种游戏中选择一种,你选择哪一种?为什么? a. 写下一句话。如果这句话为真,你将获得10 美元;如果这句话为假,你获得的金钱将少于10 美元或多于10 美元(但不能恰好为 10 美元)。 b. 写下一句话。不管这句话的真假,你都会得到多于10 美元的钱。答案:选择第一种游戏,并写下“ 我既不会得到10 美元,也不会得到10000000美元” 。 14. 你在一幢 100层大楼下,有21 根电线线头标有数字1.21 。这
10、些电线一直延伸到大楼楼顶,楼顶的线头处标有字母A.U 。你不知道下面的数字和上面的字母的对应关系。你有一个电池,一个灯泡,和许多很短的电线。如何只上下楼一次就能确定电线线头的对应关系?答案:在下面把2,3 连在一起,把4 到 6 全连在一起,把7 到 10 全连在一起,等等,这样你就把电线分成了6 个“ 等价类 ” ,大小分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 别为 1, 2, 3, 4, 5, 6。然后到楼顶,测出哪
11、根线和其它所有电线都不相连,哪些线和另外一根相连,哪些线和另外两根相连,等等,从而确定出字母A.U 各属于哪个等价类。现在,把每个等价类中的第一个字母连在一起,形成一个大小为6 的新等价类;再把后5 个等价类中的第二个字母连在一起,形成一个大小为5 的新等价类;以此类推。回到楼下,把新的等价类区别出来。这样,你就知道了每个数字对应了哪一个原等价类的第几个字母,从而解决问题。 15. 某种药方要求非常严格,你每天需要同时服用A、 B 两种药片各一颗,不能多也不能少。这种药非常贵,你不希望有任何一点的浪费。一天,你打开装药片A 的药瓶,倒出一粒药片放在手心;然后打开另一个药瓶,但不小心倒出了两粒药
12、片。现在,你手心上有一颗药片 A,两颗药片B,并且你无法区别哪个是A,哪个是B。你如何才能严格遵循药方服用药片,并且不能有任何的浪费?答案:把手上的三片药各自切成两半,分成两堆摆放。再取出一粒药片A ,也把它切成两半,然后在每一堆里加上半片的A。现在,每一堆药片恰好包含两个半片的A 和两个半片的B。一天服用其中一堆即可。 16. 你在一个飞船上,飞船上的计算机有n 个处理器。突然,飞船受到外星激光武器的攻击,一些处理器被损坏了。你知道有超过一半的处理器仍然是好的。你可以向一个处理器询问另一个处理器是好的还是坏的。一个好的处理器总是说真话,一个坏的处理器总是说假话。用 n-2 次询问找出一个好的
13、处理器。答案:给处理器从1 到 n 标号。用符号a-b表示向标号为a 的处理器询问处理器b 是不是好的。首先问1-2,如果 1 说不是,就把他们俩都去掉(去掉了一个好的和一个坏的,则剩下的处理器中好的仍然过半),然后从3-4开始继续发问。如果1 说 2 是好的,就继续问 2-3 ,3-4, 直到某一次j 说 j+1是坏的,把j 和 j+1去掉,然后问j-1 - j+2;或者从 j+2 - j+3开始发问,如果前面已经没有j-1 了(之前已经被去掉过了)。注意到你始终维护着这样一个“ 链” ,前面的每一个处理器都说后面那个是好的。这条链里的所有处理器要么都是好的,要么都是坏的。当这条链越来越长,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年程序员面试智力题 2022 程序员 面试 智力题
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内