一、單項選擇題
1) 給定3個int類型的正整數x,y,z,對如下4組表達式判斷正確的選項()
Int a1=x+y-z; int b1=xy/z;
Int a2=x-z+y; int b2=x/zy;
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) 在如下86的矩陣中,請計算從A移動到B一共有多少種走法?要求每次只能向上揮著向右移動一格,并且不能經過P;
|
|
|
|
|
|
| B |
|
|
|
|
|
|
|
|
|
|
| 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)所有端口都可以不受權限限制打開
二、填空題
21)除了10進制、2進制之外,16進制表達式在計算機領域中也經常使用(例如各種字符集的定義描述),下式:(2015)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小時數據如下圖所示,F已知全天平均在線人數為5000人,玩家每次登陸后平均在線時長為2小時。請你估計一下,平均下來每分鐘約有( )個玩家登錄。
24)如下SQL語句是需要列出一個論壇版面第一頁(每頁顯示20個)的帖子(post)標題(title),并按照發布(create_time)降序排列:
SELECT title FROM post( )create_time DESC( )0,20
25、為了某項目需要,我們準備構造了一種面向對象的腳本語言,例如,對所有的整數,我們都通過Integer類型的對象來描述。在計算“1+2”時,這里的“1”,“2”和結果“3”分別為一個Integer對象。為了降低設計復雜度,我們決定讓Integer對象都是只讀對象,也即在計算a=a+b后,對象a引用的是一個新的對象,而非改a所指對象的值?紤]到性能問題,我們又引入兩種優化方案:(1)對于數值相等的Integer對象,我們不會重復創建。例如,計算“1+1”,這里兩個“1”的引用的是同一個對象——這種設計模式叫做( );(2)腳本語言解析器啟動時,默認創建數值范圍[1,32]的32個Integer對象,F在,假設我們要計算表達式“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(2015,2102)的結果是( )。
三 、加分題
28)給定一耳光數組a[N],我們希望構造數組b [N],其中b[j]=a[0]a…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度好友個數,可以怎樣改進方案?
騰訊校園招聘筆試
一. 單選題(每題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
class CBase
{
public:
CBase(){cout<<”constructing CBase class”<
~CBase(){cout<<”destructing CBase class”<
};
class CSub : public CBase
{
public:
CSub(){cout<<”constructing CSub class”<
~CSub(){cout<<”destructing CSub class”<
};
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(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.delete pA B.delete pB C.delete pC
8.下列程序的運行結果為:
#include
void main()
{
int a=2;
int b=++a;
cout<
}
A.0.5 B.0 C0.7 D.0.6666666-
9.有如下一段代碼:
#define ADD(x,y) x+y
int m=3;
m+=mADD(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
B.template
C.template
D.template
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
#include
#include
#include
#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
#include
#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
{
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. 假設你在編寫一個使用多線程技術的程序,當程序中止運行時,需要怎樣一個機
制來安全有效的中止所有的線程?請描述其具體流程
2020年河北新聞網兩學一做
時間:2023-09-18 07:0:242020年河北新聞網兩學一做
時間:2023-09-15 11:0:59兩學一做學習教育知
時間:2023-09-21 06:0:302020年開展兩學一做學習教
時間:2023-09-19 21:0:30