115 高普考高考三級 統計 資料處理 考古題詳解
第 一 題25 分
某政府機關建置「智慧交通監測系統」,透過路口攝影機每秒擷取一張交通影像,並即時分析車流量後提供民眾查詢。
系統主要兩項工作為:
- A:接收並儲存交通影像。
- B:分析影像中的車輛數量。
系統每秒接收 1 張原始影像,每張原始影像解析度為 pixels,色彩深度為 bits/pixel,之後為節省空間轉換為 PNG 格式。
請說明系統儲存每張原始未壓縮影像,以及 1 分鐘內所需資料空間(KByte)。
另外,為提高系統效能,作業系統將工作 A 與工作 B 分別建立為兩個獨立 Process,並採用 Round Robin 排程管理 CPU,其時間片(Time Quantum)為 ms;若工作 A 完成一次影像儲存與工作 B 完成一次影像分析,分別需 ms 與 ms,且工作 A 與工作 B 於時間 同時進入就緒佇列,排程順序為 A 先於 B。
請說明 CPU 執行順序,並計算工作 A 與工作 B 的等待時間。
登入後即可作答並保存紀錄。
核心觀念
本題考查兩個觀念:
- 影像資料量換算:未壓縮影像的大小由「像素數 × 每像素位元數」決定,再將位元換算為位元組及 KByte。
- Round Robin(RR)排程:每個 Process 每次最多使用一個時間片;若尚未完成,就回到就緒佇列尾端等待下一輪。等待時間是 Process 處於就緒狀態、等待 CPU 的時間,不包含實際執行時間。
題目提到影像之後會轉為 PNG,但所問的是「原始未壓縮影像」,因此計算時不套用 PNG 壓縮率。
解題方法
一、計算未壓縮影像的資料空間
每張影像的像素數為:
每個像素有 bits,因此每張影像的資料量為:
bits 等於 Byte,故:
以 換算:
系統每秒接收 張影像, 分鐘共接收 張,因此:
二、列出 CPU 執行順序並計算等待時間
時間片為 ms。工作 A 需 ms,須執行兩個時間片;工作 B 需 ms,須執行三個時間片。兩者在時間 同時進入就緒佇列,且 A 排在 B 前面。
依 RR 排程逐段執行:
第 二 題25 分
某政府機關為提升服務品質與系統擴充能力,近期規劃建置新一代「數位政府服務平台」,提供民眾單一入口網站登入、身分驗證、個人資料查詢、跨機關資料交換、線上申辦、表單下載、文件上傳、操作手冊及相關文件下載等服務。
由於系統需長期支援全國民眾使用,且於報稅季、補助申請期間經常出現大量同時上線情況,因此資訊部門規劃採用雲端架構建置系統,並特別重視資料安全、網路效能及服務可用性。
當民眾透過瀏覽器連線至政府服務平台後,系統需透過網路設備將封包傳送至資料中心;使用者登入與上傳文件時,需確保資料傳輸安全;當大量民眾同時存取系統時,則需透過流量分散與內容快取機制維持系統效能與服務穩定。
請分別說明路由器(Router)、HTTPS、負載平衡器(Load Balancer)與內容傳遞網路(CDN)在本案例中的功能,以及其對系統安全性、效能或可用性之貢獻。
登入後即可作答並保存紀錄。
核心觀念
本題考查政府雲端服務平台中,網路傳輸與服務架構元件的基本功能,以及它們對安全性、效能和可用性的貢獻。四者分工如下:
- 路由器(Router):依據 IP 位址與路由表,選擇封包通往目的網路的路徑。
- HTTPS:以 TLS 加密 HTTP 通訊,保護瀏覽器與伺服器間傳送的資料。
- 負載平衡器(Load Balancer):將使用者請求分配到多台伺服器,避免單一伺服器負載過高。
- 內容傳遞網路(CDN):在分散各地的節點快取靜態內容,讓使用者就近取得資料。
解題方法
依照服務請求從使用者端到平台的需求,分別判斷「封包如何到達」、「傳輸如何受到保護」、「大量請求如何分流」及「常用內容如何快速傳送」。這種依功能定位作答的方法,可避免把網路傳輸設備、加密協定與流量管理機制混為一談。
各項功能與貢獻
一、路由器(Router)
路由器連接不同 IP 網路,讀取封包的目的 IP 位址,並依路由表決定下一個轉送方向。在本案例中,路由器負責將民眾瀏覽器送出的封包,經由網路轉送至政府平台所在的資料中心或雲端網路。
路由器的主要貢獻是提供網路間的連通與封包轉送,使使用者能到達服務平台。它本身不負責加密 HTTP 內容,也不負責將應用程式請求平均分配至多台網站伺服器。
二、HTTPS
HTTPS 是以 TLS 保護的 HTTP 通訊。瀏覽器與伺服器透過 TLS 握手建立安全連線,並使用伺服器憑證驗證伺服器身分、協商加密參數,再以加密方式傳送資料。
在本案例中,民眾登入、查詢個人資料或上傳文件時,HTTPS 可提供:
第 三 題25 分
某政府機關設計「大學生住房補貼申請系統」,提供在外租屋的大學生申請住房補貼。
請設計 SQL 建立資料庫 HousingSubsidy 資料表,包含下列欄位:
- 申請編號(ApplyID,整數)
- 學生姓名(StudentName,變動字元)
- 租屋縣市(RentCity,變動字元)
- 月租金(MonthlyRent,整數)
- 手機號碼(Phone,變動字元)
- 申請年度(ApplyYear,整數)
- 審核狀態(ReviewStatus,變動字元)
並設定 ApplyID 為主鍵。
若此住房補貼系統同時有大量學生進行申請、修改與查詢資料,請說明資料庫管理系統(DBMS)中的「交易(Transaction)」與「備份(Backup)」功能之重要性。
另外,請填寫 (I)~(VI) 空格,使下列 SQL 能正確完成:
- 查詢「高雄市」且「已核准」之住房補貼申請資料,統計各申請年度的總月租金,並依總月租金由大到小排序。
- 將學生姓名為「王小明」、申請年度為 年者,其手機號碼變更為 0988123456。
- 刪除「申請年度為 年,且審核狀態為未送出」的申請紀錄。
SQL 如下:
SELECT ApplyYear, ____ AS TotalRent FROM HousingSubsidy WHERE RentCity = '高雄市' AND ReviewStatus = '已核准' ____ ApplyYear ____ TotalRent > 10000 ____ TotalRent DESC;
____ HousingSubsidy SET Phone = '0988123456' WHERE StudentName = '王小明' AND ApplyYear = 2026;
____ FROM HousingSubsidy WHERE ApplyYear = 2026 AND ReviewStatus = '未送出';
登入後即可作答並保存紀錄。
核心觀念
本題考查關聯式資料表的建立、主鍵設定、資料彙總查詢,以及資料庫管理系統(DBMS)的交易與備份功能。SQL 關鍵字用途如下:
CREATE TABLE:建立資料表;PRIMARY KEY:指定主鍵。SUM:加總欄位;GROUP BY:依欄位分組彙總。HAVING:篩選分組後的彙總結果;ORDER BY:排序查詢結果。UPDATE:修改資料;DELETE:刪除資料。
解題方法
建立資料表
依題目指定的資料型態建立欄位,並將 ApplyID 設為主鍵。VARCHAR(n) 表示最多可容納 個字元的變動長度字串,字串欄位長度可依系統需求調整;此處設定為 VARCHAR(50)。
CREATE TABLE HousingSubsidy (
ApplyID INT PRIMARY KEY,
StudentName VARCHAR(50),
RentCity VARCHAR(50),
MonthlyRent INT,
Phone VARCHAR(20),
ApplyYear INT,
ReviewStatus VARCHAR(20)
);
手機號碼使用字串型態,因為它是識別資訊而非用來運算的數值,且可能有前置的 0。
查詢各年度總月租金
先以 SUM(MonthlyRent) 計算總月租金,再用 GROUP BY ApplyYear 按年度彙總。HAVING 篩選分組後的總額,最後以 ORDER BY 依總額遞減排序。
SELECT ApplyYear, SUM(MonthlyRent) AS TotalRent
FROM HousingSubsidy
WHERE RentCity = '高雄市'
AND ReviewStatus = '已核准'
GROUP BY ApplyYear
HAVING SUM(MonthlyRent) > 10000
ORDER BY TotalRent DESC;
WHERE 先篩選個別申請紀錄;HAVING 則在分組與彙總後,篩選各年度的總額。
修改手機號碼
以 UPDATE 指定要修改的資料表,並用 WHERE 限定姓名與申請年度,避免更新到其他申請紀錄。
第 四 題25 分
某政府衛生單位設計流感疫情模擬程式,分析不同城市短期內的疫情發展情況。假設:
- 初始時已有 人感染流感。
- 目前尚未痊癒之感染者每日會以 的傳染率產生新增感染個案。
- 感染者自感染日起經過 天後痊癒,痊癒後不再具有傳染力。
- 每日新增感染人數取整數部分(無條件捨去)。
- 城市若能有效施打疫苗,每日傳染率降低為原本的一半。
下列程式模擬 C1 與 C2 城市 天後仍感染流感的人數,其中 C1 城市未施打疫苗,C2 城市則有效施打疫苗。程式中以陣列 newCase[] 記錄各日新增感染人數,其中 newCase[0] 儲存初始感染人數 ,請填入 (I)~(V) 空格,使程式能正確模擬。
另外,請說明程式中使用陣列 newCase[] 的功用,以及 simulate() 的運作邏輯與功能。
#include <stdio.h> #define MAXDAY 100
int simulate(int A, double M, int X, int D) { int newCase[MAXDAY] = {0}; int add = 0, current = A;
newCase[0] = ____;
for (int day = 1; day < D; day++) {
add = current * M / 100;
newCase[day] = ____;
current = ____ + add;
if (day >= ____) {
current = current - newCase[____];
}
}
return current;
}
int main() { int A = 1000, X = 5, D = 10; double M = 10.0;
int C1 = simulate(A, M, X, D);
int C2 = simulate(A, M / 2.0, X, D);
printf("C1:%d, C2:%d\n", C1, C2);
return 0;
}
登入後即可作答並保存紀錄。
核心觀念
本題考「陣列保存歷史資料」與「以每日新增、痊癒人數更新目前感染人數」的模擬。newCase[day] 記錄第 day 日新增感染人數;newCase[0] 記錄初始感染人數 。
每天先依目前尚未痊癒的感染者計算新增人數,再將已滿 天的感染者扣除。每日新增人數依題意無條件捨去,因此整數指派會保留計算結果的整數部分。
解題方法
以 current 表示當日更新前尚未痊癒的感染總數。第 day 日的新增感染數為:
因為 add 是第 day 日新增的人數,須存入 newCase[day]。加入新增個案後,再扣除感染日距今已滿 天者;這些人是第 day-X 日新增的個案。因此:
- (I) 初始感染數:
A - (II) 當日新增感染數:
add - (III) 更新感染總數時加入新增人數:
current - (IV) 開始扣除痊癒者的條件:
X - (V) 扣除第
day-X日新增的人數:day - X
填妥後的程式如下: