109 高普考高考三級 統計 資料處理 考古題詳解
第 一 題25 分
傳輸協定當中分為 TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)兩種協定,請說明何謂 TCP?以及 TCP 利用何種機制,實現流量控制功能?
登入後即可作答並保存紀錄。
核心觀念
本題測驗電腦網路(OSI 七層模型與 TCP/IP 協定架構)中傳輸層(Transport Layer)的核心協定運作原理,涉及以下核心觀念:
- TCP(傳輸控制協定)之定義與定位:
- 位於 TCP/IP 體系之傳輸層(對應 OSI 第四層)。
- 核心本質為連線導向(Connection-Oriented)、可靠(Reliable)、**點對點(Point-to-Point)且以位元組串流(Byte Stream)**形式進行傳輸之協定。
- 流量控制(Flow Control)之定義與目的:
- 傳輸速率匹配:防止傳送端發送資料速度過快,導致接收端之接收緩衝區(Receive Buffer)溢位(Overflow)而造成封包遺失。
- 滑動視窗機制(Sliding Window Mechanism):
- TCP 採用以「位元組(Byte)」為單位的動態滑動視窗達成端對端(End-to-End)流量控制。
- 核心參數為接收端通告的接收視窗大小(Receive Window, ),傳送端可傳送之未確認資料上限受限於:
解題方法
本題為標準的雙子題申論題,作答策略採取「定義明確化、機制流程化、結構層次化」的切入方式:
- 第一部分:何謂 TCP
- 定位與基礎定義:開門見山點出其為 TCP/IP 傳輸層的核心連線導向協定。
- 三大支柱特徵:分項說明「連線建立與終止(三向交握/四向交握)」、「可靠性保證機制(序號、確認應答 ACK、逾時重傳)」及「位元組串流導向」。
- 第二部分:流量控制之實現機制
- 指名關鍵機制:開門見山指出以**滑動視窗機制(Sliding Window Mechanism)**實現。
- 說明回饋與通告流程:說明接收端如何透過 TCP 標頭(Header)中的 視窗大小欄位(Window Size)回傳 給傳送端。
- 極端情境與防護(加分點):說明當接收緩衝區滿載時產生「零視窗(Zero Window)」之處理機制(堅持計時器 Persist Timer 與探測封包 Probe Segment),展現作答深度。
選項分析
本題為專業科目申論題,非選擇題。依據國考閱卷給分標準,將題意拆解為兩大評分面向進行得分要點分析:
- 子題一:何謂 TCP 之評分關鍵
- 應掌握要點:必須明確寫出「連線導向(三向交握)」與「可靠傳輸(序號、確認 ACK、重傳)」。若僅寫「傳輸控制協定」或「網際網路常用協定」,無法獲得完整分數。
- 與 UDP 之對比襯托:適度點出 UDP 屬「非連線、不可靠的資料包傳輸」,能突顯 TCP 的連線維護與狀態管理特色。
- 子題二:流量控制機制之評分關鍵
- 應掌握要點:核心名詞「滑動視窗(Sliding Window)」為必備關鍵字;必須進一步寫出「接收視窗(Receive Window, )」由接收端通告傳送端,藉以控制傳送速率。
- 失分地雷分析:極多考生將「流量控制(Flow Control)」與「壅塞控制(Congestion Control)」混淆。若在此處大篇幅描寫慢啟動(Slow Start)、壅塞避免(Congestion Avoidance)或壅塞視窗(),屬於答非所問,無法得分。
解題技巧
- 精準區分兩大控制機制(必考陷阱):
- 流量控制(Flow Control):受制於接收端的接收能力,由接收端透過 通知,避免接收端緩衝區爆滿(端對端問題)。
- 壅塞控制(Congestion Control):受制於整個網路路徑的承載能力,由傳送端透過演算法動態計算 調整,避免網路節點崩潰(全域網路問題)。
- 答題關鍵詞排版化:
- 在申論紙上,將專有名詞及關鍵參數(如:三向交握、ACK、Sequence Number、、滑動視窗)以列點方式呈現,能讓閱卷委員在 30 秒內快速抓取滿分給分點。
第 二 題25 分
若要編碼一篇文章,字母及出現頻率分別為:、、、、、。
請利用 Huffman 演算法畫出 Huffman 樹,並依左子樹編碼 、右子樹編碼 ,寫出各字母的編碼為何?
若有一篇 字的文章,則共需多少位元?
登入後即可作答並保存紀錄。
核心觀念
Huffman 編碼會反覆取出目前頻率最低的兩個節點,合併成一個權重為兩者總和的新節點,直到形成一棵二元樹。依題意,左子樹邊標記為 ,右子樹邊標記為 ;從根節點走到字母葉節點的路徑,就是該字母的編碼。
Huffman 編碼是前綴碼:任何一個字母的編碼都不會是另一個字母編碼的前綴。
解題方法
依頻率由小到大合併:
依左邊編碼 、右邊編碼 ,可畫出下列 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)
各字母編碼
由根節點沿路徑讀取邊上的 或 :
第 三 題15 分
資料隱碼攻擊(SQL Injection)是發生於應用程式與資料庫層的安全漏洞,請解釋何謂 SQL Injection。
登入後即可作答並保存紀錄。
核心觀念
本題測驗資訊安全與資料庫管理系統之核心概念——資料隱碼攻擊(SQL Injection,簡稱 SQLi)。
- 本質與原理:SQL Injection 屬於**代碼注入(Code Injection)漏洞(常年名列 OWASP Top 10 安全威脅)。其根本成因在於應用程式處理使用者輸入時,未進行適當的驗證、過濾或轉義(Escaping),便直接將外部輸入以字串串接(Concatenation)**的方式動態組裝成 SQL 指令,導致資料庫解析器將「惡意輸入的資料」誤解析為「SQL 指令語法」,進而竄改原本查詢語句的邏輯架構。
- 涉及層級:發生於應用程式層(Web/App 邏輯層)與資料庫層(DBMS)的介面溝通處。
解題方法
解答本題應採取公職申論題高分架構「定義與成因 攻擊實例說明 潛在危害 防禦機制」,邏輯嚴謹且具體:
一、 定義與成因
- 定義:攻擊者透過應用程式的前端輸入欄位(如表單、URL 參數、HTTP 標頭等),注入惡意的 SQL 語法片段,欺騙資料庫伺服器執行非預期的 SQL 指令。
- 成因:程式碼混合了「資料(Data)」與「代碼(Code)」的界線,使用不安全的動態字串拼接(如
query = "SELECT * FROM users WHERE id = '" + userInput + "'")。
二、 攻擊範例(以身分驗證繞過為例)
- 原本程式設計之查詢:
SELECT * FROM Users WHERE Username = '$user' AND Password = '$password';
- 攻擊者輸入:
- 帳號(
$user)輸入:admin' --或' OR '1'='1 - 密碼(
$password)輸入:任意值
- 資料庫實際執行的查詢:
SELECT * FROM Users WHERE Username = 'admin' --' AND Password = '...';
- 語法中的單引號
'提前閉合了字串,--(SQL 註解符號)將後續的密碼檢查邏輯完全忽略,攻擊者無需密碼即可成功以admin身分登入。
三、 攻擊危害
- 機密性破壞(Confidentiality):竊取資料庫機敏資料(如帳號密碼、個資、財務紀錄)。
- 完整性破壞(Integrity):未經授權竄改、插入或刪除資料(如透過
UPDATE、INSERT或注入DROP TABLE)。
第 四 題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。
- 訂單與產品是多對多關係,需用關聯實體拆解,才能完整表示哪些產品屬於哪些訂單。
解題方法
先依題目列出三個實體及其屬性,再逐段判斷關係的最小值與最大值。
- 客戶與訂單:一對多
- 每位客戶可以沒有訂單,也可以有多張訂單,因此客戶對訂單為 。
- 每張訂單僅對應一位客戶,因此訂單必須且只能對應一位客戶,為 。
- 訂單與產品:多對多
- 每張訂單至少包含一項產品,因此訂單對產品為 。
- 每個產品可以沒有出現在訂單中,也可以出現在多張訂單,因此產品對訂單為 。
- 以關聯實體「訂購明細(Order_product)」拆解多對多關係。每筆訂購明細必須且只能連結一張訂單與一項產品;訂單編號與產品編號組成複合主鍵。
關係圖如下:
Customer ||────────o{ Order
一位客戶 零至多張訂單
每張訂單恰屬一位客戶
Order ||────────|{ Order_product
一張訂單 至少一筆訂購明細
每筆明細恰屬一張訂單
Product ||────────o{ Order_product
一項產品 零至多筆訂購明細
每筆明細恰指向一項產品
實體與屬性如下:
第 五 題10 分
有一個浮點數陣列 ;若 ,且 在記憶體中的位址為 ,元素 的位址為何?(排列方式以列為主)
登入後即可作答並保存紀錄。
核心觀念
本題評量多維陣列在記憶體中的定址映射(Array Address Mapping)與進位制運算,屬於資料結構與計算機基礎常考題型。核心概念涵蓋:
-
以列為主(Row-Major Order, RMO)之三維陣列定址公式: 在 C 語言語法中,陣列索引值由 起算。宣告
float A[D1][D2][D3]代表三個維度大小分別為 、、。 任一元素 相對於基底位址 的元素偏移量(Offset)為: -
記憶體位址計算公式: 若元素型態所佔大小為 位元組(本題 位元組),則元素位址為:
-
相對位移法: 當已知陣列中某一非零元素的位址,欲求另一元素位址時,無需先倒推基底位址 ,直接求兩元素間的「元素個數差()」,再乘上單位大小 轉為十六進位進行加減,最為迅速且不易出錯。
解題方法
步驟一:分析陣列維度與給定條件
- 陣列宣告:
float A[6][12][18] - 資料型態大小: 位元組
- 已知位址:元素 之位址為 (題目文字 係國考試卷排版下標轉為純文字之慣用記法,下標 代表十六進位制)
- 目標位址:元素 之位址
步驟二:計算兩元素之間的元素個數差()
由於 各維度索引皆小於 ,其在記憶體中的存放順序必定在 之前,兩者相差之元素個數為: 利用各維度差值直接展開: 代入維度大小 、:
步驟三:計算記憶體位元組差距並轉換為十六進位
每個浮點數佔 位元組,兩者在記憶體中的位元組差距量為: