107 地方特考四等 資訊處理 資料處理概要 考古題詳解
第 一 題20 分
佇列(queue)和堆疊(stack)是二種常用的資料結構。請回答下列問題。
(一) 若要用深度優先的方式(depth-first search)走訪一樹狀結構(tree structure)的所有節點(node),請問佇列和堆疊何者較適合?並說明原因。(10 分)
(二) 若要用廣度優先的方式(breadth-first search)走訪一樹狀結構(tree structure)的所有節點(node),請問佇列和堆疊何者較適合?並說明原因。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題評量資料結構的兩大基本線性結構——堆疊(Stack)與佇列(Queue),及其在樹狀結構走訪(Tree Traversal)演算法中的對應與應用。
- 資料結構特性:
- 堆疊(Stack):遵循後進先出(LIFO, Last-In-First-Out)原則,資料的插入(Push)與刪除(Pop)皆發生在同一端(Top)。
- 佇列(Queue):遵循先進先出(FIFO, First-In-First-Out)原則,資料自後端(Rear)加入(Enqueue),由前端(Front)移出(Dequeue)。
- 走訪演算法特性:
- 深度優先走訪(Depth-First Search, DFS):從根節點出發,沿著分支不斷深入直到葉節點(Leaf),無法繼續前進時則進行回溯(Backtracking),轉向另一個分支繼續探尋。
- 廣度優先走訪(Breadth-First Search, BFS):又稱階層走訪(Level-Order Traversal),從根節點(第 層)開始,依序將第 層的所有節點走訪完畢後,才進入第 層繼續走訪。
解題方法
(一) 深度優先走訪(DFS)何者較適合與原因說明
- 適用結構:堆疊(Stack)較適合。
- 原因說明:
- 符合後進先出(LIFO)之探索順序: DFS 的核心策略是「優先探索最深層的節點」。當走訪至某一節點時,其產生的子節點(更深一層)必須優先於其兄弟節點(同層節點)被探訪。堆疊具備 LIFO 特性,最後被推入堆疊的子節點會最先被彈出(Pop)處理,恰好能實現「朝深處持續探索」的機制。
- 完美支援回溯(Backtracking)機制: 當某一分支探訪至底(葉節點)時,演算法必須回到最近一個還有未走訪分支的分歧點。在堆疊中,前一個分歧節點的未訪子節點剛好位於目前頂端之下,當底部節點處理完畢彈出後,頂端自然暴露出上一層的未處理節點,天然支援回溯操作。
- 程式實作對應: 若以「遞迴(Recursion)」實作 DFS,底層仰賴的是作業系統的呼叫堆疊(Call Stack);若改寫為非遞迴的迭代寫法,程式設計師則必須在程式碼中明確宣告並維護一個自訂的堆疊(Explicit Stack)。
(二) 廣度優先走訪(BFS)何者較適合與原因說明
- 適用結構:佇列(Queue)較適合。
- 原因說明:
- 符合先進先出(FIFO)之階層順序: BFS 的目標是實現逐層走訪(Level-Order)。所有在深度為 的節點,都必須先於深度為 的節點被處理。佇列的 FIFO 特性保證了「較早被發現的節點,必定較早被取出處理」。
- 保持子節點的處理時序:
第 二 題20 分
有一資料表如下,共有八筆資料,第一欄是鍵值(key value)的二進位表示法(Binary representation),第二欄是姓氏資料。今要用雜湊(hash)的方式來將資料分成若干籃子(bucket),請回答下列有關雜湊的問題。
| 鍵值(二進位表示法) | 姓 |
|---|---|
| Lee | |
| Chen | |
| Wang | |
| Hwang | |
| Lu | |
| Chao | |
| Liao | |
| Chang |
(一) 假設雜湊函數(hashing function)是 ,亦即將 key 的值除以 之餘數值,即為雜湊函數值。假設每個籃子的容量最多可存三筆資料,請以上表之資料為例,將鍵值之二進位值轉換為十進位值,並將這些資料按所給的雜湊函數,區分為應有的籃子,並以此例說明什麼是靜態雜湊(static hashing)。(10 分)
(二) 假設每個籃子的容量最多可存二筆資料,請以上表鍵值之二進位表示法為例,用動態雜湊(dynamic hashing)的方法,將這八筆資料做 hash。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題主要測驗資料結構與資料庫系統中的雜湊(Hashing)技術,包含兩大主題:
- 靜態雜湊(Static Hashing):
- 雜湊表的位址空間(籃子數量 )在初始化時即固定,透過雜湊函數 將鍵值映射至特定籃子(Bucket)。
- 當資料量增加且某個籃子存滿(達到容量上限)時,會發生溢位(Overflow),需藉由溢位鏈結(Overflow Chaining)或開放定址法(Open Addressing)等機制處理,搜尋效能可能由 退化。若預留過多空間則會造成記憶體浪費。
- 動態雜湊(Dynamic Hashing / 可延伸雜湊 Extendible Hashing):
- 為解決靜態雜湊無法靈活調整大小的問題,動態雜湊允許儲存空間隨資料量動態增減。
- 本題以最廣泛採用的可延伸雜湊(Extendible Hashing)為標準解法:利用鍵值的二進位位元(由最高有效位元 MSB 開始),透過目錄(Directory)與資料籃(Bucket)的雙層結構進行索引。
- 核心參數:
- 全域深度(Global Depth, ):目錄目前使用的二進位前綴位元數,目錄項目總數為 。
- 區域深度(Local Depth, ):各別籃子所依據的二進位前綴位元數。當某籃子容量滿且發生碰撞時,若 ,目錄必須倍增擴充();若 ,則僅需將該籃子分裂(Split),目錄大小維持不變。
解題方法
(一) 靜態雜湊計算與觀念說明
- 二進位轉十進位與雜湊值計算: 依題意,雜湊函數為 。
- 區分至各籃子(每個籃子容量上限為 3 筆資料):
- Bucket 0(雜湊值 ):
Lee (8)、Chen (0)、Chao (4),共 3 筆(容量達上限已滿)。 - Bucket 1(雜湊值 ):
Hwang (9),共 1 筆。 - Bucket 2(雜湊值 ):
Wang (2)、Liao (14),共 2 筆。 - Bucket 3(雜湊值 ):
Lu (11)、Chang (7),共 2 筆。
- 以本例說明靜態雜湊(Static Hashing):
- 固定位址結構:由於雜湊函數為 ,系統事先配置且固定只有 4 個籃子(Bucket )。
- 溢位問題(Bucket Overflow):在本例中,Bucket 0 剛好填滿 3 筆資料。若未來再有一筆雜湊值為 的資料(例如鍵值為 )要加入,由於籃子無法動態擴充,將立即發生溢位,必須額外建立溢位鏈結串列(Overflow Chain)來存放,導致存取該資料時需多次磁碟/記憶體讀取,降低效能。
- 空間利用率不均:此時 Bucket 1 僅存 1 筆資料(尚有 2 筆空位),空間配置無法隨資料量彈性調節,這正是靜態雜湊的典型限制。
(二) 動態雜湊(可延伸雜湊)逐步建構
- 條件設定:籃子容量最多存 2 筆資料()。利用二進位鍵值由左至右(最高有效位元 MSB,Prefix)進行動態索引。
- 資料依序插入步驟:
- 插入
Lee (1000)與Chen (0000):
- 初始全域深度 ,單一籃子()。
- 存入兩筆資料,該籃子達到上限 2 筆:
[1000 Lee, 0000 Chen]。
- 插入
Wang (0010):
- 籃子已滿且 ,目錄擴充至全域深度 (目錄項目:
0、1)。 - 籃子依據第 1 位元(MSB)分裂:
- 目錄
0Bucket A():[0000 Chen, 0010 Wang](已滿) - 目錄
1Bucket B():[1000 Lee]
- 插入
Hwang (1001):
- MSB 為
1,指向 Bucket B。 - Bucket B 尚有空間,直接存入:
[1000 Lee, 1001 Hwang](已滿)。
- 插入
Lu (1011):
- MSB 為
1,指向 Bucket B。此時 Bucket B 已滿且其區域深度 等於全域深度 。 - 目錄翻倍,全域深度增加為 (目錄項目:
00、01、10、11)。 - Bucket B 依前兩位元分裂:
- 目錄
10Bucket B():[1000 Lee, 1001 Hwang] - 目錄
11Bucket C():[1011 Lu]
第 三 題10 分
請說明物聯網(Internet of Things)、網際網路(Internet)、全球資訊網(World Wide Web)這三者不同之處。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題評量考生對現代資訊通訊技術中「網路架構階層」、「應用服務」及「智慧感測互連」三大概念的層次區隔與範疇界定:
- 網際網路(Internet):屬於網路基礎設施(Infrastructure)。指利用 TCP/IP 協定家族,將全球各地不同架構、不同技術的區域網路(LAN)與廣域網路(WAN)相互串聯所形成的「網路之網路」(Network of Networks)。
- 全球資訊網(World Wide Web, WWW / Web):屬於建立在 Internet 之上的應用層服務(Application Service)。由 Tim Berners-Lee 提出,以超文件傳輸協定(HTTP/HTTPS)、超文件標示語言(HTML)及統一資源定位符(URL)為技術基石,透過超連結(Hyperlink)提供分散式的圖文多媒體資訊存取與瀏覽。
- 物聯網(Internet of Things, IoT):屬於 Internet 的延伸應用與實體感知整合(Extended Ecosystem)。將傳統僅連接電腦、伺服器或智慧手機的網際網路,延伸至具備感測、辨識、運算與通訊能力的各式實體物件(如感測器、RFID、家電、車載裝置),透過機器對機器(M2M)通訊實現環境感知、資料彙整與智慧化控制。
解題方法
針對本題 10 分的申論/簡答配分,應採取「定義說明 多維度比較表格 階層涵蓋關係圖解」之三段式架構:
- 先破題定義:各用 1 至 2 句話精準指出三者的技術本質(基礎建設 vs. 資訊應用服務 vs. 感知擴展架構)。
- 結構化對比(表格化):從「架構層級」、「核心協定與技術」、「連接對象」、「傳輸內容」四大構面進行水平對照,條理分明便於閱卷委員給分。
- 釐清從屬與包容性:點出「WWW 是 Internet 上的眾多服務之一」與「IoT 是以 Internet(及其他無線通訊)為骨幹傳輸神經的實體延伸」。
選項分析
本題為非選擇題(申論/簡答題),無選擇題選項。以下就閱卷評分之核心概念重點進行辨析:
- 網際網路(Internet)之正確認知:答題時不可將其窄化為「網頁」,其涵蓋網路層、傳輸層至應用層底層通訊架構,是所有網路應用(包括 Email、FTP、DNS、VoIP、Web 等)的骨幹平台。
- 全球資訊網(WWW)之正確認知:僅為 Internet 眾多應用服務之一。將「上網(Access Internet)」等同於「瀏覽網頁(Surf the Web)」是典型觀念混淆,作答時必須明確指出兩者的「底層架構與上層服務」從屬關係。
- 物聯網(IoT)之正確認知:並非獨立於現有網路之外的全新實體網路,其網路層核心依然依賴 Internet(包含 IPv6 等技術)及各類短距離通訊(ZigBee、Bluetooth、Wi-Fi、LoRa),其突破點在於「終端節點由人所操作的終端,擴展至具備感知能力的客觀萬物」。
解題技巧
- 形象化比喻記憶法(精準破題):
- Internet 猶如「公路系統」:包含柏油路面、高架橋、交通號誌等底層基礎建設。
- WWW 猶如跑在公路上的「客運巴士」:運送的是特定的乘客與圖文貨物(超文件資訊),是公路上的眾多車輛之一(其他還有郵務車 Email、貨車 FTP)。
第 四 題20 分
有一資料庫其中一個關連(relation)裡有 、、、、 這些欄位(attribute),且他們之間存在一些功能相依(functional dependency)的關係:。此關連已滿足第一正規化。
(一) 請將此關連作第二正規化處理,說明理由,並指出何者為關鍵欄位(key attribute)。(10 分)
(二) 請將此關連作第三正規化處理,說明理由,並指出何者為關鍵欄位。(10 分)
登入後即可作答並保存紀錄。
核心觀念
- 候選鍵(Candidate Key)與屬性分類:
- 主屬性(Prime Attribute / 關鍵欄位):包含於任一候選鍵中的欄位。
- 非主屬性(Non-prime Attribute / 非關鍵欄位):不屬於任何候選鍵的欄位。
- 第二正規化(2NF):
- 關連已符合第一正規化(1NF)。
- 消除部分功能相依(Partial Functional Dependency):每個「非主屬性」都必須完全功能相依於候選鍵,不可僅相依於候選鍵的真子集。
- 第三正規化(3NF):
- 關連已符合第二正規化(2NF)。
- 消除遞移功能相依(Transitive Functional Dependency):不可存在非主屬性藉由另一個非主屬性間接相依於候選鍵(即若 為非 trivial FD,則 必須為超鍵(Superkey),或 必須為主要屬性)。
解題方法
步驟一:求原始關連的候選鍵與屬性分類
給定關連 ,功能相依集合 。
- 尋找候選鍵:
- 檢視 中所有相依關係的右側(決定值): 皆曾出現在右側,而 與 從未出現在任何相依關係的右側。
- 依據功能相依性質,從未出現在右側的欄位必為候選鍵的必要組成,故候選鍵必包含 。
- 計算閉包 : 由 可擴展得:
- 由於 之閉包已涵蓋關連的所有欄位,且其真子集閉包:
- (由 得) 均無法決定所有欄位,因此 具有最小性,為此關連唯一的候選鍵(Candidate Key)。
- 欄位分類:
- 關鍵欄位(主屬性):
- 非關鍵欄位(非主屬性):
(一) 第二正規化(2NF)處理
- 理由分析:
- 候選鍵為組合鍵 。
- 檢視功能相依 :決定者 為候選鍵 的真子集,而被決定者 為非關鍵欄位。這表示非關鍵欄位 僅相依於部分候選鍵,構成了部分功能相依(Partial Functional Dependency),違反 2NF。
- 另一相依 之決定者 不是候選鍵的真子集,不構成部分相依。
- 分解過程:
- 將造成部分相依的屬性獨立拆解為一個新關連,其餘屬性留在原關連中並保留外來鍵連結:
- 獨立部分相依關係:取 ,組成關連 。
- 剩餘屬性:從原關連扣除被決定的非主屬性 ,組成關連 。
- 檢驗分解後的關連:
- 在 中,功能相依為 ,候選鍵為 。
- 在 中,功能相依為 ,候選鍵仍為 。非關鍵欄位 均完全相依於 (因為 或 單獨皆無法決定 或 ),不存在部分功能相依。
- 關鍵欄位標示:
- 之關鍵欄位為:
- 之關鍵欄位為:(複合主鍵 )
(二) 第三正規化(3NF)處理
- 理由分析:
- 檢視經 2NF 處理後的兩個關連:
- 關連 :相依關係為 ,決定者 為候選鍵(超鍵),已符合 3NF。
- 關連 :候選鍵為 。存在相依鏈 與 。
第 五 題20 分
有一資料庫記載一些客戶資料,和他們下訂單訂購貨物的資訊如下:
客戶(身分證字號,姓名,電話,地址,年齡)
貨品(貨品編號,貨名,價格,庫存量)
訂單(貨品編號,身分證字號,訂貨日期,訂購數量)
請用 SQL 回答下列查詢。
(一) 找出所有年齡大於 歲(年齡 ),所下訂單之訂貨日期為 20180101 的客戶,列出他們的姓名和地址。(10 分)
(二) 找出年齡低於 歲的客戶,列出他們的姓名、電話和在 2017 年(20170101 訂貨日期 20171231)裡下訂單的次數。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題評量關聯式資料庫結構化查詢語言(SQL)的核心操作,重點涵蓋:
- 多資料表連接(Table Join):以主鍵(Primary Key)與外來鍵(Foreign Key)建立關聯,包含內部連接(
INNER JOIN)與外部連接(LEFT OUTER JOIN)的選用時機。 - 重複資料的消除(Deduplication):一對多關聯查詢下,使用
DISTINCT或子查詢(IN/EXISTS)避免重複列出母表實體。 - 資料群組化與聚合函數(Grouping & Aggregation):
GROUP BY子句與COUNT函數的配合,以及SELECT欄位與GROUP BY欄位的語法相容性規則。 - 外部連接與聚合函數的邊界處理:當需要統計「包含 次」的事件時,必須使用
LEFT JOIN搭配「欄位計數」COUNT(欄位名),而非「列數計數」COUNT(*)。
解題方法
第 (一) 題:年齡大於 歲且於 20180101 下單之客戶姓名與地址
- 資料表關聯與切入點:
- 篩選目標「年齡」位於
客戶資料表;「訂貨日期」位於訂單資料表。 - 兩表透過
身分證字號關聯。
- 關鍵邏輯與防重複設計:
- 一位客戶在 20180101 當天可能訂購多筆貨品(在
訂單資料表產生多筆紀錄)。若僅使用單純的JOIN,查詢結果會出現重複的客戶資料。 - 為符合關聯式資料庫查詢規範,必須使用
DISTINCT消除重複列,或利用WHERE ... IN (子查詢)僅自客戶表單向檢索符合條件之實體。
- 推薦實作(JOIN 寫法):
SELECT DISTINCT C.姓名, C.地址
FROM 客戶 C
JOIN 訂單 O ON C.身分證字號 = O.身分證字號
WHERE C.年齡 > 60
AND O.訂貨日期 = '20180101';
(註:亦可使用子查詢寫法:WHERE 年齡 > 60 AND 身分證字號 IN (SELECT 身分證字號 FROM 訂單 WHERE 訂貨日期 = '20180101'))
第 (二) 題:年齡低於 歲客戶之姓名、電話及 2017 年下單次數
- 題目意圖深入剖析(0 次下單之處理):
- 題幹要求「找出年齡低於 歲的客戶,列出他們的姓名、電話和在 2017 年裡下訂單的次數」。
- 嚴謹的題意解讀應涵蓋「所有」年齡低於 歲的客戶。若該名年輕客戶在 2017 年從未下單,其訂單次數應正確顯示為 ,而非被整筆過濾排除。
- 為保留下單次數為 的客戶,必須以
客戶表為主表,對訂單表進行左外部連接(LEFT JOIN)。
- 連接條件與篩選條件的位置(ON vs. WHERE):
- 限制「2017 年」的條件必須放在
LEFT JOIN的ON子句中: - 若誤將訂貨日期篩選置於
WHERE子句,因無訂單者的訂貨日期為NULL,會被WHERE條件篩除,導致外部連接退化為內部連接。
- 聚合計數的正確使用:
- 必須使用
COUNT(O.身分證字號)或COUNT(O.貨品編號)。
第 六 題10 分
說明什麼是「區塊鏈」(Block Chain)。列舉四個區塊鏈最重要的特色,並說明之。(10 分)
登入後即可作答並保存紀錄。
核心觀念
本題評量新興資訊科技中「分散式帳本技術(Distributed Ledger Technology, DLT)」的核心概念與架構特徵。考生必須掌握:
- 區塊鏈的架構本質:由點對點(P2P)網路、密碼學雜湊(Cryptographic Hash)、非對稱加密與共識演算法共同組成的「分散式時間戳記帳本」。
- 區塊鏈的四大本質特色:去中心化(Decentralization)、不可竄改性(Immutability)、透明與可追溯性(Transparency & Traceability)、基於共識機制的自治信任(Consensus & Trustless)。
解題方法
本題配分為 10 分,屬於標準的申論型觀念題。答題策略與版面配置建議如下:
- 第一部分:定義說明(佔 2~3 分)
- 採「層次化定義法」:從「資料結構特徵」(由包含時間戳記與雜湊值的區塊循序串聯)提升至「分散式系統架構」(去中心化、多節點共享與驗證之帳本系統),避免僅以「比特幣的底層技術」等通俗口語草率帶過。
- 第二部分:四大特色列舉與深入說明(佔 7~8 分)
- 採「主題標籤+運作機制+帶來的效益」三段式論述。
- 挑選最核心、最具區隔度的四項特質,不可將同義概念拆成兩點(例如不可將「可追溯性」與「公開透明」強行拆為各自獨立的兩大特色,以免內容重複單薄)。
選項分析
本題為申論問答題,無既定選項。評閱與得分關鍵剖析如下:
- 定義部分:必須精準提及「密碼學雜湊指針(Hash Pointer)」、「依時間序列串接」與「分散式共識記帳」。若僅回答「是一種網路資料庫」,缺乏密碼學與分散式結構要素,僅能得基本分數。
- 特色一(去中心化):需說明節點地位對等,去除中介代理人(Intermediary),其核心優勢在於消除「單點失效(Single Point of Failure, SPOF)」風險。
- 特色二(不可竄改性):需指明利用單向雜湊函數(如 SHA-256)的前後勾稽。若竄改某區塊資料,該區塊的雜湊值即改變,後續所有區塊雜湊值隨之連鎖失效,竄改成本極高,幾不可能成功。
- 特色三(公開透明與歷史可追溯性):所有參與節點均保留完整帳本副本,每筆交易均有明確時間戳記,自創世區塊(Genesis Block)以來具備完整審計軌跡(Audit Trail)。
- 特色四(共識機制與無信任信任):透過數學演算法(如 PoW、PoS)達成拜占庭容錯(BFT),讓彼此互不信任的節點在無中央機關擔保下,仍能達成一致性(Consistency)。
解題技巧
- 關鍵字精準踩點:閱卷委員採「關鍵字計分法」,答題時務必出現「分散式帳本(DLT)」、「雜湊函數(Hash)」、「時間戳記(Timestamp)」、「單點失效(SPOF)」、「共識機制(Consensus Mechanism)」等專業名詞。
- 避免混淆概念:區塊鏈是底層技術架構,加密貨幣(如比特幣)僅為其應用之一,答題切忌喧賓奪主、通篇只談虛擬貨幣買賣。