2015年秋季腾讯校园招聘开发岗笔试题(四道大题)
1. 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码( Gray Code )。请编写一个函数,使用递归方法生成 N 位的格雷码,并且保证这个函数的健壮性。
2. 有下图的题解,请用 C/C++ 代码来列出满足下图 0-100 内的所有答案。
3. 如图所示,系统中有三个进程 Producer , Transmitter 和 Consumer 。 Producer 和 Transmitter 共用缓冲区 ProduceBuf , Consumer 和 Transmitter 共用缓冲区 ConsumeBuf 。
Producer 进程负责不断地将输入信息送入 ProduceBuf ; Transmitter 进程负责从 ProduceBuf 中取出信息进行处理,并将处理结果送到 ConsumeBuf ; Consumer 进程负责从 ConsumeBuf 中读取结果并输出。
假设 ProduceBuf 中最多可放 12 个信息,现已放入了 3 个信息; ConSumeBuf 最多可放 6 个信息。试写出正确实现进程 Producer,Transmitter 和 Consumer 的同步与互斥的算法
(要求:用类 C 语言描述,条理清楚,注释恰当;)
4. 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。