腾讯2012年校园招聘笔试
腾讯2012年校园招聘笔试
join.qq.com
1.笔试时间
2011年10月各地区笔试
合肥,重庆,大连,武汉笔试时间为10月9日
北京,深圳,南京,沈阳,长沙,上海,杭州笔试时间为10月15日
天津,厦门,香港笔试时间为10月22日
腾讯2012求职俱乐部:http://bbs.aftjob.com/group-47-1.html
腾讯2012求职手册:http://bbs.aftjob.com/thread-608477-1-1.html
2.宣讲会剩余时刻表
学校宣讲时间宣讲地点
重庆邮电大学9月26日19:00-21:00第三国际会议厅
重庆大学9月27号19:00-21:00B区勤工楼2楼报告厅
中国科学技术大学9月27日19:00-21:00西区学生活动中心2楼学术报告厅复旦大学10月13日18:30-20:30张江校区行政楼106号报告厅
上海交通大学10月14日13:00-15:00闵行校区光彪楼一楼多功能厅
浙江大学10月11日9:00-11:30玉泉校区邵逸夫科学馆演讲厅
北京大学10月10日15:00-17:00英杰阳光大厅
北京航空航天大学10月8日19:00-21:00学术交流厅
深圳大学10月13日19:00-21:00科技楼一号报告厅
南京大学10月13日19:00-21:00科技馆一楼报告厅
东南大学10月11日14:00-16:00逸夫科技馆报告厅
3.2008年腾讯技术类校园招聘笔试试题(A8卷)
http://bbs.aftjob.com/thread-93654-1-1.html
姓名:______________联系电话:_______________简历编号:____________学校:______________专业:___________________学历:________________
一.单选题(每题4分,15题,共60分)
1.考虑函数原型voidhello(inta,intb=7,char*pszC="*"),下面的函数调用钟,属于不合法调用的是:
Ahello(5)B.hello(5,8)C.hello(6,"#")D.hello(0,0,"#")
2.下面有关重载函数的说法中正确的是:
A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同
C.重载函数必须有不同的形参列表D.重载函数名可以不同
3.分析一下程序的运行结果:
#include
classCBase
{
public:
CBase(){cout
~CBase(){cout
};
classCSub:publicCBase
{
public:
CSub(){cout
~CSub(){cout
};
voidmain()
{
CSubobj;
}
A.constructingCSubclassB.constructingCBaseclass
constructingCBaseclassconstructingCSubclass
destructingCSubclassdestructingCBaseclass
destructingCBaseclassdestructingCSubclass
C.constructingCBaseclass
constructingCSubclass
destructingCSubclass
destructingCBaseclass
D.constructingCSubclass
constructingCBaseclass
destructingCBaseclass
destructingCSubclass
4.在一个cpp文件里面,定义了一个static类型的全局变量,下面一个正确的描述是:
A.只能在该cpp所在的编译模块中使用该变量
B.该变量的值是不可改变的
C.该变量不能在类的成员函数中引用
D.这种变量只能是基本类型(如int,char)不能是C++类型
5.观察下面一段代码:
classClassA
{
public:
virtual~ClassA(){};
virtualvoidFunctionA(){};
};
classClassB
{
public:
virtualvoidFunctionB(){};
};
classClassC:publicClassA,publicClassB
{
public:
};
ClassCaObject;
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(pB);
B.void*pVoid=static_cast(pB);
pA2=static_cast(pVoid);
C.pA2=pB;
D.pA2=static_cast(static_cast(pB));
7.参照1.5的代码,下面那一个语句是不安全的:
A.deletepAB.deletepBC.deletepC
8.下列程序的运行结果为:
#include
voidmain()
{
inta=2;
intb=++a;
cout
}
A.0.5B.0C0.7D.0.6666666-
9.有如下一段代码:
#defineADD(x,y)x+y
intm=3;
m+=m*ADD(m,m);
则m的值为:
A.15B.12C.18D.58
10.如下是一个带权的图,图中结点A到结点D的关键路径的长度是:
A.13B.15C.28D.58
11.下面的模板声明中,正确的是:
A.template
B.template
C.template
D.template
12.在Windows编程中下面的说法正确的是:
A.两个窗口,他们的窗口句柄可以是相同的B.两个窗口,他们的处理函数可以是相同的
C.两个窗口,他们的窗口句柄和窗口处理函数都不可以相同.
13.下面哪种情况下,B不能隐式转换为A?
A.classB:publicA{}B.classA:publicB{}
C.classB{operatorA();}D.classA{A(constB&);}
14.某公司使用包过滤防火墙控制进出公司局域网的数据,在不考虑使用代理服务器的情况下,下面描述错误的是”该防火墙能够()”.
A.使公司员工只能访问Internet上与其业务联系的公司的IP地址.
B.仅允许HTTP协议通过,不允许其他协议通过,例如TCP/UDP.
C.使员工不能直接访问FTP服务器端口号为21的FTP地址.
D.仅允许公司中具有某些特定IP地址的计算机可以访问外部网络
15.数字字符0的ASCII值为48,若有以下程序:
main()
{
chara=’1’,b=’2’;
printf(“%c,”,b++);
printf(“%d\n”,b-a);
}
程序运行之后的输出结果是:
A.3,2B.50,2C.2,2D.2,50
二.填空题(共40分)
本程序从正文文件text.in读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.out中.
程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出.
程序中的外部函数
intgetword(FILE*pFile,char*pszWordBuffer,intnBufferLen);
从与pFile所对应的文件中读取单词置入pszWordBuffer,并返回1;若单词遇文件尾,已无单词可读时,则返回0.
#include
#include
#include
#include
#defineSOURCE_FILE"text.in"
#defineOUTPUT_FILE"word.out"
#defineMAX_WORD_LEN128
typedefstructtreenode
{
charszWord[MAX_WORD_LEN];
intnCount;
structtreenode*pLeft;
structtreenode*pRight;
}BNODE;
intgetword(FILE*pFile,char*pasWordBuffer,intnBufferLen);
voidbinary_tree(BNODE**ppNode,char*pszWord)
{
if(ppNode!=NULL&&pszWord!=NULL)
{
BNODE*pCurrentNode=NULL;
BNODE*pMemoNode=NULL;
intnStrCmpRes=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=newBNODE;
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
}
elseif(nStrCmpRes>0)
{
pMemoNode->pRight=pCurrentNode;
}
else
{
pMemoNode->pLeft=pCurrentNode;
}
}
voidmidorder(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);
}
voidmain()
{
FILE*pFile=NULL;
BNODE*pRootNode=NULL;
charszWord[MAX_WORD_LEN]={0};
pFile=fopen(SOURCE_FILE,"r");
if(pFile==NULL)
{
printf("Can'topenfile%s\n",SOURCE_FILE);
return;
}
while(getword(pFile,szWord,MAX_WORD_LEN)==1)
{
binary_tree(___(7)___);//pRootNode,szWord
}
fclose(pFile);
pFile=fopen(OUTPUT_FILE,"w");
midorder(pFile,pRootNode);
fclose(pFile);
三.附加题(每题30分,2题,共60分)
1.从程序健壮性进行分析,下面的FillUserInfo函数和Main函数分别存在什么问题?
#include
#include
#defineMAX_NAME_LEN20
structUSERINFO
{
intnAge;
charszName[MAX_NAME_LEN];
};
voidFillUserInfo(USERINFO*parUserInfo)
{
stu::cout
intnCount=0;
std::cin>>nCount;
for(inti=0;i
{
std::cout
std::cin>>parUserInfo[i]->nAge;
std::stringstrName;
std::cout
std::cin>>strName;
strcpy(parUserInfo[i].szName,strName.c_str());
}
}
intmain(intargc,char*argv[])
{
USERINFOarUserInfos[100]={0};
FillUserInfo(arUserInfos);
printf("Thefirstnameis:");
printf(arUserInfos[0].szName);
printf("\n");
return0;
2.假设你在编写一个使用多线程技术的程序,当程序中止运行时,需要怎样一个机制来安全有效的中止所有的线程?请描述其具体流程.