109 高普考高考三級 統計 資料處理 考古題詳解

109 年・高普考・高考三級・統計
試題代碼 資料處理

第 一 題25 分

傳輸協定當中分為 TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)兩種協定,請說明何謂 TCP?以及 TCP 利用何種機制,實現流量控制功能?

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

這一題的完整詳解

核心觀念

本題測驗電腦網路(OSI 七層模型與 TCP/IP 協定架構)中傳輸層(Transport Layer)的核心協定運作原理,涉及以下核心觀念:

  1. TCP(傳輸控制協定)之定義與定位:
  • 位於 TCP/IP 體系之傳輸層(對應 OSI 第四層)。
  • 核心本質為連線導向(Connection-Oriented)、可靠(Reliable)、**點對點(Point-to-Point)且以位元組串流(Byte Stream)**形式進行傳輸之協定。
  1. 流量控制(Flow Control)之定義與目的:
  • 傳輸速率匹配:防止傳送端發送資料速度過快,導致接收端之接收緩衝區(Receive Buffer)溢位(Overflow)而造成封包遺失。
  1. 滑動視窗機制(Sliding Window Mechanism):
  • TCP 採用以「位元組(Byte)」為單位的動態滑動視窗達成端對端(End-to-End)流量控制。
  • 核心參數為接收端通告的接收視窗大小(Receive Window, rwndrwnd),傳送端可傳送之未確認資料上限受限於: LastByteSent−LastByteAcked≤rwnd\text{LastByteSent} - \text{LastByteAcked} \le rwnd

解題方法

本題為標準的雙子題申論題,作答策略採取「定義明確化、機制流程化、結構層次化」的切入方式:

  1. 第一部分:何謂 TCP
  • 定位與基礎定義:開門見山點出其為 TCP/IP 傳輸層的核心連線導向協定。
  • 三大支柱特徵:分項說明「連線建立與終止(三向交握/四向交握)」、「可靠性保證機制(序號、確認應答 ACK、逾時重傳)」及「位元組串流導向」。
  1. 第二部分:流量控制之實現機制
  • 指名關鍵機制:開門見山指出以**滑動視窗機制(Sliding Window Mechanism)**實現。
  • 說明回饋與通告流程:說明接收端如何透過 TCP 標頭(Header)中的 16 bits16\text{ bits} 視窗大小欄位(Window Size)回傳 rwndrwnd 給傳送端。
  • 極端情境與防護(加分點):說明當接收緩衝區滿載時產生「零視窗(Zero Window)」之處理機制(堅持計時器 Persist Timer 與探測封包 Probe Segment),展現作答深度。

選項分析

本題為專業科目申論題,非選擇題。依據國考閱卷給分標準,將題意拆解為兩大評分面向進行得分要點分析:

  1. 子題一:何謂 TCP 之評分關鍵
  • 應掌握要點:必須明確寫出「連線導向(三向交握)」與「可靠傳輸(序號、確認 ACK、重傳)」。若僅寫「傳輸控制協定」或「網際網路常用協定」,無法獲得完整分數。
  • 與 UDP 之對比襯托:適度點出 UDP 屬「非連線、不可靠的資料包傳輸」,能突顯 TCP 的連線維護與狀態管理特色。
  1. 子題二:流量控制機制之評分關鍵
  • 應掌握要點:核心名詞「滑動視窗(Sliding Window)」為必備關鍵字;必須進一步寫出「接收視窗(Receive Window, rwndrwnd)」由接收端通告傳送端,藉以控制傳送速率。
  • 失分地雷分析:極多考生將「流量控制(Flow Control)」與「壅塞控制(Congestion Control)」混淆。若在此處大篇幅描寫慢啟動(Slow Start)、壅塞避免(Congestion Avoidance)或壅塞視窗(cwndcwnd),屬於答非所問,無法得分。

解題技巧

  1. 精準區分兩大控制機制(必考陷阱):
  • 流量控制(Flow Control):受制於接收端的接收能力,由接收端透過 rwndrwnd 通知,避免接收端緩衝區爆滿(端對端問題)。
  • 壅塞控制(Congestion Control):受制於整個網路路徑的承載能力,由傳送端透過演算法動態計算 cwndcwnd 調整,避免網路節點崩潰(全域網路問題)。
  1. 答題關鍵詞排版化:
  • 在申論紙上,將專有名詞及關鍵參數(如:三向交握、ACK、Sequence Number、rwndrwnd、滑動視窗)以列點方式呈現,能讓閱卷委員在 30 秒內快速抓取滿分給分點。

🔒

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

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

免費註冊

第 二 題25 分

若要編碼一篇文章,字母及出現頻率分別為:A/5A/5、B/8B/8、C/16C/16、D/21D/21、E/24E/24、F/26F/26。

請利用 Huffman 演算法畫出 Huffman 樹,並依左子樹編碼 00、右子樹編碼 11,寫出各字母的編碼為何?

若有一篇 600600 字的文章,則共需多少位元?

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

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

這一題的完整詳解

核心觀念

Huffman 編碼會反覆取出目前頻率最低的兩個節點,合併成一個權重為兩者總和的新節點,直到形成一棵二元樹。依題意,左子樹邊標記為 00,右子樹邊標記為 11;從根節點走到字母葉節點的路徑,就是該字母的編碼。

Huffman 編碼是前綴碼:任何一個字母的編碼都不會是另一個字母編碼的前綴。

解題方法

依頻率由小到大合併:

  1. A(5)+B(8)=13A(5)+B(8)=13
  2. 13+C(16)=2913+C(16)=29
  3. D(21)+E(24)=45D(21)+E(24)=45
  4. F(26)+29=55F(26)+29=55
  5. 45+55=10045+55=100

依左邊編碼 00、右邊編碼 11,可畫出下列 Huffman 樹:

 (100)
 0/ \1
 (45) (55)
 / \ / \
 0/ \1 0/ \1
 D(21) E(24) F(26) (29)
 / \
 0/ \1
 (13) C(16)
 / \
 0/ \1
 A(5) B(8)

各字母編碼

由根節點沿路徑讀取邊上的 00 或 11:

🔒

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

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

免費註冊

第 三 題15 分

資料隱碼攻擊(SQL Injection)是發生於應用程式與資料庫層的安全漏洞,請解釋何謂 SQL Injection。

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

這一題的完整詳解

核心觀念

本題測驗資訊安全與資料庫管理系統之核心概念——資料隱碼攻擊(SQL Injection,簡稱 SQLi)。

  1. 本質與原理:SQL Injection 屬於**代碼注入(Code Injection)漏洞(常年名列 OWASP Top 10 安全威脅)。其根本成因在於應用程式處理使用者輸入時,未進行適當的驗證、過濾或轉義(Escaping),便直接將外部輸入以字串串接(Concatenation)**的方式動態組裝成 SQL 指令,導致資料庫解析器將「惡意輸入的資料」誤解析為「SQL 指令語法」,進而竄改原本查詢語句的邏輯架構。
  2. 涉及層級:發生於應用程式層(Web/App 邏輯層)與資料庫層(DBMS)的介面溝通處。

解題方法

解答本題應採取公職申論題高分架構「定義與成因 →\rightarrow 攻擊實例說明 →\rightarrow 潛在危害 →\rightarrow 防禦機制」,邏輯嚴謹且具體:

一、 定義與成因

  • 定義:攻擊者透過應用程式的前端輸入欄位(如表單、URL 參數、HTTP 標頭等),注入惡意的 SQL 語法片段,欺騙資料庫伺服器執行非預期的 SQL 指令。
  • 成因:程式碼混合了「資料(Data)」與「代碼(Code)」的界線,使用不安全的動態字串拼接(如 query = "SELECT * FROM users WHERE id = '" + userInput + "'")。

二、 攻擊範例(以身分驗證繞過為例)

  1. 原本程式設計之查詢:
SELECT * FROM Users WHERE Username = '$user' AND Password = '$password';
  1. 攻擊者輸入:
  • 帳號($user)輸入:admin' -- 或 ' OR '1'='1
  • 密碼($password)輸入:任意值
  1. 資料庫實際執行的查詢:
SELECT * FROM Users WHERE Username = 'admin' --' AND Password = '...';
  • 語法中的單引號 ' 提前閉合了字串,--(SQL 註解符號)將後續的密碼檢查邏輯完全忽略,攻擊者無需密碼即可成功以 admin 身分登入。

三、 攻擊危害

  1. 機密性破壞(Confidentiality):竊取資料庫機敏資料(如帳號密碼、個資、財務紀錄)。
  2. 完整性破壞(Integrity):未經授權竄改、插入或刪除資料(如透過 UPDATE、INSERT 或注入 DROP TABLE)。
🔒

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

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

免費註冊

第 四 題25 分

請利用實體關聯雞爪圖,依下列敘述繪製出完整的實體關聯圖:

(1) 客戶(Customer)內包括:客戶編號(Customer_no)、客戶姓名(Customer_name)、電話(Customer_tel)、性別(Customer_sex)以及生日(Customer_birth),其中客戶編號為唯一值。每位客戶可以下多張訂單,也可以沒有下訂單,且一張訂單僅能對應到一位客戶。

(2) 訂單(Order)內包括:訂單編號(Order_no)、訂單日期(Order_birth)、訂單價格(Order_price)、訂購商品(Order_product),其中訂單編號為唯一值,且每張訂單都須包含至少一項產品。

(3) 產品(Product)內包括:產品編號(Product_no)、產品價格(Product_price)、產品名稱(Product_name)、產品數量(Product_quantity),其中產品編號為唯一值。每一個產品可以包含在多個訂單中,也可以沒有。

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

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

這一題的完整詳解

核心觀念

本題考實體關聯圖(ERD)的實體、屬性、主鍵,以及關係的基數與參與限制:

  • 實體代表要管理的對象,例如客戶、訂單、產品。
  • 主鍵能唯一識別實體中的每筆資料;題目指定客戶編號、訂單編號、產品編號分別唯一。
  • 基數表示實體間可連結的筆數;「可以沒有」表示最小值為 0,「至少一項」表示最小值為 1。
  • 訂單與產品是多對多關係,需用關聯實體拆解,才能完整表示哪些產品屬於哪些訂單。

解題方法

先依題目列出三個實體及其屬性,再逐段判斷關係的最小值與最大值。

  1. 客戶與訂單:一對多
  • 每位客戶可以沒有訂單,也可以有多張訂單,因此客戶對訂單為 0..N0..N。
  • 每張訂單僅對應一位客戶,因此訂單必須且只能對應一位客戶,為 1..11..1。
  1. 訂單與產品:多對多
  • 每張訂單至少包含一項產品,因此訂單對產品為 1..N1..N。
  • 每個產品可以沒有出現在訂單中,也可以出現在多張訂單,因此產品對訂單為 0..N0..N。
  • 以關聯實體「訂購明細(Order_product)」拆解多對多關係。每筆訂購明細必須且只能連結一張訂單與一項產品;訂單編號與產品編號組成複合主鍵。

關係圖如下:

Customer ||────────o{ Order
 一位客戶 零至多張訂單
 每張訂單恰屬一位客戶

Order ||────────|{ Order_product
 一張訂單 至少一筆訂購明細
 每筆明細恰屬一張訂單

Product ||────────o{ Order_product
 一項產品 零至多筆訂購明細
 每筆明細恰指向一項產品

實體與屬性如下:

🔒

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

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

免費註冊

第 五 題10 分

有一個浮點數陣列 float A[6][12][18]\mathrm{float}\ A[6][12][18];若 sizeof(float)=4\mathrm{sizeof}(\mathrm{float})=4,且 A[5][9][17]A[5][9][17] 在記憶體中的位址為 FF4A16\mathrm{FF4A16},元素 A[4][7][16]A[4][7][16] 的位址為何?(排列方式以列為主)

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

這一題的完整詳解

核心觀念

本題評量多維陣列在記憶體中的定址映射(Array Address Mapping)與進位制運算,屬於資料結構與計算機基礎常考題型。核心概念涵蓋:

  1. 以列為主(Row-Major Order, RMO)之三維陣列定址公式: 在 C 語言語法中,陣列索引值由 00 起算。宣告 float A[D1][D2][D3] 代表三個維度大小分別為 D1=6D_1=6、D2=12D_2=12、D3=18D_3=18。 任一元素 A[i][j][k]A[i][j][k] 相對於基底位址 A[0][0][0]A[0][0][0] 的元素偏移量(Offset)為: Offset(i,j,k)=i×(D2×D3)+j×D3+k\mathrm{Offset}(i, j, k) = i \times (D_2 \times D_3) + j \times D_3 + k

  2. 記憶體位址計算公式: 若元素型態所佔大小為 dd 位元組(本題 sizeof(float)=4\mathrm{sizeof}(\mathrm{float}) = 4 位元組),則元素位址為: Loc(A[i][j][k])=Loc(A[0][0][0])+Offset(i,j,k)×d\mathrm{Loc}(A[i][j][k]) = \mathrm{Loc}(A[0][0][0]) + \mathrm{Offset}(i, j, k) \times d

  3. 相對位移法: 當已知陣列中某一非零元素的位址,欲求另一元素位址時,無需先倒推基底位址 Loc(A[0][0][0])\mathrm{Loc}(A[0][0][0]),直接求兩元素間的「元素個數差(ΔN\Delta N)」,再乘上單位大小 dd 轉為十六進位進行加減,最為迅速且不易出錯。


解題方法

步驟一:分析陣列維度與給定條件

  • 陣列宣告:float A[6][12][18]   ⟹  D1=6, D2=12, D3=18\implies D_1 = 6,\ D_2 = 12,\ D_3 = 18
  • 資料型態大小:d=sizeof(float)=4d = \mathrm{sizeof}(\mathrm{float}) = 4 位元組
  • 已知位址:元素 A[5][9][17]A[5][9][17] 之位址為 FF4A16\mathrm{FF4A}_{16}(題目文字 FF4A16\mathrm{FF4A16} 係國考試卷排版下標轉為純文字之慣用記法,下標 1616 代表十六進位制)
  • 目標位址:元素 A[4][7][16]A[4][7][16] 之位址

步驟二:計算兩元素之間的元素個數差(ΔN\Delta N)

由於 A[4][7][16]A[4][7][16] 各維度索引皆小於 A[5][9][17]A[5][9][17],其在記憶體中的存放順序必定在 A[5][9][17]A[5][9][17] 之前,兩者相差之元素個數為: ΔN=Offset(5,9,17)−Offset(4,7,16)\Delta N = \mathrm{Offset}(5, 9, 17) - \mathrm{Offset}(4, 7, 16) 利用各維度差值直接展開: ΔN=(5−4)×(D2×D3)+(9−7)×D3+(17−16)\Delta N = (5 - 4) \times (D_2 \times D_3) + (9 - 7) \times D_3 + (17 - 16) 代入維度大小 D2=12D_2 = 12、D3=18D_3 = 18: ΔN=1×(12×18)+2×18+1\Delta N = 1 \times (12 \times 18) + 2 \times 18 + 1 ΔN=216+36+1=253(個元素)\Delta N = 216 + 36 + 1 = 253\text{(個元素)}

步驟三:計算記憶體位元組差距並轉換為十六進位

每個浮點數佔 44 位元組,兩者在記憶體中的位元組差距量為: ΔBytes=253×4=1012 位元組(十進位)\Delta \mathrm{Bytes} = 253 \times 4 = 1012\text{ 位元組(十進位)}

🔒

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

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

免費註冊

其他考古題