【网络综合 - 校园招聘试题】

一、选择题:15 分 共 10 题

1. 在排序方法中,关键码比较次数与记录地初始排列无关的是:

A. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序

选择 A

2. 以下多线程对 int 型变量x的操作,哪几个需要进行同步:

A. x=y; B. x++; C. ++x; D. x=1;

选择 B, C

3. 代码

void func()

{

static int val;

}

中,变量 val 的内存地址位于:

A. 已初始化数据段 B.未初始化数据段 C.堆 D.栈

选择 A

4. 同一进程下的线程可以共享以下:

A. stack B. data section C. register set D. thread ID

选择 A, B

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

选择 EG

6. short a[100],sizeof(a) 返回?

A. 2 B. 4 C. 100 D. 200 E. 400

选择 D

7. 以下哪种不是基于组件的开发技术_____。

A. XPCOM B. XP C. COM D. CORBA

选择 B

8. 以下代码打印的结果是(假设运行在 i386 系列计算机上):

字串2

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

选择 C,因为st[2]的起始地址比st[0]的起始地址高80位,

st[2].errstr的起始地址比st[2]的起始地址高8位

再加上32位就等于 120.

9. STL 中的哪种结构是连续形式的存储:

A. map B. set C. list D. vector

选择 D

10. 一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是:

A. EDCBA B. DECBA C. DCEAB D. ABCDE

选择 C

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

1. (5 分)重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。

导致 fp 所指的文件被多次释放, 导致不可预期的后果.

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

选择 B,b 的十进制为 82,二进制为 101,0010

b 左移 8 位为 101,0010,0000,0000

a 的十进制为 72, 二进制为 100,1000

b<<8 | a 为 21064

7. 内存的速度远远高于磁盘速度,所以为了解决这个矛盾,可以采用:

字串2

A 并行技术 B 虚存技术 C 缓冲技术 D 通道技术

9. 同一进程下的线程可以共享以下

A. stack

k B. data section

C. register set D. thread ID

选择 B,C

10. 以下哪种操作最适合先进行排序处理?

A 找最大、最小值 B 计算算术平均值

C 找中间值 D 找出现次数最多的值

选择 A

一、选择题: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 题

#p#副标题#e#

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, __e

rr[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 题

#p#副标题#e#

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

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 个。

为获得最佳性能,请说明设计的数据结构、搜索算法,以及资源消耗。如果系统数据量扩大,该如何多机分布处理?

[ 结 束 ]

编程是一种快乐,享受代码带给我的乐趣!!!