112 地方特考三等 統計類科 資料處理 考古題詳解

112 年・地方特考・三等・統計類科
試題代碼 資料處理

第 一 題25 分

一、加密系統是面對資訊安全威脅的一項資訊技術防護措施。

(一) 請說明對稱性加密與非對稱性加密的區別。(10 分)

(二) 請以 https 協定的 SSL/TLS 為例,說明私鑰(Private Key)與公鑰(Public Key)的運作方式。(15 分)

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

這一題的完整詳解

核心觀念

本題考查兩類密碼系統的金鑰配置、加解密方式與安全特性,以及 HTTPS 中 TLS 如何透過憑證與金鑰協商建立安全連線。HTTPS 並非單純以公鑰加密所有網頁資料,而是結合非對稱式密碼學與對稱式加密:前者用於驗證身分及協商工作階段金鑰,後者負責加密大量傳輸資料。

解題方法

作答可分兩部分:先比較對稱式與非對稱式加密的金鑰及效能;再依 TLS 握手流程,說明公鑰、私鑰、憑證及工作階段金鑰各自的用途。須特別區分「加密以保密」與「數位簽章以驗證來源及完整性」,也要避免把所有 TLS 版本都描述成固定使用 RSA 傳送金鑰。

(一)對稱式加密與非對稱式加密的區別

1. 對稱式加密

加密與解密使用相同的密鑰,或使用可由其中一把有效推得另一把的密鑰。傳送端與接收端必須事先安全地共享密鑰,再以該密鑰加密及解密資料。

例如,以密鑰 KK 加密明文 MM 得到密文 CC:

C=EK(M),M=DK(C)C=E_K(M), \qquad M=D_K(C)

其優點是運算速度快,適合大量資料加密;缺點是雙方必須安全地交換與保存密鑰,且多方通訊時,如何為每一對通訊者管理密鑰也會增加負擔。常見演算法包括 AES。

2. 非對稱式加密

每位使用者有一組相關聯的公鑰與私鑰:公鑰可公開,私鑰則由持有人妥善保管。依用途不同,金鑰使用方式也不同:

  • **保密傳輸:**傳送者以接收者的公鑰加密,只有持有對應私鑰的接收者能解密。
  • **數位簽章:**簽署者使用自己的私鑰產生簽章,接收者使用簽署者的公鑰驗證簽章。

非對稱式運算通常比對稱式運算耗時,較不適合直接加密大量資料;其優點是可以公開公鑰,降低雙方事先秘密共享加密金鑰的需求,並能支援數位簽章。常見演算法包括 RSA、ECC;實際用途依演算法與協定而異。

3. 比較整理

比較項目對稱式加密非對稱式加密
金鑰配置通訊雙方共享密鑰每位使用者有公鑰與私鑰
加解密速度快,適合大量資料通常較慢
金鑰交換須安全共享密鑰公鑰可公開,私鑰須保密
常見用途加密大量資料身分驗證、金鑰協商、數位簽章等

(二)HTTPS 中 SSL/TLS 的公鑰與私鑰運作方式

1. 伺服器持有金鑰並提供憑證

HTTPS 伺服器持有一組公鑰與私鑰:公鑰放在伺服器的數位憑證中,私鑰則由伺服器安全保管。伺服器傳送憑證給瀏覽器,憑證由受信任的憑證機構(CA)簽署,可供瀏覽器確認憑證中的公鑰與網站身分之間的關聯。

🔒

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

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

免費註冊

第 二 題25 分

二、請透過下列三個有關期中考的資料表(Tables),使用 SQL 查詢「王教授」的課程編號 ID 為「A123」課程,其班級總分與最後一名的學生姓名。

(tt 代表 Teacher 資料表名稱;ss 代表 Student 資料表名稱;ee 代表 Exam 資料表名稱。)

Teacher[TeacherID,TeacherName,ClassID]

Student[StudentID,StudentName,ClassID]

Exam[ExamName,StudentID,Subject,Score]

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

這一題的完整詳解

核心觀念

本題考查 SQL 的多表連接、分組彙總與排序取值。題目要求找出「王教授」的 A123 課程中,班級總分最低的學生姓名。

題目未明確說明「班級總分」如何計算。以下依一般命題慣例,將同一學生在該課程各科目的 Score 加總,作為該生的班級總分;並假設 ExamName 的值為課程編號 A123。

解題方法

先從 Teacher 找出王教授所授、ClassID 為 A123 的班級,再透過 ClassID 連接 Student,取得該班學生。接著以 StudentID 連接 Exam,篩選該課程的考試資料,並依學生分組加總分數。最後依總分由低至高排序,取第一名,即為總分最低者。

🔒

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

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

免費註冊

第 三 題25 分

三、在人工智慧與機器學習領域,狀態空間表示一個問題的所有可能解的集合,如下圖所示。請從狀態 A 開始,以字母排序的先後順序,用兩種常用的演算法:廣度優先搜尋(Breadth-First Search, BFS)與深度優先搜尋(Depth-First Search, DFS),分別列舉搜尋的結果。(25 分)

🖼️【此處有附圖,請對照原卷】

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

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

這一題的完整詳解

核心觀念

本題考查圖形搜尋中的:

  • 廣度優先搜尋(BFS):依距離起點的層級,由近而遠搜尋,使用佇列(Queue),遵守先進先出。
  • 深度優先搜尋(DFS):沿著一條路徑盡可能深入,再回溯搜尋,使用堆疊(Stack)或遞迴。
  • 當同一節點有多個未訪問鄰接節點時,依英文字母順序處理。
  • 圖中各連線視為無向邊,且節點一旦訪問即標記,避免重複搜尋。

由圖可整理出主要鄰接關係:

A:{B,C,D},C:{A,E,F},D:{A,G,H},F:{C,I,J}A:\{B,C,D\},\quad C:\{A,E,F\},\quad D:\{A,G,H\},\quad F:\{C,I,J\}

此外:

H:{D,K,L},G:{D},E:{C},B:{A},I:{F},J:{F},K:{H},L:{H}H:\{D,K,L\},\quad G:\{D\},\quad E:\{C\},\quad B:\{A\},\quad I:\{F\},\quad J:\{F\},\quad K:\{H\},\quad L:\{H\}

解題方法

一、廣度優先搜尋 BFS

從 AA 開始,先搜尋距離 AA 為 11 的節點,再搜尋距離為 22、距離為 33 的節點。

  1. 訪問 AA,依序加入 B,C,DB,C,D。
  2. 訪問 BB,沒有新的節點。
  3. 訪問 CC,加入 E,FE,F。
  4. 訪問 DD,加入 G,HG,H。
  5. 訪問 EE,沒有新的節點。
  6. 訪問 FF,加入 I,JI,J。
  7. 訪問 GG、HH;訪問 HH 時加入 K,LK,L。
  8. 最後依序訪問 I,J,K,LI,J,K,L。

因此 BFS 搜尋結果為:

A→B→C→D→E→F→G→H→I→J→K→L\boxed{A\rightarrow B\rightarrow C\rightarrow D\rightarrow E\rightarrow F\rightarrow G\rightarrow H\rightarrow I\rightarrow J\rightarrow K\rightarrow L}

分層表示為:

{A}→{B,C,D}→{E,F,G,H}→{I,J,K,L}\{A\} \rightarrow \{B,C,D\} \rightarrow \{E,F,G,H\} \rightarrow \{I,J,K,L\}

二、深度優先搜尋 DFS

🔒

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

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

免費註冊

第 四 題25 分

四、請列舉「This is a book」中間有空格的連續字串,經過下列程式執行後,兩個 printf 的輸出內容。(25 分)

#include <stdio.h> #include <string.h>

void reverse(char str[], int start, int end) { char temp;

while (start < end) {
    temp = str[start];
    str[start] = str[end];
    str[end] = temp;
    start++;
    end--;
}

}

int main() { char str[] = "This is a book"; int len = strlen(str);

reverse(str, 0, len - 1);
printf("%s\n", str);

int word_start = 0;

for (int i = 0; i < len; i++) {
    if (str[i] == ' ') {
        reverse(str, word_start, i - 1);
        word_start = i + 1;
    }
}

reverse(str, word_start, len - 1);
printf("%s\n", str);

return 0;

}

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

這一題的完整詳解

核心觀念

本題考查 C 語言字串的儲存方式、strlen 的計算,以及利用反轉整個字串再反轉各單字,完成「保留單字原本順序、但反轉單字排列」的操作。

C 字串以空字元 '\0' 結尾。strlen(str) 計算字串中 '\0' 之前的字元數,不包含結尾的 '\0'。題目字串 "This is a book" 長度為 1414,索引範圍是 00 到 1313。

解題方法

原字串依索引排列如下:

索引012345678910111213
字元This空格is空格a空格book

第一次呼叫 reverse(str, 0, len - 1),將索引 00 至 1313 的全部字元反轉,因此第一個 printf 輸出:

🔒

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

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

免費註冊

其他考古題