腾讯2011笔试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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存放在这个磁道上,记录的安排顺序

如下表所示:

物理块12345678910逻辑记录R1R2R3R4R5R6R7R8R9R10

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

则处理这10个记录的最长时间为(C)

A、180ms

B、200ms

C、204ms

D、220ms

2+4+((2+4)+2*8)*9=204

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

私有IP地址共有三个范围段:

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/*=

C、

XABCD-*E/+=D、XABCDE+*/=

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

A、Singleton(单例)

B、 Bridge(桥接)

C、 Composite(组合)

D、Facade(外观)

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

void Func(char str_arg[100])

{

printf("%d\n",sizeof(str_arg));

}

int main(void)

{

char str[]="Hello";

printf("%d\n",sizeof(str));

printf("%d\n",strlen(str));

char *p = str;

printf("%d\n",sizeof(p));

Func(str);

}

输出结果为:6 5 4 4

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

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

10、C++将父类的析构函数定义为虚函数,下列正确的是哪个?

A、释放父类指针时能正确释放子类对象

B、释放子类指针时能正确释放父类对象

C、这样做是错误的

D、以上全错

C++的多态肯定是使用父类的指针指向子类的对象,所以肯定是释放子类的对象,如果不使用虚函数的话,父类的指针就只能够释放父类的对象。

11、下列哪一个不属于关系数据库的特点?

A、数据冗余度小

B、数据独立性高

C、数据共享性好

D、多用户访问

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

void Func(char str_arg[2])

{

int m = sizeof(str_arg); //指针的大小为4

int n = strlen(str_arg); //对数组求长度,str_arg后面的那个2没有任何意义,数组已

经退化为指针了

printf("%d\n",m);

printf("%d\n",n);

}

int main(void)

{

char str[]="Hello";

Func(str);

}

输出结果为: 4 5

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

13、typedef char *String_t; 和#define String_d char * 这两句在使用上有什么区别?

答:typedef char *String_t 定义了一个新的类型别名,有类型检查。而#define String_d char * 只是做了个简单的替换,无类型检查,前者在编译的时候处理,后者在预编译的时候处理。

同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t a,b; String_d c,d; a,b ,c都是char*类型,而d为char类型

由于typedef还要做类型检查。。#define没有。。所以typedef比#define安全。。

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

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

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

//rand7 产生的数概率是一样的,即1~7出现概率一样,由于我们对结果做了一定的筛选只能通过1~5,而1~5出现的概率也是一样的,又由于范围为1~5 所以temp1 出现1~5的概率为1/5 ,同理后面的出现temp2 的概率为1/2

//首先temp1出现在1~5的概率为1/5,而temp2出现1~2 的概率为1/2,也就是说5*(temp2-1) 出现5或0的概率为1/2,所以假如你要得到1~5的数的话那么5*(temp2-1)必须0,所以因为你要保证5*(temp2-1)=0,这个概率只有1/2,再加上你前面指定1~5 的概率为1/5 ,所以结果为1/5*1/2=1/10

int rand10()

{

int temp1;

相关文档
最新文档