110 調查局特考三等 電子科學組 計算機概論 考古題詳解
第 一 題36 分
請回答下列問題:
(一) 計算機中最常見的四種中斷類別,除了程式(program)外,還有哪三種?(6 分)
(二) 在計算機的記憶體階層結構有哪兩種形式的局部性(locality)?(4 分)
(三) 假設作業系統(operating system)以 毫秒(millisecond)為單位來分配時間片段(time slices),並且忽略上下文切換(context switch)所需的時間,請問 秒鐘內有多少個程序(processes)可以獲得一個時間片段?如果一半的程序僅用一半的時間,請問 秒鐘內有多少個程序可以獲得一個時間片段?(6 分)
(四) 在計算機的輸入和輸出介面中,當處理器對 I/O 模組進行定址(addressed)時,可以接收控制(control)I/O 命令外,還有哪三種類型的 I/O 命令?(6 分)
(五)
- 八進制數值 等於二進制數值為何?
- 十六進制數值 等於二進制數值為何?(6 分)
(六) 請利用卡諾圖(Karnaugh map)對邏輯函數 進行最小積之和(sum of products)化簡。
- 請畫出卡諾圖化簡過程。
- 請寫出最簡積之和布林代數。(8 分)
登入後即可作答並保存紀錄。
核心觀念
本題涵蓋計算機組織與作業系統的基本觀念:
- 中斷的四種常見類別。
- 記憶體階層的區域性。
- 作業系統時間片與程序排程。
- I/O 命令種類。
- 不同進位制轉換。
- 三變數卡諾圖化簡。
(一)常見的四種中斷類別
核心觀念
計算機中常見的中斷來源可分為四類:
- 程式中斷(Program)
- 時間中斷(Timer)
- I/O 中斷(I/O)
- 硬體故障中斷(Hardware failure)
題目已給出程式中斷,因此另外三種為:
【答案】
- 時間中斷(Timer interrupt)
- I/O 中斷(I/O interrupt)
- 硬體故障中斷(Hardware failure interrupt)
解題技巧
可記憶為:
其中:
- 程式中斷:例如除以零、溢位、非法指令。
- 時間中斷:由計時器產生,用於分時系統與排程。
- I/O 中斷:I/O 裝置完成資料傳輸或發生錯誤時產生。
- 硬體故障中斷:例如電源異常、記憶體錯誤或硬體失效。
(二)記憶體階層的兩種局部性
核心觀念
記憶體階層利用程式存取資料的局部性,讓高速但容量小的記憶體,例如快取記憶體(Cache),提高整體存取速度。
兩種局部性如下:
- 時間局部性(Temporal locality)
- 空間局部性(Spatial locality)
【答案】
- 時間局部性:某一筆資料若最近被使用,短時間內再次被使用的機率很高。
- 空間局部性:某一筆資料被使用後,其鄰近位置的資料很可能很快被使用。
解題技巧
- 「同一筆資料重複使用」是時間局部性。
- 「附近資料一起被使用」是空間局部性。
例如迴圈反覆使用同一變數,屬於時間局部性;陣列依序讀取相鄰元素,屬於空間局部性。
(三)時間片與程序數量
核心觀念
時間片(Time slice)是作業系統分配給程序執行的一小段處理器時間。
已知:
每一個時間片為:
第一問:每個程序均使用完整時間片
可分配的時間片數為:
【答案】
秒鐘內有 個程序可以各獲得一個時間片。
第二問:一半程序只使用一半時間
假設共有 個程序,其中一半使用完整時間片,另一半只使用一半時間。
- 一半程序使用時間: 毫秒
- 另一半程序使用時間: 毫秒
總使用時間為:
整理得:
因此最多可容納的完整程序數為:
【答案】
約有 個程序可以在 秒鐘內獲得一個時間片。
若嚴格要求程序必須分成完全相等的兩半,程序數須為偶數,則可取 個;一般考試以平均每程序耗時 毫秒計算,答案採 個。
解題技巧
先將時間單位統一為毫秒,再以「平均每個程序耗用時間」計算:
所以:
常見錯誤是直接以 個時間片乘以 ,忽略只有一半程序能節省時間。
(四)I/O 命令種類
核心觀念
處理器對 I/O 模組下達命令時,常見的 I/O 命令可分為四類:
- 控制(Control)
- 測試(Test)
- 讀取(Read)
- 寫入(Write)
題目已給出控制命令,因此另外三種為:
【答案】
- 測試(Test)
- 讀取(Read)
- 寫入(Write)
各命令功能
- 控制命令:要求 I/O 模組執行特定操作,例如啟動或停止裝置。
- 測試命令:查詢 I/O 模組或周邊裝置的狀態。
- 讀取命令:從周邊裝置取得資料並傳送至處理器或記憶體。
- 寫入命令:將處理器或記憶體中的資料傳送至周邊裝置。
解題技巧
可記成:
題目問「除了控制外的三種」,直接列出 、、 即可。
(五)進位制轉換
1. 八進制數值 轉為二進制
核心觀念
每一位八進制數字可直接對應三位二進制數字:
對應如下:
逐位轉換:
小數部分:
因此:
第 二 題18 分
請回答下列問題:
(一) Ethernet LANs 的傳輸速率(transmission rate)除了有 Mbps 外,還有哪三種傳輸速率?(6 分)
(二) 在網路中,哪兩種協定(protocols)用於決定傳輸原始訊息(original message)的權利(right)?(6 分)
(三) 假設你是某個單位的網路管理員,所管理的單位電腦大概有 部,請問你要架設什麼 server 來設定好這 部電腦的網路參數?(6 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查三個區域網路基本概念:
- Ethernet LAN 的常見傳輸速率。
- 共用傳輸媒介中,主機如何競爭資料傳輸權。
- 網路管理員如何集中配置大量電腦的網路參數。
本題為申論式問答題,沒有選項,因此不適用逐一選項分析。
(一) Ethernet LANs 的三種傳輸速率
解題方法
題目已給出 Ethernet 的早期標準速率 Mbps,要求再列出三種常見的後續傳輸速率。依基本 Ethernet 分類,傳輸速率依序提升為:
- Fast Ethernet: Mbps
- Gigabit Ethernet: Gbps
- 10-Gigabit Ethernet: Gbps
其中:
因此,除 Mbps 外,應填寫:
解題技巧與常見陷阱
- 題目問的是「傳輸速率」,不是 Ethernet 的標準名稱。
- Gbps 必須理解為 Mbps,不是 Mbps。
- 依命題當時一般計算機概論教材的基本 Ethernet 演進,答出 Mbps、 Gbps、 Gbps 即可。
- 不宜將傳輸媒介、網路拓撲或 IEEE 編號誤當成速率作答。
(二) 決定傳輸權利的兩種協定
核心觀念
在多部電腦共用同一傳輸媒介時,必須透過媒介存取控制協定(Media Access Control, MAC)決定哪一部電腦可以使用媒介傳送資料。
Ethernet 與無線區域網路常見的兩種媒介存取協定為:
- CSMA/CD
- CSMA/CA
解題方法
1. CSMA/CD
CSMA/CD 全名為 Carrier Sense Multiple Access with Collision Detection,中文為「具碰撞偵測的載波感測多重存取」。
其基本流程為:
- 主機先感測傳輸媒介是否忙碌。
- 媒介閒置時開始傳送。
- 傳送過程中持續偵測是否發生碰撞。
- 發生碰撞時停止傳送,等待隨機時間後再重傳。
CSMA/CD 主要用於傳統共用式、半雙工 Ethernet。
2. CSMA/CA
CSMA/CA 全名為 Carrier Sense Multiple Access with Collision Avoidance,中文為「具碰撞避免的載波感測多重存取」。
其基本流程為:
第 三 題22 分
請回答下列問題:
(一) 請寫出高度為 的 AVL 樹中最小節點數的精確表示式(precise expression)。(6 分)
(二) 請畫出將 、、、、、、、、、、、、、 和 ,一次一個插入到最初為空的二進位堆積(binary heap)中的結果。(8 分)
(三) 假設鏈結串列(linked list)與堆疊(stack)用 C 程式指標(pointer)來實現,請問鏈結串列與堆疊有何差異?(8 分)
登入後即可作答並保存紀錄。
(一)AVL 樹中最小節點數
核心觀念
AVL 樹是一種高度平衡的二元搜尋樹,任何節點的左、右子樹高度差最多為 。要求高度為 時的最小節點數,必須使每個節點都盡量接近允許的最不平衡狀態。
以下採用常見定義:
- 空樹高度為
- 只有根節點的樹高度為
- 表示高度為 的 AVL 樹之最小節點數
解題方法
為使高度為 的 AVL 樹節點數最少,根節點的兩棵子樹高度必須為 與 。因此:
其中 是根節點。
初始條件為:
計算前幾項:
令 Fibonacci 數列滿足:
可得:
使用 Binet 公式:
其中:
所以高度為 的 AVL 樹中,最小節點數的精確表示式為:
解題技巧與陷阱
- 題目若以「邊數」定義高度,答案為 。
- 若題目以「層數」定義高度,且單一根節點高度為 ,則答案會寫成:
- 關鍵不是直接套公式,而是先寫出遞迴式:
(二)依序插入二進位堆積
核心觀念
二進位堆積必須同時符合:
- 完整二元樹形狀:新節點依序由上到下、由左到右加入。
- 堆積順序:父節點必須符合堆積的大小關係。
題目未明確說明是最大堆積或最小堆積。以下依一般考試與資料結構題的常見設定,採用「最大堆積(max heap)」解答,即:
每次插入後,將新節點與父節點比較;若新節點較大,便向上調整。
逐次插入結果
以下以陣列表示堆積,陣列採 起始索引:
| 插入值 | 插入並向上調整後的最大堆積 |
|---|---|
例如插入 時:
先與父節點 交換:
再與父節點 交換:
最後與根節點 交換:
最後的堆積圖
由最終陣列:
可畫成:
第 四 題16 分
請回答下列問題:
(一) 假設 的值為 ,執行以下函數,請問輸出結果為何?(8 分)
def F(y): print(y) if (y < 2): F(y + 1) else: print(y) print(y)
(二) 請問以下程式,輸出結果為何?(8 分)
#include <iostream> using namespace std;
unsigned long long int fun(unsigned int n) { unsigned long long int x = 0; unsigned long long int y = 1;
for (unsigned int j = 2; j <= n; ++j) {
if (j % 2 == 0)
x += y;
else
y += x;
}
if (n % 2 == 0)
return x;
else
return y;
}
int main() { int x = 5, y = 7; cout << fun(x) << endl; cout << fun(y); }
登入後即可作答並保存紀錄。
第四題詳解
(一)遞迴函數輸出結果
核心觀念
本題考查:
- 遞迴函數的呼叫順序
- 遞迴終止條件
- 函數呼叫後的返回順序
- 前序處理與後序處理的差異
函數如下:
def F(y):
print(y)
if (y < 2):
F(y + 1)
else:
print(y)
print(y)
每次呼叫 F(y) 時,執行順序為:
- 先執行第一次
print(y) - 判斷
y < 2 - 若成立,遞迴呼叫
F(y + 1) - 遞迴函數返回後,執行最後一次
print(y)
解題方法
初始執行 F(0)。
| 函數呼叫 | 第一次輸出 | 執行內容 | 最後輸出 |
|---|---|---|---|
F(0) | 0 | 呼叫 F(1) | 0 |
F(1) | 1 | 呼叫 F(2) | 1 |
F(2) | 2 | 執行 else 中的 print(2) | 2 |
在 F(2) 中:
- 進入函數時輸出一次
- 因為 不成立,執行
else,再輸出一次 - 函數最後的
print(y)再輸出一次
因此 F(2) 共輸出:
F(2) 返回後,回到 F(1),執行最後的 print(1);再回到 F(0),執行最後的 print(0)。
解題技巧
遞迴題應將輸出分成兩類:
- 遞迴呼叫前的輸出:由 ,依序產生
- 遞迴呼叫返回後的輸出:由 ,依序產生
其中終止層 F(2)因為同時執行進入時的輸出、else 中的輸出,以及函數末端的輸出,所以 會連續出現三次。
【答案】
輸出結果為:
0
1
2
2
2
1
0
(二)C++ 函數輸出結果
核心觀念
本題考查:
for迴圈執行流程- 奇偶數判斷:
j % 2 == 0 - 變數更新順序
unsigned long long int整數運算- 費氏數列的遞迴關係
函數初始值為:
迴圈中:
- 當 為偶數時:
- 當 為奇數時:
最後:
第 五 題8 分
請回答下列問題:
(一) 請問有位 C 女生要以公開金鑰技術傳送情書給一位 M 男生,請問要如何使用公開金鑰技術,讓 M 男生可以確定情書是 C 女生所傳送的?(4 分)
(二) 請問那一種軟體會瞬間發送大量封包來癱瘓網路?(4 分)
登入後即可作答並保存紀錄。
第五題詳解
(一)利用公開金鑰技術確認寄件者身分
核心觀念
本小題考的是公開金鑰密碼系統中的:
- 數位簽章(Digital Signature)
- 私密金鑰與公開金鑰的用途
- 身分認證與資料完整性
公開金鑰系統中,每個人擁有一對金鑰:
- 公開金鑰:可以公開給他人,用來驗證數位簽章或加密資料。
- 私密金鑰:只能由本人保管,用來產生數位簽章或解密資料。
若要讓 M 男生確認情書確實由 C 女生所傳送,關鍵在於必須使用 C 女生的私密金鑰產生數位簽章。
解題方法
C 女生傳送情書時,處理流程如下:
- C 女生先對情書內容計算雜湊值:
- C 女生使用自己的私密金鑰對雜湊值進行簽章,產生數位簽章:
-
C 女生將「情書內容」與「數位簽章」一併傳送給 M 男生。
-
M 男生取得 C 女生的公開金鑰,對數位簽章進行驗證,並重新計算情書內容的雜湊值。
-
若驗證結果相同,表示:
- 數位簽章是由 C 女生的私密金鑰產生;
- 情書內容在傳送途中未遭到竄改;
- 因此可確認情書確實由持有 C 女生私密金鑰的人所傳送。
常見陷阱
-
不能使用 M 男生的公開金鑰來證明寄件者是 C 女生。 M 的公開金鑰主要用於讓他人加密資料,只有 M 的私密金鑰能解密。
-
單純使用 C 女生的公開金鑰加密情書,不是數位簽章的正確表達。 考試作答應使用「C 的私密金鑰簽章,M 使用 C 的公開金鑰驗證」的標準術語。
-
數位簽章主要提供:
-
身分認證
-
資料完整性
-
不可否認性