百度笔试题

  一、选择题: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分别排序,并请指出排序过程中可能会遇到的哪些问题?如何提高效率?

  例如:,domain、site以及path的定义分别如下:

  domain:

  site:

  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个数组单元,请实现算法,要求效率尽可能高。

本文已影响6827
上一篇:2014埃森哲的笔试 下一篇:安信笔试题目

相关文章推荐

|||||