2011年百度校园招聘笔试题(研发类)

来源:互联网 发布:金十网络 编辑:程序博客网 时间:2024/04/30 01:15
 转自:

http://www.pengyou.com/index.php?mod=blog&act=show&u=523f808094cf57e2b40f66625e5764a047568bc51911b691&blogid=1318214183&adtag=imclient&crosssess=1&ptlang=2052一、简答题(30分)

1、对远程Linux/Unix系统进行操作,通常的途径是采用终端软件通过ssh登陆远程系统,但是在网络发生中断时,Linux/Unix端运行的程序将会中断,请简述这种问题发生的原理,通过何种途径避免这种问题,以及该途径可以规避此问题的原理。

2、一个最小值堆,同时是一棵完全二叉树(最下面两层的子节点可以少于2,最下面一层的节点都在左边)该堆的顺序存储在一个数组a中,1、2、6、4、3、7、8、5、9(图没画出来)

(1)对于任意节点a[n],其在二叉树中左右节点的访问方式

(2)加一个元素任满足堆的原有性质

         void add_element(int *a,int size,int val)

      *a存储堆的数组,size元素个数,val元素值,数组内存大小不需要考虑

(3)完成函数,取出堆顶最小元素后任然满足堆的原有性质。

3、通过某种hash算法,可以让用户稳定的均匀分布到一个区间,这个区间的大小为100%,分布的最小粒度为0.1%,我们把这种区间叫一层,现在有区间A、B,如何让A中的任意子区间段均匀分布到层B的100%中?如层A中取10%会均匀分布到层B中,即层B的每一个10%都会有1%区间A的10%,也可以说层B的,如果现在有超过10层,每一层之间都需要有这种关系,又如何解决?

二、算法与程序设计(40分)

1、给定一个数字编码N,有一个数字编码M,位数和N一样,各位和也和N的各位和一样,并且M是数字大于N的所有编码中最小的一个,即有M=f(N),也可能不存在编码M,即f(N)=-1。现在有一个起始编码N,N的数字位数最大不超过1000,N的最大不超过10^500,要求给出序列S(N),其中S(0)=N,S(1)=F(N),S(2)=f(S(1))..... 当S(i+1)<0 时候结束,但是小于0的元素不包含在序列中,要求给出算法与代码。

2、给定一个序列S=[ a1,a2,a3....an]

(1)构造一个算法,生成序列的全排列:

    示例>>>permu([1,2,3])

    [ [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]

(2)构造一个算法,生成一个序列S的所有组合

    示例>>>comb([1,2,3])

    [ [ ],[1],[1,2],[3],[1,3],[2,3],[1,2,3] ]

   说明,算法均可用伪代码

三、系统设计题(30分)

   题目太长了,没有抄

原创粉丝点击