115 國安局特考三等 電子組(選試英文) 計算機概論 考古題詳解
第 一 題15 分
、、、。計算 、、、 四數之和,並用八進位的方式表示答案。請詳列計算過程。
登入後即可作答並保存紀錄。
核心觀念
本題考查不同進位數值的轉換與加總。各進位數可先轉成十進位,再相加,最後將總和轉成八進位。
一個 進位數的位值展開公式為:
也可利用每三個二進位位元對應一個八進位數字,直接將二進位數轉成八進位。
解題方法
先分別換算 、、、,再求總和。
- 已是十進位:
- 將 轉成十進位:
- 將 轉成十進位。十六進位字母中,、:
- 將 轉成十進位:
第 二 題15 分
請詳細比較傳統硬碟(HDD)和固態硬碟(SSD)之差異。
登入後即可作答並保存紀錄。
核心觀念
本題比較 HDD(Hard Disk Drive,傳統硬碟)與 SSD(Solid-State Drive,固態硬碟)的儲存原理及其對效能、可靠度、成本與使用情境的影響。HDD 以磁性方式將資料記錄在旋轉碟片上;SSD 以快閃記憶體儲存資料,沒有旋轉碟片或機械讀寫臂。
解題方法
依「儲存原理 → 存取方式與效能 → 耐用度與耗電 → 容量成本與適用情境」比較,並說明各項差異的成因。這樣作答能避免只列出「SSD 較快」等結論,而能呈現差異與原因之間的關係。
| 比較項目 | HDD | SSD |
|---|---|---|
| 儲存媒介與原理 | 以旋轉磁性碟片記錄資料,由讀寫臂移動磁頭讀寫 | 以 NAND Flash 等快閃記憶體儲存資料,以電子方式存取 |
| 是否有機械構件 | 有馬達、碟片及讀寫臂等機械構件 | 沒有旋轉碟片與機械讀寫臂 |
| 存取時間 | 須等待碟片旋轉到正確位置,並讓磁頭移至目標磁軌;具有旋轉延遲與尋道時間 | 可直接存取快閃記憶體中的資料,隨機讀寫延遲通常較低 |
| 傳輸效能 | 連續讀寫效能受碟片轉速、磁錄密度及介面限制;大量隨機存取時,機械移動會降低效能 | 隨機存取效能通常較佳;實際速度也受控制器、快閃記憶體、介面及工作負載影響 |
| 抗震與耐用度 | 運作中受撞擊可能造成磁頭或碟片損傷;機械構件亦會磨耗 | 沒有機械構件,通常較能承受日常震動;但仍可能因電子故障、控制器損壞或快閃記憶體磨耗而失效 |
| 寫入壽命與資料保存 | 磁性媒介可反覆改寫,仍會受到機械故障與其他因素影響 | NAND Flash 的寫入次數有限,控制器會透過磨耗平均等技術延長壽命;斷電保存資料的能力也受媒介狀態、溫度與時間影響 |
| 噪音與發熱 | 旋轉與磁頭移動可能產生噪音及發熱 | 通常較安靜;耗電與發熱依產品、介面及負載而異 |
第 三 題15 分
有一組資料以二元搜尋樹(binary search tree)的結構儲存,請提供一個演算法,將這組資料由小到大排序。並舉例說明。
登入後即可作答並保存紀錄。
核心觀念
二元搜尋樹(Binary Search Tree, BST)的左子樹節點值小於根節點,右子樹節點值大於根節點。對 BST 做中序走訪,順序為「左子樹、根節點、右子樹」,因此輸出的資料會由小到大排列。
解題方法
採用遞迴中序走訪:先走訪左子樹,再輸出目前節點,最後走訪右子樹。當節點為空時停止。
BSTSort(node):
if node == null:
return
BSTSort(node.left)
output node.key
BSTSort(node.right)
例如,將資料依序插入 BST:,形成:
第 四 題15 分
當你實作電路時發現缺少 NOT 邏輯閘(gate),但你手邊有下列兩種邏輯閘,請問如何應用現有的邏輯閘,達成 NOT 邏輯閘的功能需求?
🖼️【此處有附圖,請對照原卷】
附圖包含 AND Gate 與 XOR Gate。
登入後即可作答並保存紀錄。
核心觀念
本題考查基本邏輯閘的布林代數與真值表。NOT 邏輯閘的功能是將輸入反相:
XOR 邏輯閘的輸出規則為:兩個輸入不同時輸出 ,相同時輸出 。
當 XOR 的其中一個輸入固定接至邏輯 時:
因此可利用 XOR Gate 實作 NOT Gate。
解題方法
將輸入訊號 接到 XOR Gate 的一個輸入端,另一個輸入端固定接至邏輯高電位 :
分別檢查兩種輸入情形:
| 輸入 | 固定輸入 | XOR 輸出 |
|---|---|---|
可見輸出結果恰好是輸入的反相:
電路連接方式可表示為:
且 XOR 的另一輸入端連接至邏輯 。
AND Gate 的作用分析
單獨使用 AND Gate 無法完成 NOT 功能。常見連接方式如下:
第 五 題20 分
某一作業系統之中央處理器(CPU)排程使用先到先服務的方法(first-come, first-served scheduling),若今有一排程,共有四個程序 P1、P2、P3 及 P4,其到達時間與所需執行時間如下表所示,則此排程中,每個程序的總執行時間(turnaround time)分別為何?請詳列計算過程。
| 程序 | 到達時間 | 所需執行時間 |
|---|---|---|
| P1 | 0 | 5 |
| P2 | 3 | 7 |
| P3 | 10 | 3 |
| P4 | 17 | 4 |
註:時間單位為毫秒。
登入後即可作答並保存紀錄。
核心觀念
本題考 先到先服務(First-Come, First-Served, FCFS)排程與**周轉時間(turnaround time)**的計算。FCFS 按程序到達就緒佇列的先後順序執行;程序開始後會持續執行至完成。
周轉時間是程序從到達系統至完成所經過的時間:
解題方法
依到達順序排列程序,逐一計算開始時間與完成時間。程序的開始時間為「其到達時間」與「前一程序完成時間」兩者較晚者:
本題中 P1、P2、P3、P4 的到達時間依序增加,因此按此順序執行。
| 程序 | 到達時間 | 執行時間 | 開始時間 | 完成時間 | 周轉時間計算 | 周轉時間 |
|---|---|---|---|---|---|---|
| P1 | 0 | 5 | 0 | 5 毫秒 |
第 六 題20 分
寫出下列 Python 語言程式的輸出,並詳細解釋程式的執行流程。
def foo(arr): n = len(arr)
if n <= 1:
return
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
print(arr)
arr = [35, 91, 25, 30, 6, 18, 8, 55] foo(arr)
登入後即可作答並保存紀錄。
核心觀念
本題考查 插入排序(Insertion Sort) 與 Python 的串列可變性。程式每次取出尚未排序部分的第一個元素,向左比較並移動較大的元素,最後將該元素插入已排序部分的正確位置。
foo 直接修改傳入的串列 arr。每完成一次外層迴圈,就印出當下整個串列;因此輸出共有 行。
解題方法
初始串列為:
[35, 91, 25, 30, 6, 18, 8, 55]
外層迴圈的 i 從 到 。每次以 arr[i] 作為 key,從其左側開始比較:
- 若
key < arr[j],將arr[j]往右移一格,並令j減 。 - 比較停止後,把
key放在arr[j + 1]。 - 印出完成本輪插入後的串列。
i | key | 插入過程摘要 | 本輪輸出 |
|---|---|---|---|
| 1 | 91 | 91 不小於左側的 35,位置不變 | [35, 91, 25, 30, 6, 18, 8, 55] |
| 2 | 25 | 91、35 右移,25 插入最前面 | [25, 35, 91, 30, 6, 18, 8, 55] |
| 3 | 30 | 91、35 右移,30 插入 25 與 35 之間 | [25, 30, 35, 91, 6, 18, 8, 55] |
| 4 | 6 | 91、35、30、25 右移,6 插入最前面 | [6, 25, 30, 35, 91, 18, 8, 55] |