騰訊2012實習生筆試題

一、單項選擇題
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<<y>>z; int d1=x&y|z;
Int c2=x>>z<<y; int d2=x|z&y;
a1一定等於a2
b1一定定於b2
c1一定等於c2
d1一定等於d2

2) 程序的完整編譯過程分爲是:預處理,編譯,彙編等,如下關於編譯階段的編譯優化的說法中不正確的是()
A)死代碼刪除指的是編譯過程直接拋棄掉被註釋的代碼;
B) 函數內聯可以避免函數調用中壓棧和退棧的開銷
For循環的循環控制變量通常很適合調度到寄存器訪問
D)強度削弱是指執行時間較短的指令等價的替代執行時間較長的指令

3) 如下關於進程的面熟不正確的是()
A)進程在退出時會自動關閉自己打開的所有文件
B) 進程在退出時會自動關閉自己打開的網絡鏈接
C) 進程在退出時會自動銷燬自己創建的所有線程
D)進程在退出時會自動銷燬自己打開的共享內存

4) 計算表達式x6+4×4+2×3+x+1最少需要做()次乘法
A)3
B)4
C)5
D)6
SQL語言中刪除一個表的指令是()
DROP TABLE
DELETE TABLE
DESTROY TABLE
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點
B點
C點
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進制表達式在計算機領域中也經常使用(例如各種字符集的定義描述),下式:(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
25、爲了某項目需要,我們準備構造了一種面向對象的腳本語言,例如,對所有的整數,我們都通過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]外,不可使用新的變量(包括棧臨時變量、堆空間和全局靜態變量等);

void qupdate(int *a,int *b,int n)  
{  
  if(n<1)  
     return;  
  b[0]=1;  
  for(int i=1;i<n;i++)  
     b[i]=a[i-1]*b[i-1];  
  for(int i=n-2;i>=0;i--)  
    {  
      a[i]=a[n-1];  
      a[n-1]=a[n-1]*a[i];  
     }  
   a[n-1]=1;  
  for(int i=0;i<n;i++)  
     b[i]=a[i]*b[i];  
}  



 

29)20世紀60年代,美國心理學家米爾格蘭姆設計了一個連鎖信件實驗。米爾格蘭姆把信隨即發送給住在美國各城市的一部分居民,信中寫有一個波士頓股票經紀人的名字,並要求每名收信人把這封信寄給自己認爲是比較接近這名股票經紀人的朋友。這位朋友收到信後再把信寄給他認爲更接近這名股票經紀人的朋友。最終,大部分信件都寄到了這名股票經紀人手中,每封信平均經受6.2詞到達。於是,米爾格蘭姆提出六度分割理論,認爲世界上任意兩個人之間建立聯繫最多只需要6個人。
假設QQ號大概有10億個註冊用戶,存儲在一千臺機器上的關係數據庫中,每臺機器存儲一百萬個用戶及其的好友信息,假設用戶的平均好友個數大約爲25人左右。
第一問:請你設計一個方案,儘可能快的計算存儲任意兩個QQ號之間是否六度(好友是1度)可達,並得出這兩位用戶六度可達的話,最短是幾度可達。
第二問:我們希望得到平均每個用戶的n度好友個數,以增加對用戶更多的瞭解,現在如果每臺機器一秒鐘可以返回一千條查詢結果,那麼在10天的時間內,利用給出的硬件條件,可以統計出用戶的最多幾度好友個數?如果希望得到更高的平均n度好友個數,可以怎樣改進方案?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章