2014百度笔试题(武汉)

来源:互联网 发布:ubuntu tty u盘 编辑:程序博客网 时间:2024/04/27 18:01

简答题:

1.说明动态链接库和静态链接库的区别。

静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接 库。

采用动态链接库的优点:(1)更加节省内存;(2)DLL文件与EXE文件独立,只要输出接口不变,更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性。
2.轮询任务调度和抢占式任务调度的特点

http://blog.csdn.net/zhangyf_2014/article/details/12177165

http://blog.csdn.net/zhangyf_2014/article/details/12177199
3.简要说明数据库锁机制以及描述。

排它锁(写锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。保证其他事务在T释放A上的锁之前不能在读取和修改A。
共享锁(读锁):若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加上锁,而不能加X锁,直到T释放A上的锁。保证其他事务可以读A,但在T释放A上的锁S之前不能对A做任何操作。
活锁:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍等待。然后T4又请求封锁R,当T3释放了R上的锁之后系统又批准了T4的请求……T2有可能永远等待,这就是活锁。
死锁:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务将永远不能结束。这就是死锁。
几种意向锁
意向共享锁(IS锁):如果对一个数据对象加IS锁,表示它的后裔结点拟加S锁。例如,事务T1要对R1中某个元组加S锁,则要先对关系R1和数据库加IS锁。
意向排它锁(IX锁):如果对一个数据对象加IX锁,表示它的后裔结点拟加X锁。例如,事务T1要对R1中某个元组加X锁,则要先对关系R1和数据库加IX锁。
共享意向排它锁(SIX锁):如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。例如,对某个表加SIX锁,则表示该事务要读取整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)

或者3.说明什么是N折交叉验证。(数据挖掘类)


算法题:
1.给出任意一个正整数,算出大于它的最小不重复数(即相邻两个数不能相同,1102是重复数,)
2.给出一个长度为N的字符串,求里面最长的回文子串长度。

http://blog.csdn.net/ywhorizen/article/details/6629268
3.数轴上从左到右有n个点a[0],a[1]......a[n-1],现在有一根长度为L的绳子,问最多能覆盖多少个点。

int findMax_1(int *a,int nlength,int dis){int m=1;int i,j;for (i=0,j=1;j<nlength;j++)//{1,2,3,4,5,12,13,14,15,16,27,28,29,30}{if (a[j]-a[i]<=dis)m++;else i++;}return m;}



系统设计题:
大概是:
设计一个分布式缓冲服务器系统。
要求服务器负荷均匀,按比例负荷,单点故障不影响集群,客户访问内容根据分类存放在不同的服务器中(能提高查找效率)。

(数据挖掘类系统设计题目)

 关于网页排序的问题

损失函数:

F(f,i,j) = lg(1+e^(fj-fi))

(1)求损失函数的偏导数

 (2)说明损失函数的缺点,设计新的损失函数


原创粉丝点击