騰訊筆試題三、四

來源:果殼範文吧 2.13W

騰訊筆試題(三)

騰訊筆試題三、四

騰訊2009 校園招聘

軟體開發職位方向筆試試題(A1 卷) 考試時長:120 分鐘

第一、單項選擇題。(每個選項3 分,20 個選項,共60 分)

1. 在一個單鏈表中,若p 所指的結點不是最後結點,在p 所指結點之後插入s 所指結點,

則應執行操作( )。

A. s →link = p ; p →link = s B. s →link = p →link ; p →link = s

C. s →link = p →link ; p = s D. p →link = s ; s →link = p

2. 在下列排序方法中,不穩定的方法有( )。

A. 歸併排序與基數排序B. 插入排序與希爾排序

C. 堆排序與快速排序D. 選擇排序與氣泡排序

3. 在多級儲存體系中,“Cache-主存”結構的作用是解決( )的問題。

A. 主存容量不足B. 輔存與CpU 速度不匹配C. 主存與輔存速度不匹配

D. 主存與CpU 速度不匹配

4. 在需要經常查詢結點的前驅與後繼的場合中,使用( )比較合適。

A. 單鏈表B. 迴圈連結串列C. 鏈棧

5. 帶頭結點的單鏈表head 為空的判斷條件( )。

A. head = NULL B. head →next = NULL

C. head →next = head D. head <> NULL

6. 將一個遞迴演算法改為對應的非遞迴演算法時,通常需要使用( )。

A. 優先佇列B. 佇列C. 迴圈佇列D. 棧

7. 下列描述的不是連結串列的優點是( )。

A. 邏輯上相鄰的結點物理上不必鄰接

B. 插入、刪除運算操作方便,不必移動結點

C. 所需儲存空間比線性表節省

D. 無需事先估計儲存空間的大小

8. SQL 語言集資料查詢、資料操作、資料定義和資料控制功能於一體,語句INSERT、

DELETE、UpDATE 實現( )功能。

A. 資料查詢B. 資料控制C. 資料定義D. 資料操作

9. 設某種二叉樹有如下特點:每個結點要麼是葉子結點,要麼有2 棵子樹。如果一棵這樣

的二叉樹中有m(m>0)個葉子結點,那麼該二叉樹上的結點總數為( )。

A. 2m+1 B. 2m-1 C. 2(m-1) D. 2m

10. TCp/Ip 協議棧的網路層的主要功能是通過( )來完成的。

A. Ip 協議B. TCp 協議C. 乙太網協議D. IGp 協議

11. 實現不同的作業處理方式(如:批處理、分時處理、實時處理等),主要是基於操作系

統對( )管理採取了不同的策略。

A. 處理機B. 儲存C. 資料庫D. 檔案

12. 下面關於編譯系統和解釋系統的觀點中,錯誤的是( )。

A. 解釋程式不產生目的碼,它直接執行源程式或源程式的內部形式

B. 使用編譯系統時會區分編譯階段和執行階段

C. 一般來說,解釋系統比編譯系統複雜,但是可移植性好

D. 一般來說,建立在編譯基礎上的.系統在執行速度上要優於建立在解釋執行基礎上的系統

13. 雜湊檔案使用雜湊函式將記錄的關鍵字值計算轉化為記錄的存放地址。因為雜湊函式不

是一對一的關係,所以選擇好的( )方法是雜湊檔案的關鍵。

A. 雜湊函式B. 除餘法中的質數C. 衝突處理D. 雜湊函式和衝突處理

14. 衡量查詢演算法效率的主要標準是( )。

A. 元素個數B. 所需的儲存量C. 平均查詢長度D. 演算法難易程度

15. 對於#include和#include “filename.h”,以下說法錯誤的是( )。

A. #include只搜尋標準庫路徑

B. #include “filename.h”只搜尋使用者工作路徑

C. #include搜尋範圍比#include “filename.h”小

D. 兩者可能等價

16. 類定義的外部,可以被訪問的成員有( )。

A. 所有類成員B. private 或protected 的類成員

C. public 的類成員D. public 或private 的類成員

17. 下列的模板說明中,正確的有( )( 兩個答案)。

A. templateB. template

C. templateD. template

18. 中斷響應時間是指( )。

A. 從中斷處理開始到中斷處理結束所用的時間

B. 從發出中斷請求到中斷處理結束所用的時間

C. 從發出中斷請求到進入中斷處理所用的時間

D. 從中斷處理結束到再次中斷請求的時間

19. ( )面向物件程式設計語言不同於其他語言的主要特點。

A. 繼承性B. 訊息傳遞C. 多型性D. 封裝性

20. TCp/Ip 模型的體系結構中,ICMp 協議屬於( )。

A. 應用層B. 網路層C. 資料鏈路層D. 傳輸層

第二、填空題。(每空4 分,總計40 分)

1. 閱讀下列說明和流程圖,將應填入(n)的字句寫在答題紙的對應欄內。

【說明】

正弦函式可以用如下的泰勒級數展開式來計算:

下面的流程圖描述了利用上述展開式計算並列印sin (x )的近似值的過程,其中用ε>0)表示誤差要求,小於該誤差即可結束計算,列印結果。

【流程圖】

2. 閱讀下列函式說明和C 程式碼,將應填入(n)處的字句寫在答題紙的對應欄內。

【說明】設有一個帶表頭結點的雙向迴圈連結串列L,每個結點有4 個數據成員:指向前驅結點

的指標prior、指向後繼結點的指標next、存放資料的成員data 和訪問頻度freq。所有結點

的freq 初始時都為0.每當在連結串列上進行一次te(x)操作時,令元素值x 的結點的訪

問頻度freq 加1,並將該結點前移,連結到現它的訪問頻度相等的結點後面,使得連結串列中所

有結點保持按訪問頻度遞減的順序排列,以使頻繁訪問的結點總是靠近表頭。

【函式】

void Locate(int &x)

{ <結點型別說明>

*p=first->next;

while(p!=first && 1 ) p=p->next;

if (p!=first)

{ 2 ;

<結點型別說明>

*current=p;

current->prior->next=current->next;

current->next->prior=current->prior;

p=current->prior;

while(p!=first && 3 ) p=p->prior;

current->next= 4 ;

current->prior=p;

p->next->prior=current;

p->next= 5 ;

}

else

printf(“Sorry. Not find!n”); *沒找到*

}

第三、附加題(30 分)

“揹包問題”的基本描述是:有一個揹包,能盛放的物品總重量為S,設有N 件物品,其重

量分別為w1,w2,…,wn,希望從N 件物品中選擇若干物品,所選物品的重量之和恰能

放入該揹包,即所選物品的重量之和等於S。遞迴和非遞迴解法都能求得“揹包問題”的一

組解,試寫出“揹包問題”的非遞迴解法。

騰訊筆試題目zz

1、請定義一個巨集,比較兩個數a、b 的大小,不能使用大於、小於、if 語句

2、如何輸出原始檔的標題和目前執行行的行數

3、兩個數相乘,小數點後位數沒有限制,請寫一個高精度演算法

4、寫一個病毒

5、有A、B、C、D 四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1、2、5、10

分鐘,只有一支手電,並且同時最多隻能兩個人一起過橋。請問,如何安排,能夠在17 分

鍾內這四個人都過橋?

2.如何輸出原始檔的標題和目前執行行的行數(不曉得怎麼搞,在等兄弟給我答案在!)

3.兩個數相乘,小數點後位數沒有限制,請寫一個高精度演算法演算法提示:

//想法來自北師大一個同學給我看的另一個題目以及他的java 程式。

輸入string a, string b; 計算string c=a*b; 返回c;

1, 紀錄小數點在a,b 中的位置l1,l2, 則需要小數點後移動位置數為

l=length(a)+length(b)-l1-l2-2;

2, 去掉a,b 中的小數點,(a,b 小數點後移,使a,b 變為整數)

3, 計算c=a*b; (要麼用java 的BigInterger 搞, 要麼自己用C++寫高精度數乘法,超

過百萬位,用FFT,我就不細說,這都預先寫過就別做了)

4, 輸出c,(注意在輸出倒數第l 個數時,輸出一個小數點。若是輸出的數少於l 個,

就補0)

4.寫一個病毒(沒搞過,^_^)

5.讓你在100000000 個浮點數中找出最大的10000 個,要求時間複雜度優。

//本演算法使用快排,O(n*lg(n))

//最低可以找到線性演算法,使用預先區域統計劃分!類試於構造Quad Trees! 寫起來程式碼

會長些!

#include

#include

#define Max 100000000

int a[Max+10];

int cmp(const void *a, const void *b)

{

int *x = (int *) a;

int *y = (int *) b;

return *x-*y;

}

int main()

{

int n=0;

while(scanf("%d",&a[n])==1) n++;

qsort(a,n,4,cmp);

for(int i=0;i<3;i++) printf("%d",a);

return 1;

}

5、有A、B、C、D 四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1、2、5、10分鐘,只有一支手電,並且同時最多隻能兩個人一起過橋。請問,如何安排,能夠在17 分鐘內這四個人都過橋?

Solution:

The First Time: A(1)和B(2)過橋,A(1)返回Cost:1+2

The Second Time: C(5)和D(10)過橋,B(2)返回Cost:10+2

The Third Time A(1)和B(2)過橋Cost:2

Total Time Cost: (1+2)+(10+2)+2=17 minutes

1、請定義一個巨集,比較兩個數a、b 的大小,不能使用大於、小於、if 語句

#define Max(a,b) ( a/b)?a:b

2、如何輸出原始檔的標題和目前執行行的行數

int line = __LINE__;

char *file = __FILE__;

cout<<"file name is "<<(file)<<",line is "<

3、兩個數相乘,小數點後位數沒有限制,請寫一個高精度演算法

4、寫一個病毒

while (1)

{

int *p = new int[10000000];

}

5、不使用額外空間,將A,B 兩連結串列的元素交*歸併

6、將樹序列化轉存在陣列或連結串列中

struct st{

int i;

short s;

char c;

};

sizeof(struct st);

7、

char * p1;

void * p2;

int p3

熱門標籤