107 身心障礙特考四等 資訊處理 資料處理概要 考古題詳解

107 年・身心障礙特考・四等・資訊處理
試題代碼 資料處理概要

第 一 題25 分

試說明下列問題:

(一) 堆疊(Stack)與佇列(Queue)的資料結構有何差異?(10 分)

(二) 一般在程式執行副程式呼叫時,通常會使用哪種資料結構?(5 分)

(三) 以指標在串列上實作佇列時,請問在佇列上新增一個元素,其指標的定義與運算為何?(10 分)

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

這一題的完整詳解

核心觀念

本題測驗「基礎資料結構」的核心概念與實作能力,主要涵蓋三個知識維度:

  1. 線性資料結構之存取限制與比較:理解堆疊(Stack)與佇列(Queue)在抽象資料型態(ADT)上的存取規則(LIFO 與 FIFO)及其操作端點的根本差異。
  2. 系統執行時期的記憶體架構(Runtime Storage Architecture):程式執行副程式(Subroutine / Function)呼叫時,控制權轉移、參數傳遞、區域變數生命週期與返回位址(Return Address)的維護機制。
  3. 鏈結串列(Linked List)的動態指標運算:使用指標實作佇列(Linked Queue)時,前端指標(front)與尾端指標(rear)的定義,以及新增節點(Enqueue)時的指標轉移與空佇列邊界條件處理。

解題方法

(一) 堆疊與佇列的資料結構差異

從「存取原則」、「操作端點」、「主要運算」與「典型應用」四個構面進行對比:

  • 堆疊(Stack):遵循「後進先出」(LIFO, Last-In-First-Out)原則。資料的插入與刪除均在同一端進行,該端稱為「頂端」(Top),另一端封閉稱為「底端」(Bottom)。
  • 佇列(Queue):遵循「先進先出」(FIFO, First-In-First-Out)原則。資料的操作在兩端分別進行,插入端稱為「尾端」(Rear 或 Back),刪除端稱為「前端」(Front)。

(二) 副程式呼叫所使用的資料結構

  • 程式執行副程式呼叫時,使用堆疊(Stack),在系統架構中通稱為呼叫堆疊(Call Stack)​或執行時期堆疊(Runtime Stack)。
  • 原因剖析:副程式呼叫具有「巢狀呼叫(Nested Call)」與「遞迴呼叫(Recursive Call)」的特性,最後被呼叫的副程式必須最先執行完畢並返回(滿足 LIFO 原則)。每次呼叫副程式時,系統會將「活躍紀錄(Activation Record / Stack Frame)」推入(Push)堆疊中,內含返回位址、引數、暫存器狀態及區域變數;當該副程式執行結束時,再將其彈出(Pop),控制權即正確返回上一層呼叫者。

(三) 以指標在串列上實作佇列的新增運算

  1. 指標定義:
  • 節點型態(Node):包含資料欄位(data)與鏈結指標欄位(next)。
  • 佇列指標:
  • front:指標型態,指向鏈結串列的第一個節點(負責 Dequeue 刪除端)。
  • rear:指標型態,指向鏈結串列的最後一個節點(負責 Enqueue 新增端)。
  1. 新增節點(Enqueue)的指標運算步驟:
  • 配置新節點記憶體空間,令指標 newNodenewNode 指向該節點,並設定 newNode→data=valuenewNode \to data = value、newNode→next=NULLnewNode \to next = \text{NULL}。
  • 情況一:佇列為空(Empty Queue,即 front==NULLfront == \text{NULL} 或 rear==NULLrear == \text{NULL}) 新節點既是第一個節點也是最後一個節點,將兩指標同時指向新節點: front=newNodefront = newNode rear=newNoderear = newNode
  • 情況二:佇列非空(Non-empty Queue) 先將原本最後一個節點的指標指向新節點,再更新尾端指標: rear→next=newNoderear \to next = newNode rear=newNoderear = newNode

選項分析

本題為申論問答題,無選擇題選項。依據公職閱卷給分標準,各小題之得分與扣分關鍵解析如下:

  • 第 (一) 小題(10 分):
  • 必備得分點:必須明確寫出 LIFO 與 FIFO 的中文與英文全稱,並指出堆疊為「單端操作(Top)」、佇列為「雙端操作(Front 刪除、Rear 新增)」。
  • 失分陷阱:若僅寫出 LIFO 與 FIFO 而未說明操作端點與基本指令(Push/Pop 與 Enqueue/Dequeue),得分通常僅能拿到一半(約 5 分)。
  • 第 (二) 小題(5 分):
  • 必備得分點:寫出「堆疊(Stack)」或「呼叫堆疊(Call Stack)」,並簡要交代「最後呼叫的副程式最先返回,符合 LIFO 特性」以及儲存「返回位址 / 活躍紀錄」。
  • 失分陷阱:只寫單字「Stack」而無任何推論說明,難以拿滿 5 分。
  • 第 (三) 小題(10 分):
  • 必備得分點:必須完整定義 front、rear 與節點結構;演算法必須分成「空佇列」與「非空佇列」兩種情況討論。
🔒

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

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

免費註冊

第 二 題25 分

試說明下列問題:

(一) 電腦網路的通訊協定,其主要作用為何?(5 分)

(二) 以層次結構來設計電腦網路的主要目的是什麼?(10 分)

(三) 在資料傳輸時,所謂的滑動視窗(sliding window)的主要作用為何?(10 分)

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

這一題的完整詳解

核心觀念

本題評量電腦網路的基礎通訊原理與核心架構設計,包含以下三大主軸:

  1. 通訊協定(Communication Protocol):定義實體之間交換訊息時必須遵守的規則集。核心三要素為語法(Syntax)、語意(Semantics)​與時序(Timing)。
  2. 階層式網路架構(Layered Network Architecture):基於軟體工程的「分治法(Divide-and-Conquer)」與「資訊隱藏(Information Hiding)」原則(如 OSI 7 層模型、TCP/IP 4/5 層架構),實現模組化與介面標準化。
  3. 滑動視窗機制(Sliding Window Protocol):資料連結層(如 HDLC)與傳輸層(如 TCP)的關鍵傳輸機制,核心目的在於透過管線化(Pipelining)​克服傳統「停等協定(Stop-and-Wait)」的延遲缺陷,實現流量控制(Flow Control)​與可靠傳輸(Reliability)。

解題方法

本題為標準的國家考試申論問答題,應採取「定義破題 →\to 核心機制 →\to 列點說明主要作用/目的 →\to 實例佐證」的答題結構:

  • 第 (一) 小題(5 分):簡明扼要。先定義通訊協定,再引出三要素,最後精準歸納其在異質系統溝通中的核心功能。
  • 第 (二) 小題(10 分):配分較高,需由系統架構、工程維護、商業標準等多個構面深入切入,說明「為何不設計成單一巨大架構(Monolithic),而要分層」。
  • 第 (三) 小題(10 分):必須對比「停等協定」凸顯其效益,並圍繞「提高頻道利用率(Throughput)」與「流量控制(避免接收端 Buffer 溢位)」兩大核心功能,輔以重傳機制(Go-Back-N / Selective Repeat)與動態調整特性說明。

選項分析

本題為非選擇題(問答申論題),無選項分析。各子題評分權重與作答核心方向配置如下:

  • 第 (一) 小題(5 分):核心著重於「異質平台標準化互通」與「資訊格式與行為的規範」。
  • 第 (二) 小題(10 分):核心著重於「降低複雜度(模組化)」、「介面獨立性(易於抽換升級)」與「促進產業標準化」。
  • 第 (三) 小題(10 分):核心著重於「管線化傳輸提升頻寬利用率」、「接收端導向的流量控制」與「封包遺失與順序管理」。

解題技巧與常見陷阱

  1. 第 (一) 小題陷阱:切忌只寫「讓電腦可以連上網路」等口語化答案,必須點出協定三要素(語法、語意、時序),此為閱卷老師的標準給分關鍵字。
  2. 第 (二) 小題陷阱:許多考生會花大量篇幅默寫 OSI 7 層或 TCP/IP 的層級名稱,這是「答非所問」。題目問的是設計目的而非層級內容;層級名稱僅能作為舉例,重點應放在「模組化、低耦合、高相容、易維護」。
  3. 第 (三) 小題陷阱:常有考生將「流量控制(Flow Control)」與「壅塞控制(Congestion Control)」混為一談。滑動視窗的原生主要作用是流量控制(傳送端配合接收端緩衝區),而在 TCP 中雖結合了壅塞視窗(cwndcwnd),但答題時務必先強調接收端通告視窗(rwndrwnd)的流量控制本質與頻道管線化利用率。

【答案】

(一) 電腦網路通訊協定之主要作用

電腦網路通訊協定(Communication Protocol)是指在網路上進行資料交換的實體(Entities)之間,所共同遵守的一套規則、標準與約定。其組成包含語法(Syntax,資料格式與編碼)、語意(Semantics,控制資訊與錯誤處理含義)與時序(Timing,傳輸速率與事件先後順序)。其主要作用如下:

  1. 實現異質系統的標準化通訊: 消弭不同硬體架構、作業系統與網路媒介之間的隔閡,讓各類異質電腦能以統一的語言相互對話。
  2. 規範資料格式與交換程序:
🔒

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

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

免費註冊

第 三 題20 分

結構化程式設計的主要優點為何?當主程式呼叫副程式時,使用傳址呼叫的作用及優缺點各為何?(20 分)

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

這一題的完整詳解

核心觀念

本題屬於軟體工程與程式語言(Programming Languages)基礎範疇,主要測驗考生兩大核心觀念:

  1. 結構化程式設計(Structured Programming):其核心思想在於捨棄無條件跳躍指令(如 goto),主張僅使用「循序(Sequence)」、「選擇(Selection)」與「重複(Iteration)」三種基本控制結構,並配合「由上而下(Top-Down)」逐步精細化與模組化設計,以提升軟體品質。
  2. 參數傳遞機制(Parameter Passing Mechanisms):副程式呼叫時資料傳遞的方式,特別是「傳址呼叫(Call by Reference)」之底層運作原理(傳遞變數之記憶體位址而非複製其值),以及其在記憶體效能、資料雙向傳遞與副作用(Side Effect)之間的取捨。

解題方法

本題配分為 20 分,建議將版面劃分為兩大區塊作答,架構清晰、條列分明:

  1. 第一部分(約 8~10 分):結構化程式設計的主要優點
  • 從軟體開發生命週期(開發、測試、維護)與程式碼品質(可讀性、可靠度)切入,歸納出 4 至 5 項關鍵優點,並輔以結構化設計的關鍵特性(如單一入口/單一出口、避免麵條式程式碼)進行佐證。
  1. 第二部分(約 10~12 分):傳址呼叫的作用及優缺點
  • 作用:明確定義「實引數(Actual Parameter)」與「形引數(Formal Parameter)」共用同一記憶體位址的機制,說明其用途(直接修改主程式變數、回傳多個數值、傳遞大型資料結構)。
  • 優點:由「執行效率(節省複製時間與堆疊空間)」及「彈性(突破單一回傳值限制)」切入。
  • 缺點:由「軟體工程安全性(副作用、破壞資訊隱藏)」及「除錯困難度」切入。

選項分析

本題為四等國家考試之申論問答題,非選擇題,故無個別選項。評分重點在於專有名詞之精確度、邏輯架構完整性,以及能否具體點出傳址呼叫的底層記憶體行為與副作用。


解題技巧

  1. 名詞對比法:說明傳址呼叫時,適度與「傳值呼叫(Call by Value)」對照,能更突顯傳址呼叫「不需複製資料」與「具副作用」的特性。
  2. 避免空泛形容:切忌只寫「比較快」、「比較方便」;應精確使用「減少呼叫堆疊(Call Stack)記憶體消耗」、「消除多餘之複製運算」、「降低模組間的偶合度(Coupling)」等專業術語。
  3. 配分對應原則:題目問了三個問題(優點、作用、優缺點),作答時各項必須設獨立小標,讓閱卷老師能迅速依配分指標給分。

【答案】

一、結構化程式設計之主要優點

結構化程式設計(Structured Programming)主張採用由上而下設計(Top-Down Design)與模組化分解,並僅使用「循序」、「選擇」與「重複」三種控制結構,規範程式具備「單一入口與單一出口(Single-entry, single-exit)」,其主要優點如下:

  1. 提高程式碼可讀性與易理解性(Readability & Comprehensibility): 限制或完全屏除無條件跳躍指令(如 goto 語句),消除邏輯錯綜複雜的「麵條式程式碼(Spaghetti Code)」,使程式執行流程清晰順暢,便於他人閱讀與接手。
🔒

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

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

免費註冊

第 四 題30 分

結構性查詢語言(SQL)為關聯式資料庫系統的重要語言。SQL 除了可以查詢之外,也可以定義資料。

以銀行帳號的資料表為例,假設表格須包含「帳號(10 個字元)」、「銀行行號(6 個字元)」、「結餘(實數)」等三項資料,並以帳號當索引鍵值,且規定結餘必須大於 0。請以 SQL 寫出:

(一) 此表格的綱要定義。(20 分)

(二) 在此表格增加一個新的時間(time)欄位(例如:「最近交易日」)。(10 分)

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

這一題的完整詳解

核心觀念

本題測驗關聯式資料庫(Relational Database)中 SQL 的資料定義語言(Data Definition Language, DDL) 與 資料完整性限制條件(Integrity Constraints) 的實作能力:

  1. 表格定義(CREATE TABLE):
  • 字元型態:固定長度字串使用 CHAR(n),可變長度字串使用 VARCHAR(n)。題目指定「10 個字元」與「6 個字元」,以固定長度 CHAR 最為標準。
  • 數值型態:題目指定「實數」,在標準 SQL 中可對應 REAL、FLOAT 或高精度浮點數 DOUBLE PRECISION;在金融實務上亦常使用定點小數 DECIMAL(p, s) 或 NUMERIC(p, s)。
  • 實體完整性(Entity Integrity):主鍵限制條件(PRIMARY KEY),確保資料列的唯一性且不得為空值(NOT NULL)。
  • 使用者自訂完整性(User-defined Integrity):值域檢查限制條件(CHECK),用於限制特定欄位的數值範圍(如結餘必須大於 00)。
  1. 綱要修改(ALTER TABLE):
  • 藉由 ALTER TABLE ... ADD ... 語法向既有資料表動態追加新欄位。
  • 時間型態:SQL 標準的時間相關型態包含 DATE(僅日期)、TIME(僅時間)與 TIMESTAMP(日期含時間)。

解題方法

(一) 表格綱要定義(CREATE TABLE)

  1. 命名資料表:可自訂具代表性的名稱,例如 Account(帳戶)或 BankAccount。
  2. 設定欄位名稱與型態:
  • 帳號:設為 AccountID,型態為 CHAR(10)。
  • 銀行行號:設為 BankCode,型態為 CHAR(6)。
  • 結餘:設為 Balance,型態為 REAL(或 FLOAT、DECIMAL(15, 2))。
  1. 設定限制條件:
  • 主鍵:使用 PRIMARY KEY (AccountID)。
  • 結餘大於 0:使用欄位級或資料表級之條件約束 CHECK (Balance > 0)。
🔒

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

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

免費註冊

其他考古題