113 身心障礙特考三等 統計 資料處理 考古題詳解

113 年・身心障礙特考・三等・統計
試題代碼 資料處理

第 一 題20 分

在作業系統執行中的程式稱為行程(Process),試說明:

(一)行程在其生命週期中共有幾個狀態及其變化?(15 分)

(二)行程和執行緒(Thread)的差別。(5 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

行程是作業系統執行中的程式。作業系統會依行程目前的執行情形,將它記錄在不同狀態中,並透過排程與事件處理,在狀態間轉換。

本題採用基本的五狀態模型:新建、就緒、執行、等待(阻塞)、結束。不同教材也會列出暫停等延伸狀態,因此作答時應先說明採用的狀態模型。

解題方法:說明五種狀態與轉換

  1. 新建(New):作業系統正在建立行程,配置必要的資料結構與資源。
  2. 就緒(Ready):行程已具備執行條件,正在等待 CPU。
  3. 執行(Running):行程目前正在 CPU 上執行。
  4. 等待/阻塞(Waiting/Blocked):行程正在等待某項事件,例如 I/O 完成或資源可用;事件尚未完成前,不能繼續執行。
  5. 結束(Terminated/Exit):行程已完成或遭終止,作業系統進行資源回收。

主要狀態轉換如下:

新建→建立完成就緒→派遣取得 CPU執行→等待 I/O 或事件等待→事件完成就緒\text{新建} \xrightarrow{\text{建立完成}} \text{就緒} \xrightarrow{\text{派遣取得 CPU}} \text{執行} \xrightarrow{\text{等待 I/O 或事件}} \text{等待} \xrightarrow{\text{事件完成}} \text{就緒}

此外,執行中的行程還有兩種重要轉換:

  • 執行 →\rightarrow 就緒:時間片用完,或較高優先權行程搶占 CPU。
  • 執行 →\rightarrow 結束:行程正常完成,或被作業系統終止。

注意,「等待 →\rightarrow 就緒」表示所等待的事件已完成;該行程仍須等待 CPU 排程,才會進入執行狀態。

解題技巧與常見陷阱

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題30 分

MS SQL Server 或 MySQL 都屬於關聯式資料庫系統(RDBMS),請問:

(一)何謂 Transaction?並舉例說明使用時機。(10 分)

(二)Transaction 具備的 4 個特性 ACID 為何?(10 分)

(三)何謂 SQL Injection?並舉例說明。(10 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查關聯式資料庫的交易處理與資料庫安全。作答時,先說明 Transaction 如何把一組資料庫操作視為單一工作單位,再逐一解釋 ACID 四項特性,最後說明 SQL Injection 的成因與防護方式。本題不涉及法條。

解題方法

(一)Transaction 與使用時機

**Transaction(交易)**是資料庫中一組彼此相關的操作,資料庫將它們視為一個不可分割的工作單位:全部成功就提交(COMMIT);其中任何關鍵操作失敗,就取消或復原整組變更(ROLLBACK),避免資料只更新一半。

例如銀行轉帳:甲帳戶轉出 1,000 元,乙帳戶轉入 1,000 元,兩項操作應放在同一個交易中。若甲已扣款但乙入帳失敗,便應回復甲帳戶的扣款;若兩項都成功,才提交交易。

START TRANSACTION;

UPDATE Account
SET Balance = Balance - 1000
WHERE AccountId = 'A';

UPDATE Account
SET Balance = Balance + 1000
WHERE AccountId = 'B';

COMMIT;

若第二項操作失敗,應執行 ROLLBACK,使第一項扣款也不生效。交易適用於必須維持整體一致性的情境,例如轉帳、訂單成立時同時扣庫存與記錄訂單,以及多人同時更新同一筆資料等。

(二)ACID 四項特性

特性中文說明意義
Atomicity(原子性)全有或全無交易中的操作全部成功,或全部取消,不留下只完成一部分的結果。轉帳時扣款與入帳必須同時成功或同時回復。
Consistency(一致性)維持資料一致交易完成前後,資料都必須符合資料庫的完整性規則與業務規則。例如帳戶餘額不得違反設定的限制。
Isolation(隔離性)交易彼此隔離多個交易同時執行時,其互相干擾應受到控制;交易的中間狀態不應讓其他交易讀到不完整或不一致的資料。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題20 分

最小生成樹(Minimum Spanning Tree)在網路設計中有重要的用途。如下圖,請依要求找出最小生成樹,須清楚說明每一步驟加入的點或邊。若需起點,以 A 點為起點。(每小題 10 分,共 20 分)

原卷附有包含節點 A、B、C、D、E、F、G、H、I、J、K 的網路圖;文字層未擷取出圖中連線與權重,請參考原卷。

(一)請以 Prim 演算法找出最小生成樹,並詳述每一步驟加入的點或邊。

(二)請以 Kruskal 演算法找出最小生成樹,並詳述每一步驟加入的點或邊。

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

最小生成樹(Minimum Spanning Tree, MST)是在連通且加權的無向圖中,連接全部頂點、沒有迴圈,且總權重最小的生成樹。圖中共有 1111 個頂點,因此最小生成樹須包含 11−1=1011-1=10 條邊。

Prim 演算法從指定起點開始,每次加入一條連接「已加入頂點」與「尚未加入頂點」的最低權重邊。Kruskal 演算法則依邊權重由小到大檢視,遇到會形成迴圈的邊就略過。

解題方法

依圖中連線與權重作答。同權邊依下列步驟所列順序處理;同權邊的選擇順序不同,可能得到不同的最小生成樹,但總權重相同。

(一)Prim 演算法:以 A 為起點

每一步從目前已加入的頂點集合,選擇連至集合外頂點的最低權重邊:

步驟加入的邊權重加入後的頂點集合
起點——{A}\{A\}
1A−CA-C3{A,C}\{A,C\}
2C−FC-F2{A,C,F}\{A,C,F\}
3F−HF-H4{A,C,F,H}\{A,C,F,H\}
4H−JH-J1{A,C,F,H,J}\{A,C,F,H,J\}
5J−BJ-B2{A,B,C,F,H,J}\{A,B,C,F,H,J\}
6B−DB-D1{A,B,C,D,F,H,J}\{A,B,C,D,F,H,J\}
7D−ED-E2{A,B,C,D,E,F,H,J}\{A,B,C,D,E,F,H,J\}
8J−KJ-K2{A,B,C,D,E,F,H,J,K}\{A,B,C,D,E,F,H,J,K\}
9J−IJ-I4{A,B,C,D,E,F,H,I,J,K}\{A,B,C,D,E,F,H,I,J,K\}
10I−GI-G2{A,B,C,D,E,F,G,H,I,J,K}\{A,B,C,D,E,F,G,H,I,J,K\}

因此,Prim 所得最小生成樹的邊為

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題30 分

請參考下列資料表,並利用結構化查詢語言(SQL)回答下列問題。(每小題 10 分,共 30 分)

學生資料表:

學號姓名
S01李白
S02杜甫
S03王維

教師資料表:

編號姓名
T01陳桂林
T02王桂林

課程資料表:

課號名稱教師
C01國文T01
C02國文T02
C03數學T01

選課資料表:

課號學號
C01S01
C02S01
C03S01
C01S02
C02S02
C03S02
C01S03
C02S03
C03S03

成績資料表:

學號課程分數
S01C0190
S01C0395
S02C0280
S02C0385
S03C0170
S03C0275

(一)不考慮缺考情況,列出課程名稱、授課教師姓名、不及格(分數小於 60 分)人數之 SQL 指令。

結果如下:

名稱姓名不及格人數
國文王桂林2
國文陳桂林1

(二)不考慮缺考情況,列出所有學生姓名及平均分數,並由高分至低分排序之 SQL 指令。

結果如下:

姓名平均分數
李白72.5
杜甫65
王維52.5

(三)列出缺考學生的姓名及課程名稱之 SQL 指令。

結果如下:

姓名名稱
李白國文
杜甫國文
王維數學

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查關聯式資料庫查詢,重點是多表連接、分組彙總、條件篩選,以及以反向連接找出缺考資料。

  • 連接(JOIN):利用共同欄位把學生、課程、教師、選課與成績資料對應起來。
  • 分組與彙總(GROUP BY、COUNT、AVG):依課程或學生分組,計算不及格人數或平均分數。
  • 條件篩選(WHERE):先挑出分數小於 60 分的成績紀錄。
  • 缺考判斷:以「已選課但沒有成績紀錄」代表缺考,可用 LEFT JOIN 搭配 IS NULL 找出。

題目指定「不考慮缺考情況」,因此計算不及格人數與平均分數時,只以成績資料表中實際存在的成績紀錄為準。

(一)課程名稱、授課教師姓名及不及格人數

先從成績資料表篩選分數小於 60 分的紀錄,再連接課程與教師資料,依課程及教師分組計算人數。

SELECT C.名稱,
 T.姓名,
 COUNT(*) AS 不及格人數
FROM 成績 AS G
JOIN 課程 AS C
 ON G.課程 = C.課號
JOIN 教師 AS T
 ON C.教師 = T.編號
WHERE G.分數 < 60
GROUP BY C.課號, C.名稱, T.編號, T.姓名;

依題目資料,成績低於 60 分的紀錄為:

  • S01、C02:國文、T02 王桂林,分數 55 分。
  • S02、C02:國文、T02 王桂林,分數 50 分。
  • S03、C03:數學、T01 陳桂林,分數 45 分。
  • S03、C02:國文、T02 王桂林,分數 55 分。

依課程與教師分組後,國文由王桂林授課有 3 人不及格,數學由陳桂林授課有 1 人不及格。題目所列結果表為「王桂林 2 人、陳桂林 1 人」,與提供的成績資料不一致;依表中成績逐筆計算,國文/王桂林應為 3 人。

(二)所有學生姓名與平均分數,依平均分數由高至低排序

以成績資料表連接學生資料表,按學生分組,再以 AVG 計算平均分數。排序時使用平均分數由大到小的 DESC。

SELECT S.姓名,
 AVG(G.分數) AS 平均分數
FROM 學生 AS S
JOIN 成績 AS G
 ON S.學號 = G.學號
GROUP BY S.學號, S.姓名
ORDER BY AVG(G.分數) DESC;

計算如下:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題