騰訊實習生招聘筆試題目

2013騰訊實習生筆試題 

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. 假設你在編寫一個使用多線程技術的程序,當程序停止運行時,須要怎樣一個機服務器

制來安全有效的停止全部的線程?請描述其具體流程
相關文章
相關標籤/搜索