申論 1某政府機關建置「智慧交通監測系統」,透過路口攝影機每秒擷取一張交通影像,並即時分析車流量後提供民眾查詢。系統主要兩項工作為:A:接收並儲存交通影像、B:分析影像中的車輛數量。系統每秒接收1張原始影像,每張原始影像解析度為1280 × 720 pixels,色彩深度為24bits/pixel,之後為節省空間轉換為PNG 格式。請說明系統儲存每張原始未壓縮影像、以及1 分鐘內所需資料空間(KByte)。另外,為提高系統效能,作業系統將工作A 與工作B 分別建立為兩個獨立Process,並採用Round Robin 排程管理CPU,其時間片(Time Quantum)為4 ms;若工作A 完成一次影像儲存與工作B 完成一次影像分析,分別需8 ms與12 ms,且工作A 與工作B 於時間0 同時進入就緒佇列,排程順序為A 先於B。請說明CPU 執行順序,並計算工作A 與工作B 的等待時間。(25 分)
本卷皆為申論題,點「看答案與解析」查看擬答。
弱點分析
未作答的題目不計分。看我的紀錄
申論 2某政府機關為提升服務品質與系統擴充能力,近期規劃建置新一代「數位政府服務平台」,提供民眾單一入口網站登入、身分驗證、個人資料查詢、跨機關資料交換、線上申辦、表單下載、文件上傳、操作手冊及相關文件下載等服務。由於系統需長期支援全國民眾使用,且於報稅季、補助申請期間經常出現大量同時上線情況,因此資訊部門規劃採用雲端架構建置系統,並特別重視資料安全、網路效能及服務可用性。當民眾透過瀏覽器連線至政府服務平台後,系統需透過網路設備將封包傳送至資料中心;使用者登入與上傳文件時,需確保資料傳輸安全;當大量民眾同時存取系統時,則需透過流量分散與內容快取機制維持系統效能與服務穩定。請分別說明路由器(Router)、HTTPS、負載平衡器(LoadBalancer)與內容傳遞網路(CDN)在本案例中的功能,以及其對系統安全性、效能或可用性之貢獻。(25 分)
申論 3某政府機關設計「大學生住房補貼申請系統」,提供在外租屋的大學生申請住房補貼。請設計SQL 建立資料庫HousingSubsidy 資料表,包含下列欄位:申請編號(ApplyID,整數)、學生姓名(StudentName,變動字元)、租屋縣市(RentCity,變動字元)、月租金(MonthlyRent,整數)、手機號碼(Phone,變動字元)、申請年度(ApplyYear,整數)、審核狀態(ReviewStatus,變動字元),並設定ApplyID 為主鍵。若此住房補貼系統同時有大量學生進行申請、修改與查詢資料,請說明資料庫管理系統(DBMS)中的「交易(Transaction)」與「備份(Backup)」功能之重要性。另外,請填寫(I)~(VI)空格,使下列SQL 能正確完成:⑴查詢「高雄市」且「已核准」之住房補貼申請資料,統計各申請年度的總月租金,並依總月租金由大到小排序;⑵將學生姓名為「王小明」,申請年度為2026 年,其手機號碼變更為0988123456;⑶刪除「申請年度為2026 年,且審核狀態為未送出」的申請紀錄。(25 分)SELECT ApplyYear,(I)AS TotalRentFROM HousingSubsidyWHERE RentCity = '高雄市'AND ReviewStatus = '已核准'(II)ApplyYear(III)TotalRent > 10000(IV)TotalRent DESC;(V)HousingSubsidySET Phone = '0988123456'WHERE StudentName = '王小明' AND ApplyYear = 2026;(VI)FROM HousingSubsidyWHERE ApplyYear = 2026 AND ReviewStatus = '未送出';
申論 4某政府衛生單位設計流感疫情模擬程式,分析不同城市短期內的疫情發展情況。假設:⑴初始時已有A 人感染流感。⑵目前尚未痊癒之感染者每日會以M%的傳染率產生新增感染個案。⑶感染者自感染日起經過X 天後痊癒,痊癒後不再具有傳染力。⑷每日新增感染人數取整數部分(無條件捨去)。⑸城市若能有效施打疫苗,每日傳染率降低為原本的一半。下列程式模擬C1 與C2 城市,D 天後仍感染流感的人數,其中C1 城市未施打疫苗,C2 城市則有效施打疫苗,程式中以newCase[]記錄各日新增感染人數,其中newCase[0]儲存初始感染人數A,請填入(I)~(V)空格,使程式能正確模擬。另外,請說明程式中使用陣列newCase[]的功用,以及simulate()的運作邏輯與功能。(25 分)#include <stdio.h>#define MAXDAY 100int simulate(int A, double M, int X, int D) {int newCase[MAXDAY] = {0};int add = 0, current = A;newCase[0] =(I);for(int day = 1; day < D; day++) {add = current * M / 100;newCase[day] =(II);current =(III)+ add;if(day >=(IV)) { current = current - newCase[(V)];}}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;}