腾讯2011.10.15校园招聘会笔…

来源:互联网 发布:网络上最近挺火的歌曲 编辑:程序博客网 时间:2024/05/16 10:41
原文地址:腾讯2011.10.15校园招聘会笔试题作者:踏月留香
 

腾讯2011.10.15校园招聘会笔试题

1、下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是(B

A、插入排序                      B、堆排序                   C、冒泡排序                    D、快速排序

2、以下关于Cache的叙述中,正确的是(B

A、CPU中的Cache容量应大于CPU之外的Cache容量

B、Cache的设计思想是在合理成本下提高命中率

C、Cache的设计目标是容量尽可能与主存容量相等

D、在容量确定的情况下,替换算法的时间复杂度是影响Cache命中率的关键因素

3、数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1------R10存放在这个磁道上,记录的安排顺序如下表所示:

物理块

1

2

3

4

5

6

7

8

9

10

逻辑记录

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

假设磁盘的旋转速度为20ms/周,磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内,处理数据的时间为4ms(然后再读取下个记录),则处理这10个记录的最长时间为(C

A、180ms                          B、200ms                          C、204ms                            D、220ms

4、随着IP网络的发展,为了节省可分配的注册IP地址,有一些地址被拿出来用于私有IP地址,以下不属于私有IP地址范围的是(C

A、10.6.207.84                             B、172.23.30.28                     C、172.32.50.80              D、192.168.1.100

A:    10.0.0.0~10.255.255.255 /8  B:     172.16.0.0~172.31.255.255 /12  C:  192.168.0.0~192.168.255.255 /16

5、下列关于一个类的静态成员的描述中,不正确的是(D

A、该类的对象共享其静态成员变量的值                             B、静态成员变量可被该类的所有方法访问                 

C、该类的静态方法只能访问该类的静态成员变量                 D、该类的静态数据成员变量的值不可修改

6、已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散列地址,并散列存储在散列表A【0....6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为(C

A、1.5                 B、1.7                           C、2.0                      D、2.3

依次进行取模运算求出哈希地址:

A

0

1

2

3

4

5

6

记录

63

48

 

38

25

74

52

查找次数

1

3

 

1

1

2

4

74应该放在下标为4的位置,由于25已经放在这个地方,所以74往后移动,放在了下标为5的位置上了。

由于是等概率查找,所以结果为:1/6*(1+3+1+1+2+4)= 2.0

7、表达式“X=A+B*(C--D)/E”的后缀表示形式可以为(C

A、XAB+CDE/-*=                    B、XA+BC-DE=

8、(B)设计模式将抽象部分与它的实现部分相分离。

A、Singleton(单例)                                     B、 Bridge(桥接)                     

C、 Composite(组合)                                   D、Facade(外观)

9、下面程序的输出结果为多少?

view plain
  1. void Func(char str_arg[100])  
  2.  
  3.     printf("%dn",sizeof(str_arg));  
  4.  
  5.   
  6. int main(void 
  7.  
  8.     char str[]="Hello" 
  9.     printf("%dn",sizeof(str));  
  10.     printf("%dn",strlen(str));  
  11.     char *p str;  
  12.     printf("%dn",sizeof(p));  
  13.     Func(str);  
  14.  

输出结果为:6         4

对字符串进行sizeof操作的时候,会把字符串的结束符“”计算进去的,进行strlen操作求字符串的长度的时候,不计算的。

数组作为函数参数传递的时候,已经退化为指针了,Func函数的参数str_arg只是表示一个指针,那个100不起任何作用的。

10、下面程序的输出结果为多少?

view plain
  1. void Func(char str_arg[2])  
  2.  
  3.     int sizeof(str_arg);     //指针的大小为4  
  4.     int strlen(str_arg);     //对数组求长度,str_arg后面的那个2没有任何意义,数组已经退化为指针了  
  5.     printf("%dn",m);  
  6.     printf("%dn",n);  
  7.  
  8. int main(void 
  9.  
  10.     char str[]="Hello" 
  11.     Func(str);  
  12.  

输出结果为:            5

strlen只是对传递给Func函数的那个字符串求长度,跟str_arg中的那个2是没有任何关系的,即使把2改为200也是不影响输出结果的。。

11、到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少?

12、题目:已知rand7() 可以产生1~7 的7个数(均匀概率),利用rand7() 产生rand10()  1~10(均匀概率)

记住这道题重点是:均匀概率

view plain
  1. int rand10()  
  2.  
  3.     int temp1;  
  4.     int temp2;  
  5.     do  
  6.      
  7.         temp1 rand7();  
  8.     }while(temp1>5);  
  9.     do  
  10.      
  11.         temp2 rand7();  
  12.     }while(temp2>2);  
  13.     return temp1+5*(temp2-1);  
  14.  

算法编程题:

1、给定一个字符串,求出其最长的重复子串。
思路:使用后缀数组,对一个字符串生成相应的后缀数组后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。
这样的时间复杂度为:

生成后缀数组 O(N)
排序 O(NlogN*N) 最后面的 N 是因为字符串比较也是 O(N)
依次检测相邻的两个字符串 O(N * N)
总的时间复杂度是 O(N^2*logN)