[大连地区]百度2012软件研发笔试题

 

下面是百度2012大连地区笔试题 R&D 通用卷3(软件研发工程师)的试卷内容:

 

一 简答题(10x3=30分)

1. 用ssh登陆远程的Linux/Unix系统,如果网络中断,Linux/Unix端运行的程序将会中断。

这种问题发生的原理?通过何种途径去避免?这种途径的原理是什么?

 

2.一个最小值堆,同时是一棵完全二叉树,顺序存储在一个数组a中,126438759

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

(2) 完成函数,向堆中加入一个元素仍然满足堆的原有性质;void  add_element(int *a,int size,int val)

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


[大连地区]百度2012软件研发笔试题

 

 

3.有某种hash算法,让用户稳定的均匀分布到一个区间内,大小为100%,最小粒度0.1%,这种区间叫做一层,两个区间A,B,如何让A中的任意子区间都均匀分布到层B的100%中。

现有超过10层,每一层都需要这种关系,如何解决?

 

二 算法与程序题(20X2=40分)

1.给定一个数字编码N,大多数情况下可以找到一个数字编码M,其位数与编码N相等(编码可以从0开始),各位数字之和与编码N中各位数字之和相等,并且M是数值大于N的所有码中最小的一个,也可能要找的编码M不存在。

如给定编码N=134,则编码M=143;给定编码N=020,则编码M=101,形式化表述为f(N)=M,如果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(3)=f(S(2))...,当S(i+1)<0时序列结束,但小于0的元素不包含在序列中,要求给出算法思路和函数。

2.给定一个序列s=[a1,a2,...,an];

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

举例:>>>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],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

说明:算法均可用伪代码表示

 

三 系统设计题30分

设计一个支持高级语法查询的单机大数据量的磁盘检索系统,机器内存为10GB,磁盘空间不限,数据格式如下,单条数据数据由TermID,签名[unit64_t],UrlNoCount[unit32_t],UrlNo[unit32_t]列表组成,UrlNo列表长度不定,平均长度为10万个:

—————————————————————————————————————

(1)设计一种数据存储格式与读取方法,主要从查询性能考虑,兼顾资源利用(10分);

(2)设计一种检索线程模型,需要支持多线程并发查询(5分);

(3)设计一种算法,支持AND,OR,SUB(差集),

  1>需要支持括弧操作,譬如如下查询

   ID1 SUB(ID2 AND ID3) OR ID4(10分);

   2>考虑如何支持截断优化策略的当前获得到前100个最终UrlNo结果后停止后续检索过程(5分)

 

http://blog.csdn.net/cai0538/article/details/6863883


你可能感兴趣的:(2012)