108 港務人員升資考試員級晉高員級 技術類(選試輪機工程)-航港局 電子計算機概論 考古題詳解
第 一 題15 分
高階電腦程式語言的型態有哪些?請寫出型態名稱並舉例詳細說明。
登入後即可作答並保存紀錄。
核心觀念
本題考查計算機科學中高階程式語言(High-Level Programming Languages)的分類與程式設計典範(Programming Paradigms)。 高階語言的設計初衷是隱藏底層硬體細節,提供貼近人類自然語言與數學思維的語法結構。依據「解決問題的思維模型」、「指令下達與狀態控制方式」,高階程式語言主要劃分為四大程式設計典範(型態):
- 命令式/程序導向型(Imperative / Procedural)
- 物件導向型(Object-Oriented)
- 函數導向型(Functional)
- 邏輯導向/宣告型(Logic / Declarative)
此外,在計算機結構與編譯原理的角度中,高階語言亦常依「執行與轉換機制」劃分為編譯型(Compiled)、直譯型(Interpreted)與混合型(Hybrid / Intermediate Bytecode)。本題以閱卷標準最高、最完整的「程式設計典範」為主架構,並輔以「執行轉換型態」進行周全論述。
解題方法
本題為經典申論題型,切入點為以典範(Paradigm)為骨幹、以實例(Examples)為血肉:
- 定義明確:每一類語言型態皆須清楚交代其核心精神(如:強調流程控制、狀態封裝、數學函數映射或邏輯推論)。
- 中英對照:寫出精確的專業名詞(如 Procedural, Object-Oriented, Functional, Logic),展現專業度。
- 具體舉例與機制說明:除了列舉語言名稱(如 C、Java、Haskell、Prolog)外,針對每種型態以一段簡短的運作特徵或程式碼邏輯說明「它如何表達運算」,直接命中題目「舉例詳細說明」的要求。
選項分析
本題為申論問答題,無提供既定選項。
- 作答範疇辨析:題目所稱「高階電腦程式語言的型態」,切忌誤答為變數的「基本資料型態」(如:Integer, Floating-point, Boolean, Char)或「抽象資料型態(ADT)」。此處的「型態」係指程式語言本體之分類架構(Types/Paradigms of High-Level Programming Languages)。
解題技巧
- 審題關鍵字防陷阱:看到「語言的型態」,優先對應四大程式設計典範(Paradigm)。若版面充裕,可另立小節補述「轉譯與執行型態」,構成多維度作答,使閱卷委員無從扣分。
- 四大典範記憶口訣:「程、物、函、邏」(程序、物件、函數、邏輯)。
- 對比思維強化申論深度:
- 命令式強調 How to do(一步一步說明如何改變記憶體狀態)。
- 宣告式/邏輯式/函數式強調 What to do / What is true(描述目標與規則,計算交由系統引導)。
【答案】
高階電腦程式語言依據「程式設計典範(Programming Paradigms)」與「問題解決導向」,主要可劃分為下列四大主要型態:
一、 程序導向/命令式語言(Procedural / Imperative Programming Languages)
- 型態特徵:
- 以演算法的執行步驟為核心,強調「如何達成(How to do)」。
- 程式由一系列依序執行的指令組成,透過賦值運算(Assignment)不斷改變系統的狀態與變數值。
- 大量運用結構化控制流程,如循序(Sequence)、條件判斷(Selection, 如
if-else)、迴圈重複(Iteration, 如for,while)以及模組化的程序/函式(Procedure / Function)。
- 代表語言與實例說明:
- 代表語言:C、Pascal、Fortran、BASIC。
- 實例說明:以 C 語言計算 到 的總和為例:
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i; // 顯式透過迴圈與變數更新改變記憶體狀態
}
程式設計者必須精確掌控迴圈計數器 與累加變數 的狀態變化與每一步驟流程。
二、 物件導向語言(Object-Oriented Programming Languages, OOP)
- 型態特徵:
第 二 題15 分
電腦系統所使用的浮點數表示法(floating-point notation),如 IEEE 754 標準,每個浮點數的存放格式可以分為三個部分,請問這三個部分為何?請詳細敘述每個部分的設計原理。
登入後即可作答並保存紀錄。
核心觀念
本題旨在測驗電腦系統架構中數值表示法的基礎核心——**IEEE 754 浮點數標準(Floating-Point Standard)**的欄位結構與底層硬體設計邏輯。
在電腦中,為了兼顧數值的「動態範圍(Dynamic Range)」與「有效位數(Precision)」,浮點數採用類似科學記號的二進位形式儲存。一個正規化(Normalized)的 IEEE 754 浮點數,其對應的實數值公式為:
依據此公式,IEEE 754 將浮點數的記憶體存放格式精確劃分為三個欄位:
- 符號位元(Sign bit, )
- 指數部分(Exponent, )
- 尾數/假數部分(Mantissa / Significand / Fraction, )
解題方法
回答本題應先明確列出三個部分的名稱與常見規格(如 32-bit 單精確度、64-bit 雙精確度)的位元配置,再從「數值表示需求」與「硬體運算效率」的角度,深入剖析每一部分的設計原理。
1. 符號位元(Sign Bit, )
- 位元配置:單精確度佔 位元;雙精確度亦佔 位元。
- 設計原理:
- 極性判定:以最高有效位元(MSB)直接代表正負號。當 代表正數; 代表負數,對應運算式中的 。
- 簡化乘除運算:將符號與純數值大小完全解耦(Decoupled)。硬體進行浮點數乘法或除法時,可直接將兩數的符號位元進行互斥或(XOR)運算,即可決定結果的符號,無需先進行補數還原。
2. 指數部分(Exponent, )
- 位元配置:單精確度佔 位元;雙精確度佔 位元。
- 設計原理:
- 動態範圍定位:指數欄位代表 的冪次,決定小數點在二進位數中的移動位置,控制數值所能涵蓋的數量級範圍。
- 採用偏差表示法(Biased Notation / Excess-):
- 指數欄位不採用「2 的補數」,而是加上固定偏差值 (單精確度 ;雙精確度 )。
- 硬體快速比大小:將原本有正有負的指數(例如 ),平移為純無號整數(Unsigned Integer,例如 )。這使得兩浮點數在進行排序或比大小時,處理器可直接將其當作整數進行由高位到低位的字元字典序比較,大幅簡化電路複雜度。
- 保留特殊邊界值:將全 與全 保留作為特殊用途(如全 用於表示 或非正規化數;全 用於表示無限大 或非數值 )。
3. 尾數/假數部分(Mantissa / Significand / Fraction, )
- 位元配置:單精確度佔 位元;雙精確度佔 位元。
- 設計原理:
- 決定精確度:記錄有效數字(Significant digits),位元數愈多,浮點數的分辨率與精確度愈高。
第 三 題15 分
在電腦網路中,傳輸媒介(transmission media)是作為傳輸資料訊號時的通道,將訊號從發送設備傳遞到接收設備。若依其傳送方式,傳輸媒介可分為那幾類?每一項分類舉兩個例子說明。
登入後即可作答並保存紀錄。
核心觀念
本題測驗電腦網路中**實體層(Physical Layer)傳輸媒介(Transmission Media)**的基本分類與物理特性。 在資料通訊中,訊號傳輸媒介是發送端與接收端之間的實體通道,依電磁波訊號在傳送時是否受物理導體導引與侷限,學理上分為兩大類:
- 導向傳輸媒介(Guided Media / 有線媒介):訊號受固態實體邊界約束並沿著實體導線傳遞。
- 無導向傳輸媒介(Unguided Media / 無線媒介):訊號藉由電磁波形式在自由空間(大氣層或真空)中朝特定方向或向四面八方輻射傳播。
解題方法
本題為標準的觀念申論題,作答時切入策略如下:
- 明確定義分類:先以學術標準名詞定義「導向傳輸媒介」與「無導向傳輸媒介」,說明兩者在傳播機制上的根本差異(導引於固體介質 vs. 散播於自由空間)。
- 條列並深入實例:依題意各列舉兩個最具代表性的傳輸媒介,說明時須涵蓋「物理結構/頻率特性」、「優缺點(頻寬、衰減、抗雜訊)」及「主要應用場景」,展現完整的專業知識深度。
選項分析
本題為非選擇題(問答題),無選擇題選項。依閱卷評分要點,分析本題答題的得分關鍵與指標如下:
- 分類層次完整性:考生若僅回答「有線」與「無線」,僅能取得基本分;若能寫出「導向傳輸媒介(Guided Media)」與「無導向傳輸媒介(Unguided Media)」並說明其物理限制條件,方能達到高分門檻。
- 舉例的精確度:舉例時切忌將「技術或通訊協定名稱」(如 Wi-Fi、4G/5G、乙太網路)直接混淆為「傳輸媒介」。必須指明具體的物理媒介(如雙絞線、光纖、無線電波、微波),再以技術實例輔助說明其應用。
解題技巧
- 答題架構化:採用「分類定義 實例介紹(結構/特性/應用)」的層次作答,版面整齊、條理分明。
- 避免名詞代換陷阱:許多考生容易將「同軸電纜」與「雙絞線」混為一談,或在無線領域直接寫「藍牙、Wi-Fi」當作媒介名稱,應正名為「特高頻無線電波」或「微波」。
- 關鍵字精準命中:答題時帶入「抗電磁干擾(EMI)」、「傳輸衰減」、「訊號頻寬」等網路專業術語,能顯著提升閱卷印象。
【答案】
在電腦網路架構中,傳輸媒介依其訊號傳送與導引方式,主要分為導向傳輸媒介與無導向傳輸媒介兩大類:
第 四 題15 分
若一棵二元搜尋樹(binary search tree)共有 10 個節點,使用前序走訪(preorder traversal)得到的結果為 ,則此二元搜尋樹為何?請畫出此樹。
登入後即可作答並保存紀錄。
核心觀念
- 二元搜尋樹(Binary Search Tree, BST)之定義: 對樹中任一節點 :
- 其左子樹(Left Subtree)中所有節點的值,均小於 的值。
- 其右子樹(Right Subtree)中所有節點的值,均大於 的值。
- 左右子樹各自亦為二元搜尋樹(假設各節點鍵值皆相異)。
-
前序走訪(Preorder Traversal)順序: 走訪順序為:「根節點 左子樹 右子樹」(V-L-R)。因此,任何前序子數列的第一個元素必為該子樹的根節點(Root)。
-
中序走訪(Inorder Traversal)與 BST 的關係: 二元搜尋樹依中序走訪(左子樹 根節點 右子樹,L-V-R)之結果,必為嚴格遞增排序數列。
解題方法
給定前序走訪數列,還原二元搜尋樹主要有兩種等價且嚴謹的推導途徑:
方法一:前序數列鍵值分割法(推薦,最直觀快速)
利用「第一個元素為根節點」及「BST 左小右大」的性質,逐層遞迴分割數列:
- 決定整棵樹的根節點: 前序走訪為 ,第一個元素是 。
- 樹根為 。
- 比 小的連續元素屬於左子樹前序數列:。
- 比 大的連續元素屬於右子樹前序數列:。
- 遞迴建構左子樹(鍵值小於 的集合):
- 子數列 的首個元素為 ,故 的左子節點為 。
- 比 小的元素屬於 的左子樹:。
- 首個元素為 ,故 的左子節點為 。
- 比 小的元素屬於 的左子樹:,故 的左子節點為 (葉節點)。
- 無右子節點。
- 比 大的元素屬於 的右子樹:。
- 首個元素為 ,故 的右子節點為 。
- 比 小的元素不存在,故 無左子節點。
- 比 大的元素屬於 的右子樹:。
- 首個元素為 ,故 的右子節點為 。
- 比 小的元素屬於 的左子樹:,故 的左子節點為 (葉節點)。
- 無右子節點。
第 五 題20 分
一個完整的資料庫管理系統(DataBase Management System, DBMS)應該具備哪些特點?請詳盡說明。
登入後即可作答並保存紀錄。
核心觀念
本題測驗「資料庫管理系統(Database Management System, DBMS)」的核心定義、系統架構及其相較於傳統檔案處理系統(File-Processing System)所展現的關鍵優勢。 主要涵蓋觀念包括:
- ANSI/SPARC 三層綱要架構:外部層(External Schema)、概念層(Conceptual Schema)、內部層(Internal Schema)與「實體/邏輯資料獨立性」。
- 交易管理與 ACID 特性:不可分割性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、耐用性(Durability)。
- 系統控制機制:並行控制(Concurrency Control)、資料完整性限制(Data Integrity)、安全性防護(Security & Authorization)、日誌與故障回復(WAL、Backup & Recovery)。
解題方法
本題為標準的資訊類公職/升資考試申論題,切入點應採「結構化系統性分類」,避免零散列舉。最佳作答邏輯為「由資料結構 運作控制 系統維護」層層推進:
- 資料架構層:著重資料獨立性、減少重複性與資料完整性限制。
- 作業控制層:著重多使用者共享、交易 ACID 支援與並行存取控制。
- 系統安全與維護層:著重權限安全管制、備份與災難回復機制、標準化查詢語言(SQL)。 每一項特點均需寫出「特點名稱」、「英文專有名詞」、「技術內涵」與「解決之實務問題」,方能奪得申論題滿分。
選項分析
本題為申論問答題,非選擇題。在此針對考生於申論作答時常犯之「概念偏頗或遺漏向度」進行剖析與校正:
- 混淆「資料庫(DB)」與「資料庫管理系統(DBMS)」:
- 錯誤盲點:僅回答「可以儲存大量資料、提供表格查詢」。
- 評析校正:資料庫僅是資料的集合;DBMS 是負責定義、建置、操作與控制資料庫的「系統軟體」。作答焦點必須落在該軟體提供的「管理機制」(如交易引擎、快鎖機制、日誌系統),而非單純的資料儲存。
- 僅列出基本操作功能,遺漏系統級控制:
- 錯誤盲點:只寫 CRUD(新增、讀取、更新、刪除)與查詢。
- 評析校正:檔案系統亦能進行讀寫操作;DBMS 之所以完整,核心在於具備「ACID 交易保證」、「多使用者並行無衝突存取」與「系統當機後的資料自動回復」。
- 忽略資料獨立性的兩大層次:
- 錯誤盲點:僅抽象提及「資料具備獨立性」。
- 評析校正:必須具體區分為「實體資料獨立性」與「邏輯資料獨立性」,並點出三層綱要架構中各層變更時不影響上層應用程式的特性。
解題技巧
- 口訣記憶法:以「獨、複、整、共、交、安、回、語」八字訣快速提綱挈領:
- 獨:資料獨立性(Physical & Logical Data Independence)
- 複:最小化資料重複性(Minimal Data Redundancy)
- 整:資料完整性約束(Data Integrity)
- 共:多使用者資料共享(Data Sharing & Multi-User Support)
- 交:交易管理與並行控制(Transaction & Concurrency Control, ACID)
- 安:資料安全性與授權控制(Security & Authorization)
- 回:備份與故障回復(Backup & Crash Recovery)
- 語:標準化資料語言(Standard Data Languages, SQL)
- 格式排版竅門:採用「黑體大標 英文專有名詞 兩行核心定義 實務機制範例」之結構排版,層次分明,利於閱卷委員在短時間內掌握得分關鍵字。
【答案】
一個完整的資料庫管理系統(DBMS)應具備以下核心特點:
一、 高度資料獨立性(Data Independence)
依據 ANSI/SPARC 三層架構(Three-Schema Architecture),DBMS 將資料的定義與應用程式解耦,包含兩大層次:
- 實體資料獨立性(Physical Data Independence):當內部層(Internal Schema)的實體儲存結構、索引方式(如 B+ Tree、Hash Index)或硬體儲存位置改變時,不需修改概念層綱要及應用程式。
第 六 題20 分
詳細解釋下列 Java 語言程式的執行過程,並寫出程式的輸出。
public class testA { public static void main (String[] args) { int[] nums = {1, 1, 0, 0, 0, 0, 0}; int count = 0;
for (int idx = 2; idx < nums.length; idx++)
nums[idx] = nums[idx - 1] + nums[idx - 2];
while (count < nums.length - 1)
{
if ((nums[count] + nums[count + 1]) % 2 == 0)
nums[count]++;
else
nums[count + 1]--;
count++;
}
for (int idx = 0; idx < nums.length; idx++)
System.out.println(nums[idx]);
}
}
登入後即可作答並保存紀錄。
核心觀念
本題為典型的 Java 程式追蹤(Code Tracing)考題,評量考生對基礎語法、演算法與記憶體中陣列狀態變化的掌握度。核心觀念包含:
- 一維陣列(One-Dimensional Array)之宣告、初始化與索引存取:Java 陣列索引由 起算,陣列長度可透過屬性
nums.length取得。 - 費氏數列(Fibonacci Sequence)之迭代生成:利用前兩項之和求出下一項之遞迴關係式 。
- 條件分支與算術運算子:
- 模除運算子
%用於奇偶性判斷: 表示 為偶數。 - 遞增運算子
++與遞減運算子--改變陣列元素值。
- 迴圈控制與邊界控制:
while迴圈終止條件為count < nums.length - 1,確保以相鄰兩元素nums[count]與nums[count + 1]運算時不會發生陣列索引越界例外(ArrayIndexOutOfBoundsException)。
解題方法
本程式的執行流程分為三大階段,解題切入點為依序追蹤各階段陣列元素與變數數值的動態變化:
階段一:陣列初始化與費氏數列填充(第一個 for 迴圈)
- 初始宣告:陣列
nums長度為 (即nums.length = 7),初始內容為{1, 1, 0, 0, 0, 0, 0}。 - 迴圈條件:
for (int idx = 2; idx < nums.length; idx++),idx從 遞增至 : - :
- :
- :
- :
- :
- 此階段結束後,陣列
nums數值為:{1, 1, 2, 3, 5, 8, 13}。
階段二:相鄰元素之奇偶判斷與更新(while 迴圈)
- 迴圈條件:
while (count < nums.length - 1),因nums.length - 1 = 6,故count值依序為 共執行 次。 - 每次判斷相鄰兩數之和 是否為偶數:
- 若為偶數:執行
nums[count]++(當前元素加 )。 - 若為奇數:執行
nums[count+1]--(下一元素減 )。 - 逐步推導過程如下:
- 第 1 次迭代():
- 檢查:(偶數)。
- 執行:
nums[0]++。 - 陣列更新為:
{2, 1, 2, 3, 5, 8, 13}, 遞增為 。
- 第 2 次迭代():
- 檢查:(奇數)。
- 執行:
nums[2]--。 - 陣列更新為:
{2, 1, 1, 3, 5, 8, 13}, 遞增為 。
- 第 3 次迭代():
- 檢查:(偶數)。
- 執行:
nums[2]++。 - 陣列更新為:
{2, 1, 2, 3, 5, 8, 13}, 遞增為 。
- 第 4 次迭代():
- 檢查:(偶數)。
- 執行:
nums[3]++。 - 陣列更新為:
{2, 1, 2, 4, 5, 8, 13}, 遞增為 。
- 第 5 次迭代():
- 檢查:(奇數)。
- 執行:
nums[5]--。