昨天參加了此次實習生筆試題,感受考的不算難,可是有點廣,數據結構、計算機操做系統、計算機網絡等都有涉及。卻沒有實際編碼題目,看樣子是面試的時候考察吧。其實基礎紮實的話,應該不難。php
答案都是本身解答和小夥伴探討以及網上查的資料進行分析的,若有錯誤請留言拍磚! html
(一)不定項選擇題(25*4)mysql
1. 使用深度優先算法遍歷下圖,遍歷的順序爲()linux
A ABCDEFG B ABDCFEGes6
C ABDECFG D ABCDFEG面試
2. 輸入序列ABCABC通過棧操做變成ABCCBA,下面哪些是可能的棧操做( )算法
A. push pop push pop push pop pushpush push pop pop pop //ABCCBAsql
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 B 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則第一我的沒有爆頭的彈巢就爲三、四、五、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爲對應的主鍵。保持高併發性,不知道怎麼作。仍是必須得加鎖一條一條插入吧。待你們解答。