百度校园2014招聘软件研发类笔试题(深圳站)

来源:互联网 发布:免费手机考勤软件 编辑:程序博客网 时间:2024/04/28 10:09
时间:2013年9月28日。
地点:深圳
职位:软件研发


问答题:(10*3)
1.动态链接库与静态链接库的优缺点

2.轮询调度和抢占调度的不同

3.数据库的锁及其应用场景


算法题:(15*3)
1.输入任意正整数,比这个数大的最小不重复数(相邻两个数字不重复),例如1101是重复,1234不重复,1201不重复

算法思路

1.  将给定的long数加1。

2.  从这个数开始检测是否为重复数,如果不是,ok,这个数就是最终结果。如果是,那么从数的右侧开始找第1对重复的数,然后将其加1,得到一个新的数

3 .  然后用这个数再从第2步开始

4 虽然把每一对重复的数都变成了不重复的,但仍然不是最小的数,需要将当前重复数后面的数变成最小的,例如,99561将99变成不重复的数,也就是100,原来的数变成了100531,但100531还需要继续变成100101,再查找重复数,把到了00,再变成101101,然后再变成101010



2.从字符串(长度非常大)中找出最长回文子串

算法思路:

1 先在每两个相邻字符中间插入一个分隔符,当然这个分隔符要在原串中没有出现过。一般可以用‘#’分隔。这样就非常巧妙的将奇数长度回文串与偶数长度回文串统一起来考虑了

2 然后用一个辅助数组P记录以每个字符为中心的最长回文串的信息。P[id]记录的是以字符str[id]为中心的最长回文串,当以str[id]为第一个字符,这个最长回文串向右延伸了P[id]个字符。

3 从前往后扫的。那么当我们准备求P[i]的时候,i以前的P[j]我们是已经得到了的。我们用mx记在i之前的回文串中,延伸至最右端的位置。同时用id这个变量记下取得这个最优mx时的id值

4 如果 mx > i p =MIN( p[2*id-i], mx-i );  // 根据回文的性质,但是如果超过了mx-i 那一部分还没有比较过,所以取最小值

  否者:p=1

然后对后半部分进行遍历比较 for(; str[i+p] == str[i-p]; p++) 跟新 mx  和 i 的值 然后循环

最后对数组P遍历即可求出最大值



3.数轴上n个点(a0,a1,.....an),长为L的绳子最多能覆盖多少个点

数组题算法描述:

maxCover=1 ,  coverNum = 0 ,beginPos=0,endPos=1 分别表示最多覆盖点数,当前遍历开始节点和结束点

1 如果a[endPos] – a[beginPos]== l 这个是时候正好覆盖coverNum = endPos–beginPos + 1; 右移动beginPos++;endPos++;

2 如果a[endPos] – a[beginPos]> l 这个时候超过了需要回退coverNum= endPos–beginPos; 向右移动beginPos++;endPos++;

3 如果coverNUm >maxCover  更新maxCover = coverNum

4 如果a[endPos] –a[beginPos]  < L ,endPos++;

循环直到endPos <= n – 1





系统设计:(25*1)

1. 在现代系统的设计过程中,为了减轻请求的压力,通常采用缓存技术,为了进一步提升缓存的命中率,同常采用分布是缓存方案。调度模块针对不同内容的用户请求分配给不同的缓存服务器向用户提供服务。请给出一个分布式缓存方案,满足如下要求:

1) 单台缓存服务器故障,整个分布式缓存集群,可以继续提供服务。

2)通过一定得分配策略,可以保证充分利用每个缓存服务的存储空间,及负载均衡。当部分服务器故障或系统扩容时,改分配策略可以保证较小的缓存文件重分配开销。

3)当不同缓存服务器的存储空间存在差异时,分配策略可以满足比例分配。

原创粉丝点击