[实战演练]腾讯2013年校招软件开发类笔试题目(选择题部分)
該要開始做一下真題了,為了保證在本文中答案的準確性,所有不確定的題目我都已經在網上找到了相關答案。但是百密一疏,這樣也不可能保證所有答案都是準確的,不過百分之九十以上應該正確吧。如有不正確的地方,歡迎指正。
題目:
(一)不定項選擇題
1. 以下表的設計,最合理的是()
A 學生:{id,name,age},學科:{id,name},分數:{學生id,學科id,分數}
B 學生:{id,name,age},分數:{學生id,學科名稱,分數}
C 分數:{學生姓名,學科名稱,分數}
D 學科:{id,name},分數:{學生姓名,學科id,分數}
2. 在數據庫系統中,產生不一致的根本原因是()
A 數據存儲量太大
B 沒有嚴格保護數據
C 未對數據進行完整性控制
D 數據冗余
3. 用容積分別為15L和27L的兩個杯子向一個水桶中裝水,可以精確向水桶中注入()L水?
A 53 ? ?B 25 ? ?C 33 ? ?D 52
4. 考慮左遞歸文法 S->Aa|b ?A->Ac|Sd|ε,消除左遞歸后應該為()?
A S->Aa|b ? ?A->bdA'|A' ? ?A'->cA'|adA'|ε
B?S->Ab|a ? ?A->bdA'|A' ? ?A'->cA'|adA'|ε
C S->Aa|b ? ?A->cdA'|A' ? ?A'->bA'|adA'|ε
D S->Aa|b ? ?A->bdA'|A' ? ?A'->caA'|dA'|ε
5. 下面的排序算法中,初始數據集的排列順序對算法的性能無影響的是()
A 插入排序 ? ?B 堆排序 ? ?C 冒泡排序 ? ?D 快速排序
6. 使用二分查找算法在一個有序序列中查找一個元素的時間復雜度為()
A O(N) ? ?B O(log N) ? ?C O(N*N) ? ?D O(N*log N)
7. 路由器工作在網絡模型中的哪一層()?
A 數據鏈路層 ? ?B 物理層 ? ?C 網絡層 ? ?D 應用層
8. 對于滿足SQL92標準的SQL語句:SELECT foo, count(foo) FROM poles WHERE foo>10 GROUP BY foo HAVING count(foo)>10 ORDER BY foo,其執行的順序應該為()
A FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
B FROM->GROUP BY->WHERE->HAVING->SELECT->ORDER BY
C FROM->WHERE->GROUP BY->HAVING->ORDER BY->SELECT
D FROM->WHERE->ORDER BY->GROUP BY->HAVING->SELECT
9. 使用深度優先算法遍歷下面的圖,遍歷的順序為()
A 順序ABCDEFGHI ? ?B 順序BCEHIFGDA ? ?C 順序ABCEFHIGD ? ?D 順序HIFEGBCDA
10. 在UNIX系統中,目錄結構采用
A 單級目錄結構 ? ?B 二級目錄結構 ? ?C 單純樹形目錄結構 ? ?D 帶鏈接樹形目錄結構
11. 題目:請問下面的程序一共輸出多少個 “-” ?
1 #include<stdio.h> 2 #include<sys/types.h> 3 #include<unistd.h> 4 int main(void) 5 { 6 int i; 7 for(i=0;i<2;i++)} 8 fork(); 9 printf("-"); 10 } 11 return 0; 12 }A 2個 ? ?B 4個 ? ?C 6個 ? ?D 8個
12. 題目:請問下面的程序一共輸出多少個“-” ?
#include<stdio.h> #include<sys/types.h> #include<unistd.h> int main(void) {int i;for(i=0;i<2;i++){fork();printf("-\n");}return 0; }A 2個 ? ?B 4個 ? ?C 6個 ? ?D 8個
13. 避免死鎖的一個著名算法是()
A 先入先出法 ? ?B 銀行家算法 ? ?C 優先級算法 ? ?D 資源按序分配法
14. 你怎么理解的分配延遲(dispatch lantency)?
A 分配器停止一個進程到開啟另一個進程的時間
B 處理器將一個文件寫入磁盤的時間
C 所有處理器占用的時間
D 以上都不對
15. 以下哪一個不是進程的基本狀態()?
A 阻塞態 ? ?B 執行態 ? ?C 就緒態 ? ?D 完成態
16. 假定我們有3個程序,每個程序花費80%的時間進行I/O,20%的時間使用CPU。每個程序啟動時間和其需要使用CPU進行計算的分鐘數如下,不考慮進程切換時間:
程序編號 啟動時間 需要CPU時間(分鐘) 1 00:00 3.5 2 00:10 2 3 00:15 1.5請問,在多線程/進程環境下,系統的總響應時間為()
A 22.5 ? ?B 23.5 ? ?C 24.5 ? ?D 25.5
17. 在所有非搶占CPU調度算法中,系統平均響應時間最優的是()
A 實時調度算法 ? ?B 短任務優先算法 ? ?C 時間片輪轉算法 ? ?D 先來先服務算法
18. 什么是內存抖動(Thrashing)?
A 非常頻繁的換頁活動 ? ?B 非常高的CPU執行活動 ? ?C 一個極長的執行過程 ? ?D一個極大的虛擬內存
19. Belady‘s Anomaly出現在哪里()
A 內存管理算法 ? ?B 內存換頁算法 ? ?C 預防死鎖算法 ? ?D 磁盤調度算法
20. 以下的生產者消費者程序中,那個不會出現鎖死,并且開銷最少?
注:
down()
1. 判斷信號量的取值是否大于等于1
2. 如果是,將信號量的值減去一,繼續向下執行
3. 否則,在該信號量上等待(進程被掛起)
up()
1. 將信號量的值增加1(此操作將叫醒一個在信號量上面等待的進程)
2. 線程繼續往下執行
down()和up()是一組原子操作
選項:
A:
#define N 100 //定義緩沖區的大小 typedef int semaphore; //定義信號量類型 semaphore mutex = 1; //互斥信號量 semaphore empty = N; //緩沖區計數信號量 semaphore full = 0; //緩沖區計數信號量,用來計數緩沖區里的商品數量 void producer(void) {int item;while(TRUE){item = produce_item();down(&empty);down(&empty);insert_item(item);up(&mutex);up(&full);} } void consumer(void) {int item;while(TRUE){down(&full);down(&mutex);item = remove_item();up(&mutex);up(&empty);consume_item(item);} }B:
#define N 100 typedef int semaphore; semaphore empty = N; semaphore full = 0; void producer(void) {int item;while(TRUE){item = produce_item();down(&empty);insert_item(item);up(&full);} } void consumer(void) {int item;while(TRUE){down(&full);item = remove_item();up(&empty);consume_item(item);} }C:
#define N 100 typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer(void) {int item;while(TRUE){item = produce_item();down(&empty);down(&empty);insert_item(item);up(&mutex);up(&full);} } void consumer(void) {int item;while(TRUE){down(&mutex);down(&full);item = remove_item();up(&mutex);up(&empty);consume_item(item);} }D:
#define N 100 typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer(void) {int item;while(TRUE){item = produce_item();down(&empty);down(&mutex);insert_item(item);up(&full);up(&mutex);} } void consumer(void) {int item;while(TRUE){down(&full);down(&mutex);item = remove_item();up(&empty);up(&mutex);consume_item(item);} }暫且先寫到選擇題部分,填空題部分隨后放出。
參考答案:
1. A
2. D 數據冗余
3. C 33 用排除法很容易看出來,因為這幾個選項中只有C 33是3的倍數,作為15L和27L的杯子,再怎么加加減減,得到的水量一定是3的倍數,因為這是他們的最大公約數。
4. A
5. B 堆排序
6. B O(log N) 這個屬于基礎題目
7. C 網絡層
8. A 總結SQL的執行順序大致有(1)FROM;(2)ON;(3)JOIN;(4)WHERE;(5)GROUP BY;(6)CUBE|ROLLUP;(7)HAVING;(8)SELECT;(9)DISTINCT;(10)ORDER BY;(11)TOP
9. B 這道題和我們平時用的深度優先遍歷順序有點不一樣,平時用的有點像樹的先序遍歷,然而這道題是基于樹的后序遍歷,根節點最后一個訪問。不過通過排除法應該是只有B正確。
10. D 帶鏈接樹形目錄結構
11. D 8個
12. C 6個 關于第11和第12題,可以參考http://yjbys.com/bishi/timu/529909.html?
13. B 銀行家算法
14. B 處理器將一個文件寫入磁盤的時間
15. D 完成態。 沒有這個狀態
16. B 在0至10分鐘,系統CPU利用率20%,有2分鐘用在CPU上,此時1號程序還有1.5分鐘才能結束;在10至15分鐘,兩道程序同時運行,CPU利用率為1-0.8^2 = 36%,因此5分鐘里面有5*0.36=1.8分鐘用于CPU,兩程序平分這1.8分鐘,因此1號程序還有0.6分鐘CPU才結束,2號程序還有1.1分鐘CPU才結束;在15分鐘往后,一直是3道程序同時運行直至1號程序率先結束,這段時間CPU利用率為1-0.8^3 = 48.8%,其中1號程序占用0.6分鐘,因此總共CPU是1.8分鐘,總時間為1.8/48.8%=3.6885分鐘,因此進行到18.6885分鐘時候,1號程序結束,2號程序還有0.5分鐘CPU,3號程序還有0.9分鐘CPU,兩道程序運行,CPU利用率36%,直至2號程序運行結束,因此0.5*2/36%=2.7778分鐘,在18.6885+2.7778=21.4663分鐘時候2號程序結束,只剩下3號程序還有0.4分鐘CPU使用,CPU利用率20%,因此再過0.4/20%=2分鐘,所有程序結束,總時間為21.4663+2=23.4663約等于23.5.因此B選項正確。
17. C
18. A 非常頻繁的換頁活動
19. B 內存換頁算法
20. A
轉載于:https://www.cnblogs.com/xuning/p/3322558.html
總結
以上是生活随笔為你收集整理的[实战演练]腾讯2013年校招软件开发类笔试题目(选择题部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让自己开发的Web应用程序与ShareP
- 下一篇: 基本概念