2013巨人网络笔试题

1, 假设A上台阶,一次可以跨1层,2层或3层,问A上50层台阶,有多少种走法?
假设A上台阶,一次可以跨1层,2层,3层.. 或m层,问A上n层台阶,有多少种走法?
其中,m和n都是正整数,并且 m <= n, m <= 10, n <= 50
请编程解决这个问题,并详细说明解题思路。

2,请设计一套对n个字符进行全排列的算法。
如果对该算法输出全排列顺序分别标记序号,从1到n!
那么,给出low, high,能否不算出所有排列,而直接输出第low个到第high个的排列方式。
请写出示例代码,并详细说明解题思路。

3,一栋楼有N层,要去每一层的人数分别为p[1], p[2], ...,p[n],如果电梯只停1次,问停哪一层,可以让所有人走的楼层最少。
如果走路上一层楼耗费的能量为k1, 走路下一层楼消耗的能量为k2,坐电梯上一层楼消耗的能量为k3,问停哪一层,可以让所有人消耗能量最少。
请编程解决这个问题,并详细说明解题思路。

4,如果你很熟悉STL,请尝试做下面题目:
a,如何将大量有序数据(例如有100万条有序节点的vector),快速添加到map中去
b,一个vector中有100万条数据,请以最高的效率,删除第5,10,15项的内容


5,在云存储计算中心,大量的文件存储在N台服务器组成的集群中,每个文件都有一个独立且唯一的编号(ID),我们根据 ID % N 将文件的实际存储分配到N台服务器中。但是如果有一台服务器宕机,或者需要添加一台服务器时,由于N的变化,会造成大量的访问错误,需要重新对文件的存储进行分配(需要把文件从一台机器复制到另一台机器)。

能不能换一种策略,使得在充分利用每台服务器的存储空间同时,尽可能减少服务器数量的变化对文件存储重分配造成的开销,如果N台服务器的存储空间各不相同,如何调整你的策略。


6,有两个大于1且不相等的自然数。A知道两个数的乘积,B知道两个数的和。
B说:我不知道这两个数是多少,但我确定你也不知道
A看了看乘积说:那现在我就知道这两个数是多少了。
B想了想说:嗯,现在我也知道这两个数是多少了。
请问,这两个数分别是多少。

7,设计一套内存地址描述算法和数据结构,要求如下:
1)内存地址从0开始,到无穷大,初始内存都是未使用。
2)申请内存块算法,输入申请大小,输出申请到的内存的起始地址,并将此块内存标记为已使用,申请内存块时,不能覆盖到已使用的内存块。
3)在可能申请到的内存地址中,必须随机。即如果[0, 0x1000]都是未使用的内存,申请0x100大小的内存,申请到的地址必须是从[0, 0xF00]中随机。
4)如果连续多次进行申请内存操作,会对该段内存产生碎片,申请内存的时候,要尽可能使用中间的碎片进行申请,只有在所有碎片都无法申请的所需大小时,才能向内存最后的无穷大空间中申请内存。
5)不需要释放内存块的功能,在大量碎片(超过2w个)的情况下,申请速度会大大降低(浪费在查询碎片内存块上),请尽量保证最快的申请内存块速度。
个人资料
bjchenli
等级:8
文章:260篇
访问:22.0w
排名: 3
推荐圈子
上一篇: 2014唯品会运维工程师笔试题
下一篇:百度2010校园招聘web前端开发面试题(含参考答案)
猜你感兴趣的圈子:
IT校招圈
标签: 申请、台阶、能量、碎片、一层楼、面试题
隐藏