发布于 2015-08-30 03:27:32 | 346 次阅读 | 评论: 1 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

百度(Baidu)中文搜索引擎

百度(Nasdaq简称:BIDU)是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。


一、选择题:15分 共10题

   1. 一个含有n个顶点和e条边的简单无向图,在其邻接矩阵存储结构中共有____个零元素。

   A.e    B.2e    C.n2-e   D.n2-2e

   2. ____是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。

   A.继承(Inhertance) B.模板(Template)

   C.对象的自身引用(Self-Reference) D.动态绑定(Dynamic Binding)

   3. 应用层DNS协议主要用于实现 网络服务功能.

   A. IP地址到网络设备名字的映射 B. IP地址到网络硬件地址的映射

   C. 网络设备名字到IP地址的映射 D. 网络硬件地址到IP地址的映射

   4. linux默认情况下,一个进程最多能打开多少文件?

   A.64 B. 128 C. 512 D. 1024

   5. 下面结构体

   struct s1 {

   char ch, *ptr;

   union {

   short a, b;

   unsigned int c:2, d:1;

   }

   struct s1 *next;

   };

   的大小是_____:

   A. 12字节 B.16字节 C.20字节 D. 24字节

   6. 任何一个基于“比较”的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。

   A.10 B.11 C.21 D.36

   7. 以下不是进程间通讯的是___

   A 共享内存 B 信号量 C线程局部存储 D 消息队列

   8. 下面程序,求count的值

   int func(x)

   {

   int count= 0;

   x=9999;

   while(x)

   {

   Count ++;

   x = x&(x-1);

   }

   return count;

   }

   A 8; B 10; C 5; D 11

   9. 使用malloc系统调用分配的内存是在____ 上分配的?

   A 栈; B bss; C 物理内存; D 堆

   10. 最坏情况下,合并两个大小为n的已排序数组所需要的比较次数_____

   A.2n B.2n-1 C.2n+1 D.2n-2

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

   1. (5分)下面这段代码是把中英文混合字符串(汉字用两个字节表示,特点是第一个字节的最高位为1)中的大写字母转化为小写字母,请找出其中的bug,注意各种异常情况。

   for (char *piterator = szWord; *piterator != 0; piterator++)

   {

   if (*piterator & 0x80 != 0)

   {

   piterator++;

   }

   else if (*piterator >= 'A' && *piterator <= 'Z')

   *piterator += 32;

   }

   2. (5分)对给定的上亿条无序的url,请按照domain、site以及path分别排序,并请指出排序过程中可能会遇到的哪些问题?如何提高效率?

   例如:http://www.baidu.com/path/about.html,domain、site以及path的定义分别如下:

   Domain:baidu.com

   Site:www.baidu.com

   Path: www.baidu.com/path

   3. (10分)某型CPU的一级数据缓存大小为16K字节,cache块大小为64字节;二级缓存大小为256K字节,cache块大小为4K字节,采用二路组相联。经测试,下面两段代码运行时效率差别很大,请分析哪段代码更好,以及可能的原因。

   为了进一步提高效率,你还可以采取什么办法?

   A段代码

   int matrix[1023][15];

   const char *str = "this is a str";

   int i, j, tmp, sum = 0;

   tmp = strlen(str);

   for(i = 0; i < 1023; i++) {

   for(j = 0; j < 15; j++) {

   sum += matrix[i][j] + tmp;

   }

   }

   B段代码

   int matrix[1025][17];

   const char *str = "this is a str";

   int i, j, sum = 0;

   for(i = 0; i < 17; i++) {

   for(j = 0; j < 1025; j++) {

   sum += matrix[j][i] + strlen(str);

   }

   }

三、编程题:30分 共1题

   注意:要求尽可能提供完整代码,如果可以编译运行酌情加分。

   1. 内存中有一个长数组,条目数为10万,数组单元为结构体struct array,sizeof(struct array)为512字节。结构有一int型成员变量weight。现需要取得按weight值从大到小排序的前500个数组单元,请实现算法,要求效率尽可能高。

四、设计题:35分 共1题

   注意:请尽可能详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者流程说明。

   1. 请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的功能。已经给定一个函数,可以由字符串映射到一个签名,每个签名由两个unsigned int类型组成。假设每一个字符串能够对应唯一的一个签名,完全没有重复(或者重复的概率可以忽略),并且签名分布足够均匀。

   请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?如果操作很频繁,该如何优化?

   ///////////////

   有一个数据库,用一张表存储了某超市的历史销售记录,这个表中包含如下数据信息:商品大类、商品小类、商品编号、商品名称、供应商编号、供应商名称、入库时间、入库价格、批次、当批入库总量、目前库存量、销售时间、商品单价、销售数量、付款方式、销售金额、是否优惠、优惠金额、销售柜台号、销售终端号、销售人员姓名等。

   (1)请把数据表拆分成符合第三范式的多个表(写出表的结构定义SQL语句);

   (2)根据拆分后的结构,写出如下统计SQL语句:

   某种商品的总销售额;

   某个供应商的总交易次数;

   每月每个商品大类的销售额排名;

   (3)如果对该表的操作主要是如(2)所要求的数据统计。在数据量非常大的情况下,上述统计会出现效率问题,要更快的得到上述数据统计的结果,都有哪些思路和办法?如果你面对这样一个需求,会采取什么样的设计,或者对现有的设计进行怎样的改进?



最新网友评论  共有(1)条评论 发布评论 返回顶部
PHPERZ网友 发布于2015-09-27 08:17:23
不错,顶了。
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务