百度笔试.docx
- 文档编号:8333684
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:9
- 大小:19.05KB
百度笔试.docx
《百度笔试.docx》由会员分享,可在线阅读,更多相关《百度笔试.docx(9页珍藏版)》请在冰豆网上搜索。
XX笔试
2009XX实习笔试题Zz
一、编程题(30分)
输入:
N(整数)
输入:
数据文件A.txt,不超过6条记录,字符串长度不超过15个字节
文件格式如下:
字符串\\t数字\\n
说明:
每行为1条记录;字符串中不含有\\t。
数字描述的是该字符串的出现概率,小于等于100的整数。
多条记录的出现概率之和为100,如果A.txt不满足该条件,程序则退出;
如果文件格式错误,程序也退出。
要求:
编写一个程序,输入为N(正整数),读入文件A.txt,按照字符串出现概率随机
地输出字符串,输出N条记录
例如:
输入文件A.txt
abc\\t20
a\\t30
de\\t50
输入为:
10
即abc有20%的概率输出,a有30%的概率输出,de有50%的概率输出,输出10条记
录
以下为一次输出的结果,多次输出的结果可能不相同。
abc
a
de
de
abc
de
a
de
a
de
二、算法题(35分)
题目描述:
设有n个正整数,将它们联接成一排,组成一个最小的多位整数。
程序输入:
n个数
程序输出:
联接成的多位数
例如:
n=2时,2个整数32,321连接成的最小整数为:
32132,
n=4时,4个整数55,31,312,33联接成的最小整数为:
312313355
[题目要求]
1.给出伪代码即可,请给出对应的文字说明,并使用上面给出的例子试验你的算
法。
2.给出算法的时间空间复杂度。
3.证明你的算法。
(非常重要)
三、系统设计题(35分)
在一个有1000万用户的系统中,设计一个推送(feed)系统。
以下是一些预定义概
念
1、用户:
在这个系统中,每个用户用一个递增的unsignedint来表示userid(简
写为uid);则uid的范围是从1到1000万的正整数。
2、好友:
用户之间可以形成好友关系,好友是双向的;比如说uid为3和uid为4的
两个用户可以互为好友。
每个用户好友的上限是500个;用户之间的好友关系可以
被解除
3、活动:
每个用户只能发文章;文章可以被作者删除,其他人不能删除非自己发
表的文章;每篇文章通过一个blogid表示。
4、feed:
我们希望,每个用户可以看到他所有好友的活动列表,在这个简化的系
统中就是所有好友的文章更新列表。
5、访问量要求:
所有feed访问量每天在1亿量级;所有的blogid增加量每天在百
万量级。
题目:
请在以上限制条件下,设计一个高效的feed访问系统。
要求:
1、能够尽快的返回每个用户的好友feed列表,每个用户可以最多保留1000条feed
;feed的展现按照时间倒排序,最新的在最前面
2、用户删除某篇文章后,被推出去的feed需要及时消失。
即每个用户看到的好友
feed都是未被删除的
3、尽可能高效。
一、选择题:
15分共10题
1.在排序方法中,关键码比较次数与记录地初始排列无关的是:
A.Shell排序B.归并排序C.直接插入排序D.选择排序
选择A
2.以下多线程对int型变量x的操作,哪几个需要进行同步:
A.x=y;B.x++;C.++x;D.x=1;
选择B,C
3.代码
voidfunc()
{
staticintval;
…
}
中,变量val的内存地址位于:
A.已初始化数据段B.未初始化数据段C.堆D.栈
选择A
4.同一进程下的线程可以共享以下:
A.stackB.datasectionC.registersetD.threadID
选择A,B
5.TCP和IP分别对应了OSI中的哪几层?
A.Applicationlayer
B.Datalinklayer
C.Presentationlayer
D.Physicallayer
E.Transportlayer
F.Sessionlayer
G.Networklayer
选择EG
6.shorta[100],sizeof(a)返回?
A.2B.4C.100D.200E.400
选择D
7.以下哪种不是基于组件的开发技术_____。
A.XPCOMB.XPC.COMD.CORBA
选择B
8.以下代码打印的结果是(假设运行在i386系列计算机上):
字串2
structst_t
{
intstatus;
short*pdata;
charerrstr[32];
};
st_tst[16];
char*p=(char*)(st[2].errstr+32);
printf("%d",(p-(char*)(st)));
A.32B.114C.120D.1112
选择C,因为st[2]的起始地址比st[0]的起始地址高80位,
st[2].errstr的起始地址比st[2]的起始地址高8位
再加上32位就等于120.
9.STL中的哪种结构是连续形式的存储:
A.mapB.setC.listD.vector
选择D
10.一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是:
A.EDCBAB.DECBAC.DCEABD.ABCDE
选择C
二、简答题:
20分,共2题
1.(5分)重复多次fclose一个打开过一次的FILE*fp指针会有什么结果,并请解释。
导致fp所指的文件被多次释放,导致不可预期的后果.
5.一个B类网的子网掩码是255.255.240.0,这个子网能拥有的最大主机数是:
A.240B.255C.4094D.65534
6.以下代码执行后,val的值是___:
unsignedlongval=0;
chara=0x48;
charb=0x52;
val=b<<8|a;
A20992B21064C72D0
选择B,b的十进制为82,二进制为101,0010
b左移8位为101,0010,0000,0000
a的十进制为72,二进制为100,1000
b<<8|a为21064
7.内存的速度远远高于磁盘速度,所以为了解决这个矛盾,可以采用:
字串2
A并行技术B虚存技术C缓冲技术D通道技术
9.同一进程下的线程可以共享以下
A.stackB.datasection
C.registersetD.threadID
选择B,C
10.以下哪种操作最适合先进行排序处理?
A找最大、最小值B计算算术平均值
C找中间值D找出现次数最多的值
选择A
一、选择题:
15分共10题
1.在排序方法中,关键码比较次数与记录地初始排列无关的是:
A.Shell排序B.归并排序C.直接插入排序D.选择排序
2.以下多线程对int型变量x的操作,哪几个需要进行同步:
A.x=y;B.x++;C.++x;D.x=1;
3.代码
voidfunc()
{
staticintval;
…
}
中,变量val的内存地址位于:
A.已初始化数据段B.未初始化数据段C.堆D.栈
4.同一进程下的线程可以共享以下:
A.stackB.datasectionC.registersetD.threadID
5.TCP和IP分别对应了OSI中的哪几层?
A.ApplicationlayerB.DatalinklayerC.PresentationlayerD.PhysicallayerE.TransportlayerF.SessionlayerG.Networklayer
6.shorta[100],sizeof(a)返回?
A.2B.4C.100D.200E.400
7.以下哪种不是基于组件的开发技术_____。
A.XPCOMB.XPC.COMD.CORBA
8.以下代码打印的结果是(假设运行在i386系列计算机上):
structst_t
{
intstatus;
short*pdata;
charerrstr[32];
};
st_tst[16];
char*p=(char*)(st[2].errstr+32);
printf("%d",(p-(char*)(st)));
A.32B.114C.120D.1112
9.STL中的哪种结构是连续形式的存储:
A.mapB.setC.listD.vector
10.一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是:
A.EDCBAB.DECBAC.DCEABD.ABCDE
1.(5分)重复多次fclose一个打开过一次的FILE*fp指针会有什么结果,并请解释。
考察点:
导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。
2.(15分)下面一段代码,想在调用f2
(1)时打印err1,调用f2
(2)时打印err4,但是代码中有一些问题,请做尽可能少的修改使之正确。
1staticintf1(constchar*errstr,unsignedintflag){
2 intcopy,index,len;
3 conststaticchar**__err={"err1","err2","err3","err4"};
4
5 if(flag&0x10000)
6 copy=1;
7 index=(flag&0x300000)>>20;
8
9 if(copy){
10 len=flag&0xF;
11 errstr=malloc(len);
12 if(errstr=NULL)
13 return-1;
14 strncpy(errstr,__err[index],sizeof(errstr));
15 }else
16 errstr=__err+index;
17}
18
19voidf2(intc){
20 char*err;
21
22 swtch(c){
23 case1:
24 if(f1(err,0x110004)!
=-1)
25 printf(err);
26 case2:
27 if(f2(err,0x30000D)!
=-1)
28 printf(err);
29 }
30}
三、编程题:
30分共1题
2.注意:
要求提供完整代码,如果可以编译运行酌情加分。
1.求符合指定规则的数。
给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93。
这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:
数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。
现在要写程序,找出1至10000里的所有符合数A定义的数。
输出:
1
3
…
四、设计题:
35分共1题
注意:
请尽可能详细描述你的数据结构、系统架构、设计思路等。
建议多写一些伪代码或者流程说明。
1.假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些歌曲的2^30条URL,但每首歌的URL不超过2^10个。
系统会定期检查这些URL,如果一个URL不可用则不出现在搜索结果中。
现在歌曲名和URL分别通过整型的SONG_ID和URL_ID唯一确定。
对该系统有如下需求:
1)通过SONG_ID搜索一首歌的URL_ID,给出URL_ID计数和列表
2)给定一个SONG_ID,为其添加一个新的URL_ID
3)添加一个新的SONG_ID
4)给定一个URL_ID,将其置为不可用
限制条件:
内存占用不超过1G,单个文件大小不超过2G,一个目录下的文件数不超过128个。
为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。
如果系统数据量扩大,该如何多机分布处理?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 百度 笔试