百度笔试题

百度2008年校园招聘武汉大学站笔试题(技术类)(2007.9.19独家提供) 不定项选择题。 线程与进程比较而言,下面论述成立的有() A. 一个线程可以有多个进程组成 B. 一个进程可以有多个线程组成 C. 相对而言,线程运行需要更多的资源 D. 线程比进程运行需要更少的系统资源 2.13*16=244在使用_______进制时成立() A.6 B.11 C.9 D.7 E.8 3.以下的C程序代码片段运行后C和d的值分别是多少() Int a =1,b =2; Int c,d; C =(a&b)&&a; d =(a&&b)&a; A.0,0 B.0,1 C.1,0 D.1,1 4.假设局域网中子网掩码是255.255.0.0,那么在这个局域网中哪些IP地址是可用的?() A.192.168.0.0 B.192.168.0.1 C.192.168.255.1 D.192.168.255.255 5.给定数列(541,132,982,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用冒泡排序时,第一趟扫描结果是();采用直接选择大值开始排序时,第一趟扫描结果是();采用快速排序(以中间元素518为基准)的第一趟扫描结果是()。 A.(541,132,827,746,518,181,946,314,205,984) B.(205,132,314,181,518,746,946,984,541,827) C.(132,541,746,984,181,518,314,946,205,827) 6.有若干5g和7g的砝码,任何大于()克都能够用5g和7g的砝码组合出。 A.35 B.23 C.12 D.53 7.93486781634*22349659874=___________6(30秒) 8.在Linux系统中,对命令“In file 1 file2”描述正确的是?() A.建立软链接file1,并指向file2 B. 建立硬链接file1,并指向file2 C. 建立软链接file2,并指向file1 D. 建立硬链接file2,并指向file1 9.在Shell编程中,下面哪个表示上一步所运行程序的返回值?() A. $# B. $(后一字符打不出来可以描述一下‘S下面在加一点’) C. $& D. $! 编程和测试设计题(2道) (一) 简述:实现一个函数,对一个正整数n,算得到1需要的最少操作次数: 如果n为偶数,将其处以2; 如果n为奇数,可以加1或减1; 一直处理下去。 例子: ret = func(7); ret = 4,可以证明最少需要4次运算 n = 7 n--6 n/2 3 n/2 2 n++ 1 要求:实现函数(实现尽可能高效) Int func(unsign int n);n为输入,返回最小的运算次数。 给出思路(文字描述),完成代码,并分析你算法的时间复杂度。 请列举测试方法和思路 (二) 简述:IP防火墙 Security公司的网络管理工程师Mr. leak最近发现有不少来自公司外部IP的请求,试图非法访问公司内部资源,为了不影响数据访问流程。他不得不写一个高效的程序——一个工作在Ipv4上的防火墙,如果请求来自非授权的ip地址,则将请求丢弃。为了便于管理,通过文本文件IP.TXT来配置授权的IP地址,文件格式为每行(’/n’)一个IP地址(或IP段),范围不超过一个B类。例如: 162.105.91.163 59.66.105.0 59.66.105.255 211.71.0.0 211.71.255.255 限制:IP段的起止地址间以空格隔开。文件不超过10万行,内存不超过4M字节。 要求:请编写一个程序,读入IP.TXT文件。并从标准输入接受一个IP地址。如果该地址在授权范围内,则在标准输出上打印Y,否则打印N.如果输入为一个空行,程序结束。 请给出思路(文字描述),完成代码,分析你采用算法的优劣。 请列举测试方法和思路 设计思考题(2道,请选做一道) (三) 设计一个简单的网页抓取系统,目标是抓取z.baidu.com站点上的有价值网页。 1) 请设计基本模型,并做出简要说明。 请考虑如何获取网页、如何存储网页、如何判断网页的价值。。。。。。。。 2) 实际应用中,需要考虑哪些因素。 (四) 简述:某广告投放系统采用B/S结构,其主要用户为广告主,广告主可通过该广告投放系统在各个网站上投放广告并查看投放效果。该广告系统需要实现如下功能: 1) 用户可向自己账户中加款。 2) 用户可提交广告,广告包括四种形式:文字广告,图片广告,flash广告和对媒体广告。 3) 用户可制定哪些广告在哪些网站上展现,用户可分别广告在制定网站上的点击单价 4) 广告被点击时,直接从用户账户中扣除相应的钱款 5) 用户账户余额不足时,所有广告失效,用户加款后,恢复生效。 6) 用户可查询广告的每日消费情况(点击次数、消费额)、广告在各个网站的消费情况。 要求:1)设计该系统的数据表结构,要求满足上述功能,结构清晰,并尽可能灵活。 2)写出功能6所涉及的SQL语句 3)请分析随着广告主的增加、广告点击次数的增长,系统可能会在哪些方面出项性能瓶颈?你在设计时是如何考虑解决这些瓶颈的?潜在的性能瓶颈还有哪些? 传说中的百度笔试题(转载) :lancen :2007年3月27日一、选择题: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 2 #include 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苹果。 百度笔试题 :lancen :2007年3月27日一、选择题:15 分 共 10 题 1. 在排序方法中,关键码比较次数与记录地初始排列无关的是: A. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序 2. 以下多线程对 int 型变量x的操作,哪几个需要进行同步: A. x=y; B. x++; C. ++x; D. x=1; 3. 代码 void func() {   static int val;   … } 中,变量 val 的内存地址位于: A. 已初始化数据段 B.未初始化数据段 C.堆 D.栈 4. 同一进程下的线程可以共享以下: A. stack B. data section C. register set D. thread ID 5. TCP 和 IP 分别对应了 OSI 中的哪几层? A. Application layer B. Data link layer C. Presentation layer D. Physical layer E. Transport layer F. Session layer G. Network layer 6. short a[100],sizeof(a) 返回? A. 2 B. 4 C. 100 D. 200 E. 400 7. 以下哪种不是基于组件的开发技术_____。 A. XPCOM B. XP C. COM D. CORBA 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. STL 中的哪种结构是连续形式的存储: A. map B. set C. list D. vector 10. 一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是: A. EDCBA B. DECBA C. DCEAB D. ABCDE 二、简答题:20 分,共 2 题 1. (5 分)重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。 2. (15 分)下面一段代码,想在调用 f2(1) 时打印 err1,调用 f2(2) 时打印 err4,但是代码中有一些问题,请做尽可能少的修改使之正确。 1 static int f1( const char *errstr, unsigned int flag ) { 2   int copy, index, len; 3   const static char **__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 19 void f2( int c ) { 20   char *err; 21 22   swtch( c ) { 23   case 1: 24     if( f1( err, 0x110004 ) != -1 ) 25       printf( err ); 26   case 2: 27     if( f2( err, 0x30000D ) != -1 ) 28       printf( err ); 29   } 30 } 三、编程题:30 分 共 1 题注意:要求提供完整代码,如果可以编译运行酌情加分。 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 个。 为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。如果系统数据量扩大,该如何多机分布处理?

你可能感兴趣的:(百度,file,数据结构,layer,url,算法)