首页 > 经典文章 > 经典美文 > 腾讯笔试题

腾讯笔试题

时间:2018-06-29   来源:经典美文   点击:

【www.gbppp.com--经典美文】

腾讯笔试题 第一篇_2016腾讯笔试题

2016腾讯笔试题

2016腾讯笔试题

试卷类型:软件开发A1

考试时长:12分钟

一 不定项选择题(共25题,每题4分,共1分,少选、错选、多选均不得分)

1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)

A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA

2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)

A.有序数组 B.有序链表 C.AVL树 D.Hash表

3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)

A.快速排序 B.堆排序 C.归并排序 D.冒泡排序

4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)

A.8 3 2 5 1 6 4 7

B.3 2 8 5 1 4 6 7

C.3 8 2 5 1 6 7 4

D.8 2 3 5 1 4 7 6

5 当n=5时,下列函数的返回值是:(A)

[cpp] view plaincopy

int foo(int n)

if(n<2)return n;

return foo(n-1)+foo(n-2);

A.5 B.7 C.8 D.1

6S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为.1%,B区为.15%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)

A.37.5% B.32.5% C.28.6% D.(面试题目:什么样的工作环境适合你)26.1%

7Unix系统中,哪些可以用于进程间的通信?(BCD)

A.Socket B.共享内存 C.消息队列 D.信号量

8 静态变量通常存储在进程哪个区?(C)

A.栈区 B.堆区 C.全局区 D.代码区

9 查询性能(B)

A. 在Name字段上添加主键

B. 在Name字段上添加索引

C. 在Age字段上添加主键

D. 在Age字段上添加索引

1IP地址131.153.12.71是一个(B)类IP地址。

A.A B.B C.C D.D

11 下推自动识别机的语言是:(C)

A. 型语言 B.1型语言 C.2型语言 D.3型语言

12 下列程序的输出是:(D)

[cpp] view plaincopy

#define add(a+b) a+b

int main()

printf("%d\n",5*add(3+4));

return ;

A.23 B.35 C.16 D.19

13 浏览器访问某页面,HTTP协议返回状态码为43时表示:(B)

A 找不到该页面

B 禁止访问

C 内部服务器访问

D 服务器繁忙

14 如果某系统15*4=112成立,则系统采用的是(A)进制。

A.6 B.7 C.8 D.9

15 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:1},使用哈夫曼编码,则哪种是可能的编码:(A)

Aa()b(1)h(1)i(1)o(11)

Ba()b(1)h(1)o(1)i(1)

Ca()b(1)h(1)i(1)o()

Da()b(1)h(1)o()i(1)

16TCP和IP分别对应了OSI中的哪几层?(CD)

AApplication layer

BPresentation layer

CTransport layer

DNetwork layer

17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)

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

【腾讯笔试题】

18 同一进程下的线程可以共享以下?(BD)

A. stack B.data section C.register set D.file fd

19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D)

1:成员对象的构造函数

2:基类的构造函数

3:派生类本身的构造函数

A.123 B.231 C.321 D.213

2 如何减少换页错误?(BC)

A进程倾向于占用CPU

B访问局部性(locality of reference)满足进程要求

C进程倾向于占用I/O

D使用基于最短剩余时间(shortest remaining time)的调度机制

21 递归函数最终会结束,那么这个函数一定?(B)

A 使用了局部变量

B 有一个分支不调用自身

C 使用了全局变量或者使用了一个或多个参数

D 没有循环调用

22 编译过程中,语法分析器的任务是(B)

A分析单词是怎样构成的

B 分析单词串是如何构成语言和说明的

C 分析语句和说明是如何构成程序的

D 分析程序的结构

23 同步机制应该遵循哪些基本准则?(ABCD)

A.空闲让进 B.忙则等待 C.有限等待 D.让权等待

24 进程进入等待状态有哪几种方式?(D)

A CPU调度给优先级更高的线程

B 阻塞的线程获得资源或者信号

C 在时间片轮转的情况下,如果时间片到了

D 获得spinlock未果

25 设计模式中,属于结构型模式的有哪些?(BC)

A状态模式 B装饰模式 C 代理模式 D 观察者模式

二、填空题(共4题1个空,每空2分,共2 分)

1 设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为DQFXAPBNMYCW。【腾讯笔试题】

2 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是QACSQDFXRHMY;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是FHCDQAMQRSYX。

3 二进制地址为111111,大小为(4)1和(16)1块的伙伴地址分别为:_,_。

4 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左、右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N。N2,NL,NR、N都是全局量,且在调用count(t)之前都置为。

[cpp] view plaincopy

typedef struct node

int data;

struct node *lchild,*rchild;

}node;【腾讯笔试题】

int N2,NL,NR,N;

void count(node *t)

腾讯笔试题 第二篇_腾讯笔试题目

腾讯

【2012】

一. 单选题(每题4分,15题,共60分)

1.考虑函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用钟,属于 不合法调用的是:

A hello(5) B.hello(5,8) C.hello(6,"#") D.hello(0,0,"#")

2.下面有关重载函数的说法中正确的是:

A.重载函数必须具有不同的返回值类型 B.重载函数形参个数必须不同

C.重载函数必须有不同的形参列表 D.重载函数名可以不同

3.分析一下程序的运行结果:

#include<iostream.h>

class CBase

{

public:

CBase(){cout<<”constructing CBase class”<<endl;}

~CBase(){cout<<”destructing CBase class”<<endl;}

};

class CSub : public CBase

{

public:

CSub(){cout<<”constructing CSub class”<<endl;}

~CSub(){cout<<”destructing CSub class”<<endl;}

};

void main()

{

CSub obj;

}

A. constructing CSub class B. constructing CBase class

constructing CBase class constructing CSub class

destructing CSub class destructing CBase class

destructing CBase class destructing CSub class

C. constructing CBase class

constructing CSub class

destructing CSub class

destructing CBase class

D. constructing CSub class

constructing CBase class

destructing CBase class

destructing CSub class

4.在一个cpp文件里面,定义了一个static类型的全局变量,下面一个正确的描述是:

A.只能在该cpp所在的编译模块中使用该变量

B.该变量的值是不可改变的

C.该变量不能在类的成员函数中引用

D.这种变量只能是基本类型(如int,char)不能是C++类型

5.观察下面一段代码:

class ClassA

{

public:

virtual ~ ClassA(){};

virtual void FunctionA(){};

};

class ClassB

{

public:

virtual void FunctionB(){};

};

class ClassC : public ClassA,public ClassB

{

public:

};

ClassC aObject;

ClassA* pA=&aObject;

ClassB* pB=&aObject;

ClassC* pC=&aObject;

关于pA,pB,pC的取值,下面的描述中正确的是:

A.pA,pB,pC的取值相同. B.pC=pA+pB

C.pA和pB不相同 D.pC不等于pA也不等于pB

6.参照1.5的代码,假设定义了ClassA* pA2,下面正确的代码是:

A.pA2=static_cast<ClassA*>(pB);

B.void* pVoid=static_cast<void*>(pB);

pA2=static_cast<ClassA*>(pVoid);

C.pA2=pB;

D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));

7.参照1.5的代码,下面那一个语句是不安全的:

A.delete pA B.delete pB C.delete pC

8.下列程序的运行结果为:

#include<iostream.h>

void main()

{

int a=2;

int b=++a;

cout<<a/6<<endl;

}

A.0.5 B.0 C0.7 D.0.6666666-

9.有如下一段代码:

#define ADD(x,y) x+y

int m=3;

m+=m*ADD(m,m);

则m的值为:

A.15 B.12 C.18 D.58

10.如下是一个带权的图,图中结点A到结点D的关键路径的长度是:

A.13 B.15 C.28 D.58

11.下面的模板声明中,正确的是:

A.template<typename T1,T2>

B.template<class T1,T2>

C.template<class T1,class T2>

D.template<typename T1;typename T2>

12.在Windows编程中下面的说法正确的是:

A.两个窗口,他们的窗口句柄可以是相同的 B.两个窗口,他们的处理函数可以是相同 的

C.两个窗口,他们的窗口句柄和窗口处理函数都不可以相同.

13.下面哪种情况下,B不能隐式转换为A?

A.class B:public A{} B.class A:public B{}

C.class B{operator A();} D.class A{A(const B&);}

14.某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情 况下,下面描述错误的是”该防火墙能够( )”.

A.使公司员工只能访问Internet上与其业务联系的公司的IP地址.

B.仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.

C.使员工不能直接访问FTP服务器端口号为21的FTP地址.

D.仅允许公司中具有某些特定IP地址的计算机可以访问外部网络

15.数字字符0的ASCII值为48,若有以下程序:

main()

{

char a=’1’,b=’2’;

printf(“%c,”,b++);

printf(“%d\n”,b-a);

}

程序运行之后的输出结果是:

A.3,2 B.50,2 C.2,2 D.2,50

二. 填空题(共40分)

本程序从正文文件text.in读入一篇英文短文,统计该短文中不同单词和它的出现次数,并 按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.

程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历 该二叉树,将遍历经过的二叉树上的节点的内容输出.

程序中的外部函数

int getword(FILE* pFile,char* pszWordBuffer,int nBufferLen);

从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无 单词可读时,则返回0.

#include <stdio.h>

#include <malloc.h>

#include <ctype.h>

#include <string.h>

#define SOURCE_FILE "text.in"

#define OUTPUT_FILE "word.out"

#define MAX_WORD_LEN 128

typedef struct treenode

{

char szWord[MAX_WORD_LEN];

int nCount;

struct treenode* pLeft;

struct treenode* pRight;

}BNODE;

int getword(FILE* pFile,char* pasWordBuffer,int nBufferLen);

void binary_tree(BNODE** ppNode,char* pszWord)

{

if(ppNode != NULL && pszWord != NULL)

{

BNODE* pCurrentNode = NULL;

BNODE* pMemoNode = NULL;

int nStrCmpRes=0;

____(1)_____;pCurrentNode=*ppNode

while(pCurrentNode)

{

/*寻找插入位置*/

nStrCmpRes = strcmp(pszWord, ___(2)___ );pCurrentNode- >nCount

if(!nStrCmpRes)

{

___(3)___; pCurrentNode->nCount++

return;

}

else

{

___(4)___; pMemoNode=pCurrentNode

pCurrentNode = nStrCmpRes>0? pCurrentNode- >pRight : pCurrentNode->pLeft;

}

}

}

pCurrent=new BNODE;

if(pCurrentNode != NULL)

{

memset(pCurrentNode,0,sizeof(BNODE));

strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1); pCurrentNode->nCount=1;

}

if(pMemoNode==NULL)

{

___(5)___; *ppNode= pCurrentNode

}

else if(nStrCmpRes>0)

{

pMemoNode->pRight=pCurrentNode;

}

else

{

pMemoNode->pLeft=pCurrentNode;

}

}

void midorder(FILE* pFile,BNODE* pNode)

{

if(___(6)___) return;!pNode||!pFile

midorder(pFile,pNode->pLeft);

fprintf(pFile,"%s %d\n",pNode->szWord,pNode->nCount);

midorder(pFile,pNode->pRight);

}

void main()

{

FILE* pFile=NULL;

BNODE* pRootNode=NULL;

char szWord[MAX_WORD_LEN]={0};

腾讯笔试题 第三篇_腾讯笔试面试题

1、腾讯笔试题:const的含义及实现机制

const的含义及实现机制,比如:const int i,是怎么做到i只可读的?

const用来说明所定义的变量是只读的。

这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。

2、腾讯笔试题:买200返100优惠券,实际上折扣是多少?

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

由于优惠券可以代替现金,所以可以使用200元优惠券买东西,然后还可以获得100元的优惠券。

假设开始时花了x元,那么可以买到 x + x/2 + x/4 + ...的东西。所以实际上折扣是50%.(当然,大部分时候很难一直兑换下去,所以50%是折扣的上限)

如果使用优惠券买东西不能获得新的优惠券,那么总过花去了200元,可以买到200+100元的商品,所以实际折扣为 200/300 = 67%.

3、腾讯笔试题:tcp三次握手的过程,accept发生在三次握手哪个阶段?

accept发生在三次握手之后。

第一次握手:客户端发送syn包(syn=j)到服务器。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。

三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

4、腾讯笔试题:用UDP协议通讯时怎样得知目标机是否获得了数据包

用UDP协议通讯时怎样得知目标机是否获得了数据包?

可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。

发送方在发送数据时将此ID和发送时间记录在本地。

接收方在收到数据后将ID再发给发送方作为回应。

发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。

5、腾讯笔试题:统计论坛在线人数分布

求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。

一天总共有 3600*24 = 86400秒。

定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。

然后依次读入每个用户的登录时间和退出时间,将与登录时间对应的整数值加1,将与退出时间对应的整数值减1。

这样处理一遍后数组中存储了每秒中的人数变化情况。

定义另外一个长度为86400的整数数组int online_num[86400],每个整数对应这一秒的论坛在线人数。 假设一天开始时论坛在线人数为0,则第1秒的人数online_num[0] = delta[0]。第n+1秒的人数online_num[n] = online_num[n-1] + delta[n]。

这样我们就获得了一天中任意时间的在线人数。

6、腾讯笔试题:从10G个数中找到中数 在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。

不妨假设10G个整数是64bit的。

2G内存可以存放256M个64bit整数。

我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。 如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。

7、腾讯笔试题:两个整数集合A和B,求其交集

两个整数集合A和B,求其交集。

1. 读取整数集合A中的整数,将读到的整数插入到map中,并将对应的值设为1。

2. 读取整数集合B中的整数,如果该整数在map中并且值为1,则将此数加入到交集当中,并将在map中的对应值改为2。

通过更改map中的值,避免了将同样的值输出两次。

8、腾讯笔试题:找出1到10w中没有出现的两个数字 有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?

申请10w个bit的空间,每个bit代表一个数字是否出现过。

开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。

然后依次读入已经打乱循序的数字,并将对应的bit设为1。

当处理完所有数字后,根据为0的bit得出没有出现的数字。

首先计算1到10w的和,平方和。

然后计算给定数字的和,平方和。

两次的到的数字相减,可以得到这两个数字的和,平方和。

所以我们有

x + y = n

x^2 + y^2 = m

解方程可以得到x和y的值。

9、腾讯笔试题:需要多少只小白鼠才能在24小时内找到毒药

有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

最容易想到的就是用1000只小白鼠,每只喝一瓶。但显然这不是最好答案。

既然每只小白鼠喝一瓶不是最好答案,那就应该每只小白鼠喝多瓶。那每只应该喝多少瓶呢?

首先让我们换种问法,如果有x只小白鼠,那么24小时内可以从多少瓶水中找出那瓶有毒的?

由于每只小白鼠都只有死或者活这两种结果,所以x只小白鼠最大可以表示2^x种结果。如果让每种结果都对应到某瓶水有毒,那么也就可以从2^x瓶水中找到有毒的那瓶水。那如何来实现这种对应关系呢?

第一只小白鼠喝第1到2^(x-1)瓶,第二只小白鼠喝第1到第2^(x-2)和第2^(x-1)+1到第2^(x-1) + 2^(x-2)瓶....以此类推。

回到此题,总过1000瓶水,所以需要最少10只小白鼠。

10、腾讯笔试题:根据上排的数填写下排的数,并满足要求。

根据上排给出十个数,在其下排填出对应的十个数, 要求下排每个数都是上排对应位置的数在下排出现的次数。上排的数:0,1,2,3,4,5,6,7,8,9。

11、腾讯笔试题:判断数字是否出现在40亿个数中?

给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中?

答案:

unsigned int 的取值范围是0到2^32-1。我们可以申请连续的2^32/8=512M的内存,用每一个bit对应一个unsigned int数字。首先将512M内存都初始化为0,然后每处理一个数字就将其对应的bit设置为1。当需要查询时,直接找到对应bit,看其值是0还是1即可。

腾讯笔试题 第四篇_腾讯C++笔试题目及答案

C++题:

1经计算出的结果是什么

char str1[]="abc";

char str2[]="abc";

const char str3[]="abc";

const char str4[]="abc";

const char *str5="abc";

const char *str6="abc";

char *str7="abc";

char *str8="abc";

count<<(str1==str2)<< denl;

count<<(str3==str4)<< denl;

count<<(str5==str6)<< denl;

count<<(str7==str8)<< denl;

------------------------------

前两行定义的str1和str2是两个普通的char型数组,所以它们在比较时就是比较的它们的存储地址,由于是两个不同的变量,它们的存储地址肯定是不同的,所以第一行的输出为“0。str3和str4是用const修饰的char型数组,通常编译器是不会为const类型分配内存空间的,而是通过常量折叠的方式处理,但在这里它们是数组类型,编译器不会复杂到把一个集合保存在他的符号表中,所以这里强制为其分配了内存,和str1和str2一样道理,第二行的输出也是“0”。str5和str6不管它们是否被const修饰(因为这里const在*的左面,也就是说它们是指向常数的指针,本身不是const的,还是普通的指针,只是指向的内容是const的),他们都指向字符串“abc”,str5和str6两次引用的都是字符串常量“abc”,编译器不会生成这个常量的两个副本,而引用的是相同的字符串常量“abc”

0,0,1,1

-----------------------------

2

char x[]="abcdefg";

char y[]={'a','b','c','d','e','f','g'};

则正确的叙述为:( )?

(A)数组x和数组y等价

(B)数组x和数组y的长度相同

(C)数组x的长度小于数组y的长度

(D)数组x的长度大于数组y的长度

-------------------

C

char y[]={'a','b','c','d','e','f','g','\0'}

-------------------

3

char str[] ="Hello";

char *p=str;

int n=10;

请计算

sizeof(str)=?

sizeof(p)=?

sizeof(n)=?

void Func(char str[100])

{

请计算 sizeof(str)=?

}

void *p =malloc(100);

请计算

sizeof(p)=?

-----------------------------

运算符sizeof 可以计算出数组的容量

结果:

6 字符1个字节一个,17个字符,数组中元素的个数+&#39

本文来源:http://www.gbppp.com/jd/458192/

推荐访问:腾讯笔试题2015 腾讯产品培训生笔试题

热门文章