整理百度笔试题Word文件下载.docx
《整理百度笔试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《整理百度笔试题Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
可执行文件1
可执行文件2
.........
最后将该批处理文件属性该位可执行。
调试:
在编译时使用-g参数,就可以使用gdb进行调试。
2、写出内存分配和释放的函数,并指出区别。
C语言的标准内存分配函数:
malloc,calloc,realloc,free等。
malloc与calloc的区别为1块与n块的区别:
malloc调用形式为(类型*)malloc(size):
在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回该区域的首地址。
calloc调用形式为(类型*)calloc(n,size):
在内存的动态存储区中分配n块长度为“size”字节的连续区域,返回首地址。
realloc调用形式为(类型*)realloc(*ptr,size):
将ptr内存大小增大到size。
free的调用形式为free(void*ptr):
释放ptr所指向的一块内存空间。
C++中为new/delete函数。
3、写出socket函数,并指出其功能。
socket():
建立socket通信描述符;
bind():
将套接字和机器上的一定的端口关联;
connect():
连接到远程主机;
listen():
使套接字做好连接的准备,规定等待服务请求队列的长度;
accept():
接受连接,一旦有客户端发出连接,accept返回客户地址信息和一个新的sock;
有了这个新的sock,双方就可以开始收发数据:
send()和recv():
用于流式套接字或者数据套接字的通讯;
sendto()和recvfrom():
用于无连接的数据报套接字;
close():
关闭套接字;
shutdown():
选择性的关闭套接字,可以只允许某一方向的通讯关闭;
getpeername():
返回流式套接字时对端peer信息;
gethostname():
返回程序所运行的机器的主机名字;
gethostbyname():
返回本机IP;
第三部分编程题:
1、从文件中读取字符串数据,反序显示并大小写转换。
2、给定26字母表以及对应的密码表,编程实现加密及解密功能。
第四部分思考题(正是传说中的字典纠错题):
用户在输入英文单词时经常出错,现对其进行就错。
给定一个正确的英文词典,考虑纠错实现。
1)指出思路。
2)流程、算法难易程度及可能的改进策略。
一道算法题目答案
intReplace(Stringtype&
S,StringtypeT,StringtypeV);
//将串S中所有子串T替换为V,并返回置换次数
{
for(n=0,i=1;
i〈=Strlen(S)-Strlen(T)+1;
i++)//注意i的取值范围
if(!
StrCompare(SubString(S,i,Strlen(T)),T))//找到了与T匹配的子串
{//分别把T的前面和后面部分保存为head和tail
StrAssign(head,SubString(S,1,i-1));
StrAssign(tail,SubString(S,i+Strlen(T),Strlen(S)-i-Strlen(T)+1));
StrAssign(S,Concat(head,V));
StrAssign(S,Concat(S,tail));
//把head,V,tail连接为新串
i+=Strlen(V);
//当前指针跳到插入串以后
n++;
}//if
returnn;
}//Replace
分析:
这一句是必需的,也是容易忽略的.如省掉这一句,则在某些情况下,会引起不希望的后果,虽然在大多数情况下没有影响.请思考:
设S='
place'
T='
ace'
V='
face'
则省掉i+=Strlen(V);
运行时会出现什么结果?
(无限递归face)
XX2005年的笔试题
1.实现voiddelete_char(char*str,charch);
把str中所有的ch删掉
2.把字符串S中所有A子串换成B,这个没给函数原型
3.搜索引擎的日志要记录所有查询串,有一千万条查询,不重复的不超过三百万
要统计最热门的10条查询串.内存<
1G.字符串长0-255
(1)主要解决思路//具体用词和原题不大一样
(2)算法及其复杂度分析
4.有字典,设计一个英文拼写纠正算法
(1)思想
(2)算法及复杂度(3)改进
5.{aaa,bb,ccc,dd},{bbb,ff},{gg}等一些字符串的集合
要求把交集不为空的集合并起来,如上例会得到{aaa,bb,ccc,dd,ff},{gg}
(1)思想
(2)算法及复杂度(3)改进
2006XX笔试题
一、选择题:
15分共10题
1.一个含有n个顶点和e条边的简单无向图,在其邻接矩阵存储结构中共有____个零元素。
A.e B.2e C.n2-e D.n2-2e
2.____是面向对象程序设计语言中的一种机制。
这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。
A.继承(Inhertance)B.模板(Template)
C.对象的自身引用(Self-Reference)D.动态绑定(DynamicBinding)
3.应用层DNS协议主要用于实现网络服务功能.
A.IP地址到网络设备名字的映射B.IP地址到网络硬件地址的映射
C.网络设备名字到IP地址的映射D.网络硬件地址到IP地址的映射
4.linux默认情况下,一个进程最多能打开多少文件?
A.64B.128C.512D.1024
5.下面结构体
structs1{
charch,*ptr;
union{
shorta,b;
unsignedintc:
2,d:
1;
}
structs1*next;
};
的大小是_____:
A.12字节B.16字节C.20字节D.24字节
6.任何一个基于"
比较"
的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。
A.10B.11C.21D.36
7.以下不是进程间通讯的是___
A共享内存B信号量C线程局部存储D消息队列
8.下面程序,求count的值
intfunc(x)
intcount=0;
x=9999;
while(x)
Count++;
x=x&
(x-1);
returncount;
A8;
B10;
C5;
D11
9.使用malloc系统调用分配的内存是在____上分配的?
A栈;
Bbss;
C物理内存;
D堆
10.最坏情况下,合并两个大小为n的已排序数组所需要的比较次数_____
A.2nB.2n-1C.2n+1D.2n-2
二、简答题:
20分,共3题
1.(5分)下面这段代码是把中英文混合字符串(汉字用两个字节表示,特点是第一个字节的最高位为1)中的大写字母转化为小写字母,请找出其中的bug,注意各种异常情况。
for(char*piterator=szWord;
*piterator!
=0;
piterator++)
if(*piterator&
0x80!
=0)
piterator++;
elseif(*piterator>
='
A'
&
&
*piterator<
Z'
)
piterator+=32;
2.(5分)对给定的上亿条无序的url,请按照domain、site以及path分别排序,并请指出排序过程中可能会遇到的哪些问题?
如何提高效率?
例如:
Domain:
Site:
Path:
3.(10分)某型CPU的一级数据缓存大小为16K字节,cache块大小为64字节;
二级缓存大小为256K字节,cache块大小为4K字节,采用二路组相联。
经测试,下面两段代码运行时效率差别很大,请分析哪段代码更好,以及可能的原因。
为了进一步提高效率,你还可以采取什么办法?
A段代码
intmatrix[1023][15];
constchar*str="
thisisastr"
;
inti,j,tmp,sum=0;
tmp=strlen(str);
for(i=0;
i<
1023;
i++){
for(j=0;
j<
15;
j++){
sum+=matrix[j]+tmp;
B段代码
intmatrix[1025][17];
inti,j,sum=0;
17;
1025;
sum+=matrix[j]+strlen(str);
三、编程题:
30分共1题
注意:
要求尽可能提供完整代码,如果可以编译运行酌情加分。
1.内存中有一个长数组,条目数为10万,数组单元为结构体structarray,sizeof(structarray)为512字节。
结构有一int型成员变量weight。
现需要取得按weight值从大到小排序的前500个数组单元,请实现算法,要求效率尽可能高。
四、设计题:
35分共1题
请尽可能详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者流程说明。
1.请设计一个字典。
以字符串为索引,存储用户定义的定长结构。
要求有增、删、查、改的功能。
已经给定一个函数,可以由字符串映射到一个签名,每个签名由两个unsignedint类型组成。
假设每一个字符串能够对应唯一的一个签名,完全没有重复(或者重复的概率可以