騰訊2014實習生4月20日筆試題(分析與解答)


 

昨天參加了這次實習生筆試題,感覺考的不算難,但是有點廣,數據結構、計算機操作系統、計算機網絡等都有涉及。卻沒有實際編碼題目,看樣子是面試的時候考察吧。其實基礎扎實的話,應該不難。

答案都是自己解答和小伙伴探討以及網上查的資料進行分析的,如有錯誤請留言拍磚! 

(一)不定項選擇題(25*4)

1.  使用深度優先算法遍歷下圖,遍歷的順序為()

 

A ABCDEFG        B ABDCFEG

C ABDECFG        D  ABCDFEG

 

2.  輸入序列ABCABC經過棧操作變成ABCCBA,下面哪些是可能的棧操作( )

A.     push pop push pop push pop pushpush push pop pop pop        //ABCCBA

B.     push push push push push push poppop pop pop pop pop        //CBACBA

C.     push push push pop pop pop pushpush pop pop push pop       //CBABAC

D.     push push push push pop pushpop push pop pop pop pop      //ABCCBA

 

 

3.  下列關鍵碼序列哪些是一個堆( )

A. 90 31 53 23 16 48                B . 90 48 31 53 16 23 

C.  16 53 23 90 314                 D.1631 23 90 53 48  

//48的左子節點為53,而該堆為大堆,違反其父節點都必須大於或等於其對應的子節點性質

//對於答案C:53右子節點為31,而該堆為小堆,違反其父節點都必須小於或等於其對應的子節點性質

//堆的性質,符合最大堆或者最小堆都行,如果大堆的話所有父節點都必須大於或等於其對應的子節點,

如果小堆的話,所有父節點都必須小於或等於其對應的子節點。  

堆是一棵完全二叉樹,從上到下畫好,進行對比就可以得到答案。

4. 稀疏矩陣壓縮的存儲方法是:()

A 三元組 B 二維數組 C 散列 D 十字鏈表
//自己也忘記了少選了一個十字鏈表~暈,具體詳細講解可以查看下篇博文(網上搜的)
矩陣(稀疏矩陣)的壓縮存儲(一)

5.  二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節點E的線索化指向節點()

A  BC        B  AC        C  DF         D CF

建立線索二叉樹,或者說對二叉樹線索化,實質上就是遍歷一顆二叉樹。(網搜)

 //剛開始不明白什么是線索二叉樹,憑感覺應該就是遍歷二叉樹,在遍歷過程中,訪問結點的操作是檢查當前的左,右指針域是否為空,將它們改為指向前驅結點或后續結點的線索。E的前驅是C,后繼是F。

6. 線性結構的是()

A 串  B 鏈式存儲棧  C順序存儲棧 D 順序存儲二叉樹
常用的線性結構有:線性表,棧,隊列,雙隊列,數組,串。
關於廣義表,是一種非線性的數據結構。
常見的非線性結構有:二維數組,多維數組,廣義表,樹(二叉樹等),圖(網等)。(網搜)
//意思差不多就是只能是一維的結構,查找的時候只能從前或后兩個方向查找(自認)

7.  Linux命令是哪些()

A ls   B mkdir     Cmagnify     D man

//做錯咯,對linux的magnify(放大鏡實用程序)不敢肯定。但是敲擊進去卻不可用,不知道是不是老版本可用,新版本不可用,真不知道是不是命令。

 

 

8. Unix系統中,適合任意兩個進程通信的是()

A FIFO   PIPE  C Message Queue  D  sharememory

 //可以進行進程通信的有:管道、信號、信號量、消息隊列、共享內存、套接字(套接字上次的騰訊面試中有提,但是別人答案未選,存在爭議,待解答:))

PS:網友改正,答應應該為ACD,PIPE就是匿名管道的意思,而命名管道的另一種說法就是FIFO。匿名管道只能在父子進程中進行通信。

園中講解:進程間通信程序設計1

 

9. Windows系統中,不適合進程通訊的是()

A 臨界區 B 互斥量 C 信號量 D 事件
//這四個選項都是線程同步的實現方法,但互斥量、信號量、事件都可以被跨越進程使用來進行同步數據操作,而臨界區只能在進程內部各線程間使用。(網搜)

10.  下面的內存管理模式中,會產生外零頭的是()

A 頁式 B段式C 請求頁式 D 請求段式
 //網搜資料     http://cc.sjtu.edu.cn/os/res/res6-5.asp    http://blog.sina.com.cn/s/blog_4c6403ed01000bbb.html(內容介紹) 
//根據網搜的資料感覺答案為CD,又少選了一個請求段式額,悲催~(這個網搜資料有點亂,也不確定,待大家解答!)

11.  Linux執行ls,會引起哪些系統調用()

A nmap B read C execve D fork

12.  a 是二維數組,a[i][j]的指針訪問方式為:()

A *(a+i+j)   B *(*(a+i)+j)   C *(a+i)+j     D *a+i+j

 

13 輸出以下結果:
  #define add(a,b) a+b;
  Intmain()
{
   Printf(“”,3*add(4,7));
}
A 33 B 19  C  25  D   49     //騰訊筆試好像是去年的原題吧  3*4+7=19

14 對於以下代碼,char * p= newchar[100]

A p 和 new出來的內存都在棧上
B p 和 new出來的內存都在堆上
C p在棧上 new出來的在堆上             
D p在堆上 new出來的在棧上

15 進程A讀取B進程中的某個變量(非共享內存),可行的方式()

A 進程向消息隊列寫入一個包含變量內容的消息,B進程從隊列中讀出
B 通過本地環路通信
C 如果A、B 非親屬,那么A通過命名管道把這個變量的地址發給B進程
D 如果 B是A 進程,那么B直接讀取變量內容即可      
//不太確定,待解釋
16 使用 send發送大量小的數據包,說法正確的是()

A 帶寬利用率低 B 網卡吞吐很高 C 網卡中斷頻繁 D 進程上下文切換頻繁
//自己選的ABCD,也不知道對不對,求解釋
17 TCP的握手與分手 可能出現的情形是()

A 握手需要3次通信 
B 分手需要進行4次通信 
C Fin和ACK 在同一包里 
D ACK 和SYN 在同一包里

18. 和16題 一樣。。。。。。


19. 新窗口打開網頁,以下哪個()

A _self B _blank C _top D _parent
參考博文:  http://blog.sina.com.cn/s/blog_8d94fa6a01016q5b.html

20.二進制數01011011轉化為十進制為()

A 103 B 91 C 171 D 71                      

21 版本控制軟件是哪些()
A bugzilla B subversion C Git D loadrunner
Loadrunner: 壓力測試工具 
bugzilla :追蹤系統的軟件,專門為Unix而定制 
22 Select A,B from Table1 where A between60 and 100 order by B,下面哪些優化sql性能()
A 字段A 建立hash索引,字段B btree索引
B 字段A 建立hash索引,字段B不建立索引
C字段A 建立btree索引,字段B不建立索引   
D 字段A 不建立 索引,字段B建立btree索引
//數據庫內部采用的是B-Tree結構方便查詢一個區間段的值,適合進行區間索引(自認)
23 數據索引的正確是()
A 1個表只能有一個聚族索引,多個非聚族索引
B 字符串模糊查詢不適合索引     //自認為B是對的,但是不確定,待解答
C 哈希索引有利於查詢字段用於大小范圍的比較查詢
D 多余的索引字段會降低性能

24 CPU與外設的傳輸數據的方式是()

A 程序方式 B中斷 C DMA D 通道方式 
文章中都說是ABC,但是我記得DMA的傳送過程是無需CPU介入的,但是題目給的又是
CPU與外設的傳輸數據的方式,所以C到底該不該選,個人覺得甚是糾結
//參考文章:http://cs.xiyou.edu.cn:84/wjyl/OnlineClass/7.2.html
http://wenku.baidu.com/view/e2f8690ebb68a98271fefa0c.html

25 式子7*15=133成立,則用的是幾進制()

A  6      B 7      C 8         D 9   //7*15(轉十進制為13)=133(轉十進制64+24+3=91)

(二)填空題

26. MySQL中表test選擇10條到20條記錄的語句是()
select * from test limit 10,10;     //不會MySQL,忘記關鍵字limit寫錯了。 
//多謝xiaozdong指正 
limit是mysql的語法
select * from table limit m,n
其中m是指記錄開始的index,從0開始,表示第一條記錄
n是指從第m+1條開始,取n條。
select * from tablename limit 2,4
即取出第3條至第6條,4條記錄


27. 若信號S為9,則S經過15次P和14次V,S為()

8    每P一次減一,沒V一次加一。相當於一個容器(S),進去一個(P)容量就少一個,出來一個(V)容量就多一個。
28. 頁面走向:4 3 2 1 4 3 5 4 3 2 1 5 4,當分配的內存物理快數4(開始為裝入),采用LRU淘汰算法,產生多少次缺頁()
9    
LRU:最近最少使用淘汰算法:
就像排隊,被叫到但是隊中沒有就缺了,被叫到的隊中有則不缺,再把其放在隊尾,繼續叫號。(被叫到的也可以進行加權,按權值來淘汰)
缺頁為:
4              缺1
4  3          缺1
4  3  2      缺1
4  3  2  1  缺1
3  2  1  4  不缺
2  1  4  3  不缺
1  4  3  5  缺1
1  3  5  4  不缺
1  5  4  3  不缺
5  4  3  2  缺1
4  3  2  1  缺1
3  2  1  5  缺1
2  1  5  4  缺1
 
29. 評估算法優勢,通常從()和()兩個方面考察
時間復雜度   空間復雜度

30. G是一個鄰接表,以V1為起點,深度優先遍歷序列V1V2V3V6V5V4,從V1開始的廣度優先遍歷序列是()


 

V1 V2 V5 V4 V3 V6
//以前記得的,現在忘記了,自己做錯了,很自然的就寫成了V1 2  5 4  6 3
31.20*20*20的魔法,8000個小正方體,如果剝取最外一層,還剩下多少個方塊()
5832
//個人見解: 先忽略上下兩個面,前后左右四個面的話就是上下全部占用就是20個,左右的話占用一邊就是19個,然后前后左右是4個就是:19*20*4
現在來考慮上下兩面,此時四邊都被占用了,前后兩邊減二,左右兩邊減二就是18*18 ,然后上下兩個面就是:18*18*2
結果為20*20*20-(19*20*4+18*18*2)=8000-2168=5832
大神給的解答就是18*18*18=5832 ,不明覺厲!

32. 

(1)如果A投硬幣是正面的,B給A  1美金
(2)如果A投的是反面,就再投,為正面,B給A 2美金
(3)如果還是反面,就再投,為為正面,B給A 4 美金
(4)假設A投的是反面,就投到正面為止,B就給A 的2的(n-1)次方
如果A、B玩這樣的硬幣游戲,A至少要給B多少錢B才不會虧錢()
此題還真不會做,有待大家解答。只明了不管是哪一次停止,按概率算的話,給出的錢都是1/2: 第n次結束的概率為1/2的n方,而給的錢為2的n-1方
兩者相乘就等於1/2


33.左輪槍,左輪槍,有6個彈巢,兩顆子彈放進相鄰的彈巢,撥動轉輪,然后拿着這把槍朝我自己扣動,但我還活着,現在輪到你了,你有兩種選擇

(1)在扣動一次轉輪,把槍對准自己,扣動扳機
(2)不撥動轉輪,直接對准自己,扣動扳機
假設你還不想死,你選擇哪種()原因()
選第二種     概率1/2>1/4 或者1/3>1/4
經過我和同門小伙伴討論得出第二種爆頭的概率為1/4,文字不好解釋額,假設第一個子彈的位置為1,第二個子彈的位置為2則第一個人沒有爆頭的彈巢就為3、4、5、6 ,
現在如果為3,則下一彈巢為4不爆頭
現在如果為4,則下一彈巢為5不爆頭
現在如果為5,則下一彈巢為6不爆頭
現在如果為6,則下一彈巢為1爆頭
可知爆頭概率為1/4
第一種的話有兩種爭論,撥動轉輪到底是撥動一格還是撥動一下轉n圈,就像電視上面的一樣。這兩種情況有待商榷,沒有抓住出題者的意圖。
假設為第一種轉動一格。那么還是按照上面的來分析:
現在如果為3,再撥動一格則下一彈巢為5不爆頭
現在如果為4,再撥動一格則下一彈巢為6不爆頭
現在如果為5,再撥動一格則下一彈巢為1爆頭
現在如果為6,再撥動一格則下一彈巢為2爆頭
所以這種情況下面爆頭概率非常高為1/2
假設為第二種轉動n圈,回到隨機位置,這種就比較好考慮了,就是6個里面有兩個爆頭,概率為1/3


提交的時候遇到這個問題,是不是有點坑爹啊,呵呵,看來網絡環境還是要大家來維系。

附加題:
34.描述mapreduce的執行過程,最好用畫圖的方式表示。

參考解答:http://liouwei20051000285.blog.163.com/blog/static/252367420116125223809/


35.數據庫A的ID從20120120300001到20120120399999,更新ID從00001到99999,遞增加1,不重復,不間斷(並保持高並發的性能)
也不是很清楚當時就寫了設置ID為主鍵,保證其唯一約束。還有就是以日期找到當天是否數據庫中已有當天的ID,沒有設為00001,
有的話就找到當天最大的那一個然后加1為對應的主鍵。保持高並發性,不知道怎么做。還是必須得加鎖一條一條插入吧。待大家解答。
 
題目轉載自: IT面試  2014騰訊校園招聘實習技術類筆試題目 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM