一份腾讯2011笔试题

考的就是计算机基础
服务器君一共花费了417.385 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

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/*= 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. 下面程序的输出结果为多少?

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也是不影响输出结果的。

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

12. 题目:已知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;  
    int temp2;  
    do  
    {  
        temp1 = rand7();  
    }while(temp1>5);  
    do  
    {  
        temp2 = rand7();  
    }while(temp2>2);  
    return temp1+5*(temp2-1);  
}  

13. 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

算法编程题:给定一个字符串,求出其最长的重复子串。

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

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

本文地址:http://www.nowamagic.net/librarys/veda/detail/217,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/217

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《C程序设计语言(第2版新版)》 克尼汉 (作者), 等 (作者, 译者), 徐宝文 (译者)

《C程序设计语言》(第2版新版)是由C语言的设计者Brian W.Kernighan和Dennis M.Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念,类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。

更多计算机宝库...