1、 单项选择题
1) 给定3个int类型的正整数x,y,z,对以下4组表达式判断正确的选项()
Int a1=x+y-z; int b1=x*y/z;
Int a2=x-z+y; int b2=x/z*y;
Int c1=x<>z; int d1=x&y|z;
Int c2=x>>z<
A) a1必定等于a2
B) b1必定定于b2
C) c1必定等于c2
D) d1必定等于d2
2) 程序的完整编译过程分为是:预处理,编译,汇编等,以下关于编译阶段的编译优化的说法中不正确的是()
A)死代码删除指的是编译过程直接抛弃掉被注释的代码;
B) 函数内联能够避免函数调用中压栈和退栈的开销
C) For循环的循环控制变量一般很适合调度到寄存器访问
D)强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令
3) 以下关于进程的面熟不正确的是()
A)进程在退出时会自动关闭本身打开的全部文件
B) 进程在退出时会自动关闭本身打开的网络连接
C) 进程在退出时会自动销毁本身建立的全部线程
D)进程在退出时会自动销毁本身打开的共享内存
4) 计算表达式x6+4x4+2x3+x+1最少须要作()次乘法
A)3
B)4
C)5
D)6
5) 在以下8*6的矩阵中,请计算从A移动到B一共有多少种走法?要求每次只能向上挥着向右移动一格,而且不能通过P;node
|
|
|
|
|
|
|
Bios |
|
|
|
|
|
|
|
|
|
|
|
P面试 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A算法 |
|
|
|
|
|
|
|
A)492
B)494
C)496
D)498
6) SQL语言中删除一个表的指令是()
A)DROP TABLE
B) DELETE TABLE
C) DESTROY TABLE
D)REMOVE TABLE
7)某产品团队由美术组、产品组、client程序组和server程序组4个小组构成,每次构建一套完整的版本时,须要各个组发布以下资源。美术组想客户端提供图像资源(须要10分钟),产品组向client组合server提供文字内容资源(同时进行,10分钟),server和client源代码放置在不一样工做站上,其完整编译时间均为10分钟切编译过程不依赖于任何资源,client程序(不包含任何资源)在编译完毕后还须要完成对程序的统一加密过程(10分钟)。能够请问,从要完成一次版本构建(client与server的版本代码与资源齐备),至少须要多少时间()
A)60分钟
B)40分钟
C)30分钟
D)20分钟
8)以下关于编译连接的说法错误的是()
A)编译优化会使得编译速度变慢
B) 预编译头文件能够优化程序的性能
C) 静态连接会使得可执行文件偏大
D)动态连接库会使进程启动速度偏慢
9)以下关于连接的说法错误的是()
A)一个静态库中不能包含两个同名全局函数的定义
B)一个动态库中不能包含两个同名全局函数的定义
C)若是两个静态库都包含一个同名全局函数,他们不能同时被连接
D)若是两个动态库都包含一个同名全局函数,他们不能同时被连接
10)某火车站要经过一条栈道(先进后出)来调换进入车站的列车顺序,若进站的列车顺序为A、B、C,则下列哪一个出站顺序不可能?()
A)ABC
B)ACB
C)CAB
D)CBA
11)栈是一种智能在某一端插入和删除的特殊线性表,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,若6元素为A、B、C、D、E、F出栈顺序为B、D、C、F、E、A,则S栈的最小容量为()
A)3
B)4
C)5
D)6
12)找工做的季节立刻就到了,不少同窗去图书馆借阅《面试宝典》这本书,如今图书馆外有6名同窗排队,其中3名同窗要将手中的《面试宝典》还至图书馆,有3名同窗但愿从图书馆中能够借到《面试宝典》,若当前图书馆内已无库存《面试宝典》,要保证借书的3名同窗能够借到书,请问这6位同窗有多少种排队方式()
A)60
B)120
C)180
D)360
13)若彻底二叉树的节点个数为2N-1,则叶节点个数为()
A)N-1
B)2×N
C)2N-1
D)2N
14)排序算法的稳定是指,关键码相同的记录排序先后相对位置不发生改变,下面哪一种排序算法是不稳定的()
A)插入排序
B)冒泡排序
C)快速排序
D)归并排序
15)下列说法中错误的是:()
A)插入排序某些状况下复杂度为O(n)
B)排序二叉树元素查找的复杂度可能为O(n)
C)对于有序列表的排序最快的是快速排序
D)在有序列表中经过二分查找的复杂度必定是O(n log2n)
16)在程序设计中,要对两个16K×16K的多精度浮点数二维数组进行矩阵求和时,行优先读取和列优先读取的区别是()
A)没区别
B)行优先快
C)列优先快
D)2种读取方式速度为随机值,没法判断
17)在下图的多边形ABCDE中从哪一点出发,能够遍历图上的每条边一次,并且仅遍历一次
A)A点
B) B点
C) C点
D)D点
18)字符串www.qq.com全部非空子串(两个子串若是内容相同则只算一个)个数是()
A)1024
B)1018
C)55
D)50
19)TCP的关闭过程,说法正确的是()
A)TIME_WAIT状态称为MSL(Maximum Segment Lifetime)等待状态
B)对一个established状态的TCP链接,在调用shutdown函数以前调用close接口,可让主动调用的一方进入半关闭状态
C)主动发送FIN消息的链接端,收到对方回应ack以前不能发只能收,在收到对方回复ack以后不能发也不能收,进入CLOSING状态
D)在已经成功创建链接的TCP链接上,若是一端收到RST消息可让TCP的连洁端绕过半关闭状态并容许丢失数据。
20)操做系统的一些特别端口要为特定的服务作预留,必需要root权限才能打开的端口描述正确的是()
A)端口号在64512-65535之间的端口
B)全部小于1024的每一个端口
C)RFC标准文档中已经声明特定服务的相关端口,例如http服务的80端口,8080端口等
D)全部端口均可以不授权限限制打开
2、填空题
21)除了10进制、2进制以外,16进制表达式在计算机领域中也常用(例如各类字符集的定义描述),下式:(2012)10+(AF1)16的结果是( )(请用10进制表示)。
22)仔细阅读如下一段递归的函数定义:
in tack(int m,int n)
{
if(m==0)
{
return n+1;
}
Else if(n==0)
{
return ack(m-1,1);
}
else
{
retrun ack(m-1,ack(m,n-1));
}
}
请问ack(3,3)的返回值是( )。
23)某互联网产品(例如,一款网络游戏)同时在线曲线(Average Concurrency Users,ACU)24小时数据以下图所示。现已知全天平均在线人数为5000人,玩家每次登录后平均在线时长为2小时。请你估计一下,平均下来每分钟约有( )个玩家登陆。
24)以下SQL语句是须要列出一个论坛版面第一页(每页显示20个)的帖子(post)标题(title),并按照发布(create_time)降序排列:
SELECT title FROM post( )create_time DESC( )0,20
2五、为了某项目须要,咱们准备构造了一种面向对象的脚本语言,例如,对全部的整数,咱们都经过Integer类型的对象来描述。在计算“1+2”时,这里的“1”,“2”和结果“3”分别为一个Integer对象。为了下降设计复杂度,咱们决定让Integer对象都是只读对象,也即在计算a=a+b后,对象a引用的是一个新的对象,而非改a所指对象的值。考虑到性能问题,咱们又引入两种优化方案:(1)对于数值相等的Integer对象,咱们不会重复建立。例如,计算“1+1”,这里两个“1”的引用的是同一个对象——这种设计模式叫作( );(2)脚本语言解析器启动时,默认建立数值范围[1,32]的32个Integer对象。如今,假设咱们要计算表达式“1+2+3+…+40”,在计算过程须要建立的Integer对象个数是( )。
26)A、B两人玩猜字游戏,游戏规则以下:
A选定一个 [1,100]之间的数字背对B写在纸上,而后让B开始猜;
若是B猜的偏小,A会提示B此次猜的偏小;
一旦B某次猜的偏大,A就再也不提示,这次以后B猜的偏小A也不会再提示,只回答猜对与否。
请问:B至少要猜( )次才能保证猜对?在这种策略下,B第一次猜想的数字是( )。
27)仔细阅读如下函数
Int fuc(int m,int n)
{
if(m%n)==0
{
return n;
}
else
{
return fuc(n,m%n)
}
}
请问func(2012,2102)的结果是( )。
三 、加分题
28)给定一耳光数组a[N],咱们但愿构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程当中,不容许使用除法:
要求O(1)空间复杂度和O(n)的时间复杂度;
除遍历计数器与a[N] b[N]外,不可以使用新的变量(包括栈临时变量、堆空间和全局静态变量等);
青铜程序(主流编程语言任选)实现并简单描述。
29)20世纪60年代,美国心理学家米尔格兰姆设计了一个连锁信件实验。米尔格兰姆把信随即发送给住在美国各城市的一部分居民,信中写有一个波士顿股票经纪人的名字,并要求每名收信人把这封信寄给本身认为是比较接近这名股票经纪人的朋友。这位朋友收到信后再把信寄给他认为更接近这名股票经纪人的朋友。最终,大部分信件都寄到了这名股票经纪人手中,每封信平均经受6.2词到达。因而,米尔格兰姆提出六度分割理论,认为世界上任意两我的之间创建联系最多只须要6我的。
假设QQ号大概有10亿个注册用户,存储在一千台机器上的关系数据库中,每台机器存储一百万个用户及其的好友信息,假设用户的平均好友个数大约为25人左右。
第一问:请你设计一个方案,尽量快的计算存储任意两个QQ号之间是否六度(好友是1度)可达,并得出这两位用户六度可达的话,最短是几度可达。
第二问:咱们但愿获得平均每一个用户的n度好友个数,以增长对用户更多的了解,如今若是每台机器一秒钟能够返回一千条查询结果,那么在10天的时间内,利用给出的硬件条件,能够统计出用户的最多几度好友个数?若是但愿获得更高的平均n度好友个数,能够怎样改进方案?数据库
腾讯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};
pFile=fopen(SOURCE_FILE,"r");
if(pFile==NULL)
{
printf("Can't open file %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 <iostream>
#include <string>
#define MAX_NAME_LEN 20
struct USERINFO
{
int nAge;
char szName[MAX_NAME_LEN];
};
void FillUserInfo(USERINFO* parUserInfo)
{
stu::cout<<"请输入用户的个数:";
int nCount=0;
std::cin>>nCount;
for(int i=0;i<nCount;i++)
{
std::cout<<"请输入年龄:";
std::cin>>parUserInfo[i]->nAge;
std::string strName;
std::cout<<"请输入姓名:";
std::cin>>strName;
strcpy(parUserInfo[i].szName,strName.c_str());
}
}
int main(int argc,char* argv[])
{
USERINFO arUserInfos[100]={0};
FillUserInfo(arUserInfos);
printf("The first name is:");
printf(arUserInfos[0].szName);
printf("\n");
return 0;
}
2. 假设你在编写一个使用多线程技术的程序,当程序停止运行时,须要怎样一个机服务器