传说中的百度笔试题

 

一、选择题:15分 共10题
1.    已知一个线性表(38,25,74,63,52,48),采用的散列函数为Hash($Key)=$Key mod 7,将元素散列到表长为7的哈希表中存储。请选择后面两种冲突解决方法分别应用在该散列表上进行等概率成功查找的平均查找长度,拉链法   ,线性探测法    .
A. 1.0            B. 1.5           C. 1.7           D. 2.0          E. 2.3        
F. 7/6            G. 4/3           H. 3/2

2.    需要将OS缓冲区的数据刷新到硬盘,可以调用的函数有(多选):
A.fflush()     B. fsync()       C. sync()        D.writev()

3.    下面哪个shell语句不能打印出用户主目录的路径?
A. echo “$HOME”              B. echo ~       
C. echo `$HOME`              D. echo $HOME

4.    最坏情况下,合并两个大小为n的已排序数组所需要的比较次数 
A.2n              B.2n-1            C.2n+1             D.2n-2

5.    一个B类网的子网掩码是255.255.240.0,这个子网能拥有的最大主机数是:
A. 240           B. 255            C.4094           D. 65534

6.    以下代码执行后,val的值是___:
unsigned long val = 0;
char a = 0x48;
char b = 0x52;
val = b << 8 | a;
A  20992        B  21064         C   72            D 0

7.    内存的速度远远高于磁盘速度,所以为了解决这个矛盾,可以采用:
A 并行技术       B 虚存技术         C 缓冲技术        D 通道技术

8.    以下代码打印的结果是(假设运行在i386系列计算机上):
    struct st_t
    {
        int    status;
        short* pdata;
        char   errstr[32];
    };

    st_t  st[16];
    char* p = (char*)(st[2].errstr + 32);
    printf("%d", (p - (char*)(st)));

A   32             B 114
C   120            D 1112

9.    同一进程下的线程可以共享以下
A. stack            B. data section
C. register set        D. thread ID

10.    以下哪种操作最适合先进行排序处理? 
A 找最大、最小值                B 计算算术平均值 
C 找中间值                      D 找出现次数最多的值

二、简答题:20分,共2题

1.    (6分)下面是一个http请求:
    GET /baidu/blog/item/6605d1b4eb6433738ad4b26d.html HTTP/1.1
    Host: hi.baidu.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language: zh-cn,zh;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://hi.baidu.com/baidu
    Cookie: BAIDUID=AFB70E986AC48B336ABAB7505CDD1C76; 
    
    请解释以下各字段基本含义: Host、User-Agent、Accept-Charset、Connection、Referer、Cookie
 

2.    (14分)函数A将字符串str1转成小写,并打印出转化前后的字符串。另外,改错时不能改变函数的接口和主要思路。改错时,请指出行号。
1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4
 5 char*   str1   = "ABDFLjlero我们都是saf";
 6
 7 char*  ToLower(char s[])
 8 {
 9     static size_t i=sizeof(s);
10     
11     for (i; i>=0; i--) {
12         if (s[i]>"A" && s[i]<"Z") {
13             s[i] += 26;
14         }
15     }
16     return s;
17 }
18
19 int A()
20 {
21     printf("old str[%s] after lower[%s]n", str1, ToLower(str1));
22 }

三、编程题:30分 共1题
注意:要求提供完整代码,如果可以编译运行酌情加分。

1.    两个已排序的整型数组,求交集,最快算法
输入:两个已排序的整型数组(int a[m], b[n])
输出:两个数组的交集

四、设计题:35分 共1题
注意:请尽可能详细描述你的数据结构、系统架构、设计思路等。建议多写一些伪代码或者流程说明。
1.    考虑一个字符串替换的过程,在一个文本文件中含有一些文本内容和一些需要替换的变量,变量的格式为“$Var$”,原来的“$”使用“$$”进行转义,原 来的“$$”表示为“$$$”。我们将含有变量的文件称为模板(文件名为t),文本文件的平均长度为100K。另外,还有一系列的变量文件,里面为变量名 和变量值的对应关系(文件名为1.v , 2.v… n.v),每个变量文件包含的变量数在百万数量级,且变量排列次序不定。现要求将,模板里的变量分别用变量文件里的变量替换,并将生成的文件写成 (1.r, 2.r… n.r)。
要求:从算法和实现上和实现技术上的细节对程序进行优化,尽量使程序高效。程序运行环境为2G内存,4CPU。阐明主要思路,给出伪码和说明,可以着重指出你使用的优化技术。
例子:模板文件为
This is an $FF$ $$. I like $FF$ and $FA$。
变量文件为
1.v
FF : banana
FA : apple
2.v
FA: 苹果
FF : 香蕉
则生成文件为
1.r
This is an banana $$. I like banana and apple。
2.r
This is an香蕉 $$. I like 香蕉and苹果。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值