107 高普考高考三級 工業行政 計算機概論 考古題詳解
第 一 題20 分
中央處理器(CPU)的組成元件有哪些?請詳述元件名稱及其功能。
登入後即可作答並保存紀錄。
核心觀念
本題旨在評量考生對電腦系統硬體架構中「馮・紐曼架構(Von Neumann Architecture)」與「中央處理器(CPU)組織與結構」之基本認知。核心重點在於掌握 CPU 內部的三大經典核心單元(控制單元、算術邏輯單元、暫存器組),以及連結元件的內部匯流排與現代處理器普遍內建的高速快取記憶體,並理解各元件在執行「機器週期(Machine Cycle:擷取、解碼、執行、寫回)」時所扮演的具體角色。
解題方法
本題為國家考試典型的「名詞定義與功能論述型」申論題,作答策略應採「先總體架構、後細部元件、輔以具體實例」的層次展開:
- 結構界定:以古典馮・紐曼架構結合現代計算機結構,將 CPU 的核心組成劃分為三大主要部分(算術邏輯單元、控制單元、暫存器組),並補充負責資料傳輸的內部匯流排與現代關鍵的快取記憶體。
- 規格化詳述:每一元件皆標註「中文名稱」與「英文全稱/縮寫」,功能說明力求明確,點出其在資料流(Data Flow)與控制流(Control Flow)中的具體任務。
- 擴充關鍵亮點:針對「暫存器組」,不可僅以「提供暫存」一語帶過,必須條列列舉國考最常考的專屬暫存器(如 PC、IR、MAR、MDR/MBR、AC、PSW),展現專業答題深度。
選項分析
本題為技術類科申論問答題,非選擇題,故無個別選項之對錯辨析。閱卷標準之給分重點在於涵蓋廣度(元件是否齊全)與說明深度(功能定義是否精確、專有名詞是否正確)。
解題技巧
- 口訣記憶:利用「算、控、暫、匯、快」五字口訣記憶五大組成結構:
- 算:算術邏輯單元(ALU)
- 控:控制單元(CU)
- 暫:暫存器(Registers)
- 匯:內部匯流排(Internal Bus)
- 快:快取記憶體(Cache Memory)
- 避開常見陷阱:
- 主記憶體(RAM)非 CPU 元件:主記憶體屬於 CPU 外部系統架構元件,不可誤列為 CPU 的內部結構;但 L1/L2 快取記憶體(Cache)已內建於現代處理器晶片中,列出屬於加分項。
- 專屬暫存器功能勿混淆:
- (程式計數器)儲存的是「下一道欲執行指令的記憶體位址」,而非「目前正在執行的指令」。
- (指令暫存器)儲存的是「目前正在被解碼與執行的指令內容」。
- 存放的是「位址」, 存放的是「資料或指令內容」。
【答案】
中央處理器(Central Processing Unit, CPU)為電腦系統的運算與控制中樞,負責解譯程式指令並處理資料。其主要組成元件及功能詳述如下:
一、 控制單元(Control Unit, CU)
- 功能簡述:扮演 CPU 的「指揮中樞」,負責協調整個電腦系統各部件的運作。
- 具體任務:
- 指令擷取與解碼:依序由記憶體讀取指令,透過指令解碼器(Instruction Decoder)解析指令的操作碼(Opcode)與運算元位址。
第 二 題20 分
請詳述編譯器(compiler)將原始程式(source program)轉化為目標程式(object program)所需的步驟。
登入後即可作答並保存紀錄。
核心觀念
本題測驗計算機系統核心軟體——編譯器(Compiler)之系統架構與編譯流程。編譯器是將高階語言撰寫的「原始程式(Source Program)」翻譯成等價之機器語言或組合語言「目標程式(Object Program)」的系統程式。
依據經典編譯器設計理論(Aho et al.,龍書架構),編譯器的運作主要分為兩大主體階段與六大核心步驟,並輔以貫穿全程的兩大支援模組:
- 分析階段(Analysis Phase / 前端 Frontend):與來源語言相關,負責剖析原始程式的結構與意圖,包含詞彙分析、語法分析、語意分析。
- 合成階段(Synthesis Phase / 後端 Backend):與目標機器硬體相關,負責產生並調校目標程式碼,包含中間碼生成、程式碼最佳化、目標碼生成。
- 貫穿輔助機制:符號表管理(Symbol Table Management)與錯誤處理機制(Error Handling)。
解題方法
回答公職考試「編譯步驟」之申論題型,切入點應採管線化(Pipeline)資訊流程視角切入。閱卷委員評分重點在於考生能否明確交代各階段的「輸入(Input)」、「處理核心工作(Processing)」與「輸出產物(Output)」。
答題開展順序:
- 總述:指出前端(機器無關)與後端(機器相依)之切分與銜接。
- 分述六大步驟:
- 詞彙分析(Lexical Analysis):字元串流 語彙單元(Tokens)。
- 語法分析(Syntax Analysis):Tokens 剖析樹/抽象語法樹(Parse Tree / AST)。
- 語意分析(Semantic Analysis):AST 裝飾/具型別資訊之語法樹(Decorated AST)。
- 中間碼生成(Intermediate Code Generation):語法樹 中間表示碼(IR,如三位址碼 Three-Address Code)。
- 程式碼最佳化(Code Optimization):提升執行效能、縮減程式碼體積。
- 目標碼生成(Code Generation):IR 目標機器碼或組合語言程式碼(Object / Assembly Code)。
- 橫向支援模組:說明符號表與錯誤處理於全流程之角色。
選項分析
本題為申論問答題,無客觀選項。針對歷屆考生在相關概念上最常混淆之盲點進行對比分析:
- 語法分析 vs. 語意分析:
- 語法分析僅檢查結構是否符合上下文無關文法(CFG),例如括號是否對稱、運算子與運算元排列是否正確;不檢查變數是否有定義、型別是否相容。
- 語意分析則深入檢查靜態語意規則,如陣列索引是否為整數、變數是否重複宣告或未宣告即使用、型別轉換是否合法。
- 直譯器(Interpreter)vs. 編譯器(Compiler):
- 編譯器採「批次翻譯」,一次性將整份原始程式轉化為目標程式並儲存,後續可重複獨立執行;直譯器則是「邊讀取、邊分析、邊執行」,不產生獨立的目標碼檔案。
- 目標碼(Object Code)vs. 執行檔(Executable Code):
- 編譯器生成的目標檔案(通常為
.obj或.o)內部可能包含尚未解析的外部函式參照(External References)與相對位址,尚需經由鏈結器(Linker)結合函式庫與其他模組,方能輸出為最終可在作業系統上執行的檔案(如.exe)。
解題技巧
- 口訣記憶法:六大步驟可記為「詞、法、意、中、佳、標」(詞彙、語法、語意、中間碼、最佳化、目標碼)。
- 三要素答題模板:說明每一個階段時,務必強制寫出「輸入」、「核心功能」、「輸出」,版面清晰整齊,閱卷老師能在 10 秒內抓到關鍵給分點。
- 避開失分陷阱:許多考生常漏寫「符號表」與「錯誤處理」,這兩個模組貫穿所有階段,是區分「及格卷」與「高分卷」的重要關鍵。
【答案】
編譯器將原始程式轉化為目標程式的完整過程,依序包含以下六大核心步驟及兩項全域支援工作:
第 三 題20 分
符記環(token ring)是區域網路(local area network, LAN)常用的通訊協定之一。請試述符記環的工作原理。
登入後即可作答並保存紀錄。
核心觀念
本題評量區域網路(LAN)通訊協定中的媒介存取控制(MAC, Medium Access Control)機制,核心規範為 IEEE 802.5 標準。涉及之關鍵定義與概念如下:
- 邏輯環狀拓撲(Logical Ring Topology):節點在邏輯上串接成閉合單向環路,訊號與訊框僅能沿單一方向逐站轉發。實體上常透過多站存取單元(MAU, Multistation Access Unit)連接成實體星狀、邏輯環狀之架構。
- 符記傳遞機制(Token Passing):屬於確定型(Deterministic)媒介存取控制協定。唯有持有「自由符記(Free Token)」的節點方具備資料發送權,因此網路中在正常狀況下完全不會發生訊號碰撞(Collision-Free),與乙太網路(IEEE 802.3)採用的 CSMA/CD 競爭型機制形成強烈對比。
- 符記與訊框格式:
- 自由符記(Free Token):由起始定界符(Starting Delimiter, SD)、存取控制(Access Control, AC)與結束定界符(Ending Delimiter, ED)組成的 3 位元組控制訊框。
- 資料訊框(Data Frame):包含目的位址(DA)、來源位址(SA)、協定資料單元(PDU/Data)、訊框檢查序列(FCS)以及訊框狀態(Frame Status, FS)。
解題方法
本題為公職高普考標準申論問答題。解答切入點應依循「通訊時序與生命週期」展開,從靜態架構定義到動態傳輸四部曲,最後補充例外控制機制,層次井然:
- 結構切入:先定義符記環的基本拓撲及存取控制屬性(無碰撞、輪流持有)。
- 時序展開(工作原理核心):以單向資料傳輸流程為軸心,劃分四個標準步驟:
- 步驟一:閒置巡迴(符記傳遞)
- 步驟二:攔截符記與產生資料訊框(發送端)
- 步驟三:轉發、辨識與複製(目的端)
- 步驟四:繞行回傳、剝除訊框與釋放符記(來源端回收)
- 機制補強:點出主監控站(Active Monitor, AM)的角色,展現專業深度以爭取高分。
選項分析
本題為申論問答題,非選擇題,故無個別選項。閱卷給分重點在於考生是否能精確寫出「符記狀態轉換」、「來源端負責剝除(Stripping)」以及「確認機制(A、C 位元)」等關鍵技術細節。
解題技巧
- 答題結構化口訣:「一圈、兩牌、四步、一監控」:
- 一圈:單向封閉邏輯環。
- 兩牌:自由符記(Free Token)與忙碌符記(Busy Token / Data Frame)。
- 四步:傳符記 發資料 收資料 拆資料釋符記。
- 一監控:主監控站(Active Monitor)處理掉牌或死循環問題。
- 閱卷得分關鍵與常見陷阱:
- 陷阱一(致命錯誤):誤以為是由「目的端(接收端)」把訊框吃掉。正確運作是目的端複製資料後繼續轉發,由「來源端(發送端)」負責將訊框從環上移除(Frame Stripping)。
- 陷阱二:誤寫為有碰撞偵測(CSMA/CD)。
第 四 題20 分
請分別以陣列表達法(array representation)及鏈結表達法(linked representation)來表示圖一所示之二元樹(binary tree)。
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
本題評量資料結構中「二元樹(Binary Tree)」的兩種基本儲存表示方式:
- 陣列表達法(Array Representation / 循序表示法):
- 將二元樹視為一棵完全二元樹(Complete Binary Tree),依照「層序(Level-order,由上至下、由左至右)」為各節點編號,循序存放於一維陣列中。
- 索引數學定位公式(以主流之 1-based indexing 為準):
- 根節點(Root)置於陣列索引 處。
- 對於索引為 的任意節點:
- 其父節點(Parent)位於 (當 )。
- 其左子節點(Left Child)位於 。
- 其右子節點(Right Child)位於 。
- 若為 0-based indexing(C 語言實作慣例):根節點位於 ,索引 的父節點為 ,左子節點為 ,右子節點為 。
- 若樹中某位置無節點存在(非完全二元樹),該索引位置仍須保留並標記為空(如
NULL或-),不可往前挪移,以維持二元樹父子節點的數學索引對應關係。
- 鏈結表達法(Linked Representation / 鏈結串列表示法):
- 採用動態記憶體配置,以節點(Node)搭配指標(Pointer)建立樹狀拓撲。
- 典型二元樹節點包含三個欄位:
LChild(左指標):指向左子節點的記憶體位址;若無左子節點則為空指標(NULL)。Data:儲存該節點的鍵值或資料內容。RChild(右指標):指向右子節點的記憶體位址;若無右子節點則為空指標(NULL)。
解題方法
本題卷面未附圖一之實體影像,缺少具體節點標號與分支拓撲結構;依考選部國考命題慣例,明確假設圖一為包含 6 個節點(A 至 F)之經典二元樹:A 為根節點,B、C 分別為 A 之左、右子節點,D、E 分別為 B 之左、右子節點,F 為 C 之右子節點(C 無左子節點)。
依上述假設之二元樹拓撲結構,各表達法推導步驟如下:
- 陣列表達法推導:
- 將樹依層序對應至完全二元樹的虛擬編號:
- 第 1 層(Level 1):根節點 A,編號為 。
- 第 2 層(Level 2):A 的左子節點 B,編號為 ;A 的右子節點 C,編號為 。
- 第 3 層(Level 3):B 的左子節點 D,編號為 ;B 的右子節點 E,編號為 ;C 的左子位置無節點,編號 保留為空(
NULL);C 的右子節點 F,編號為 。
- 建立陣列長度為 之循序儲存表。
- 鏈結表達法推導:
- 定義節點結構體(C 語言格式):
typedef struct TreeNode {
struct TreeNode *leftChild;
char data;
struct TreeNode *rightChild;
} TreeNode;
- 建立根指標
root指向節點 A。 - 依節點關係填入各節點的三欄位值:
- 節點 A:
leftChild指向 B,data為'A',rightChild指向 C。 - 節點 B:
leftChild指向 D,data為'B',rightChild指向 E。 - 節點 C:
leftChild為NULL,data為'C',rightChild指向 F。 - 節點 D:
leftChild為NULL,data為'D',rightChild為NULL。 - 節點 E:
leftChild為NULL,data為'E',rightChild為NULL。 - 節點 F:
leftChild為NULL,data為'F',rightChild為NULL。
選項分析
本題為公職高普考之申論問答題,無選擇題選項。針對國家考試評分重點,將「陣列表達法」與「鏈結表達法」之特性、優缺點進行對比分析:
- 空間使用效率(Space Efficiency):
- 陣列表達法:適用於「滿二元樹(Full Binary Tree)」或「完全二元樹(Complete Binary Tree)」,空間利用率可達 。但面對歪斜樹(Skewed Tree)或深層稀疏樹時,樹高 需配置 的連續空間,將導致大量索引位置填入
NULL,造成極嚴重的內部空間浪費。 - 鏈結表達法:依實際節點數隨需動態配置,不受樹形歪斜影響,無空缺位置浪費;但每個節點額外增加兩個指標欄位,產生指標儲存開銷(Memory Overhead)。
- 存取與走訪效能(Access Time & Traversal):
第 五 題20 分
請詳細解釋下列 C 語言程式的執行過程,最後寫出程式的輸出。
#include <stdio.h>
int main() { int i;
for (i=0; i<=8; i=i+2) {
switch (i) {
case 0: printf("0"); break;
case 1: printf("1"); break;
case 4: printf("4");
case 5: printf("5"); break;
case 6: printf("6");
case 7: printf("7"); continue;
default: printf("8"); break;
}
printf("\n");
}
return(0);
}
登入後即可作答並保存紀錄。
核心觀念
本題旨在測驗 C 語言程式控制結構的執行流程,核心評量點涵蓋以下四項重要觀念:
for迴圈的控制流程:包含初值設定()、終止條件判定()以及自訂累加步進式()。switch-case分支結構與default:依據運算式之整數值比對對應標籤(label),若無相符之case則跳轉至default標籤執行。- 貫穿現象(Fall-through):在
switch陳述式中,若某一case區塊結尾未加上break;,程式不會自動跳出switch,而是會無條件順序執行下一個case或default區塊中的敘述,直到遇見break;、return、跳轉敘述或整個switch區塊結束為止。 continue敘述的作用範圍(關鍵陷阱):
break;可用於跳出最內層的迴圈(for、while、do-while)或switch。continue;僅能作用於迴圈結構(Iteration Statements),無法單獨作用於switch。因此,當continue;出現在巢狀置於迴圈內的switch中時,其控制權會直接跳至外層for迴圈的更新步進式(),並略過該次迴圈中後續未執行的所有敘述(包含本題位於switch外部的printf("\n");)。
解題方法
本題解題切入點為變數追蹤表(Trace Table)。透過按步走訪迴圈變數 的變化,逐一分析每一次疊代(iteration)進入 switch 後的分支走向、Fall-through 情況與輸出結果。
迴圈條件為 for (i=0; i<=8; i=i+2),故 依序走訪偶數序列:。當 時條件不成立,結束迴圈。
詳細執行過程追蹤:
- 第 1 次疊代():
- 條件檢查: 成立,進入迴圈。
switch (0):- 比對符合
case 0,執行printf("0");,螢幕輸出0。 - 遇到
break;,中斷並跳出switch。 - 迴圈後續敘述:執行
printf("\n");進行換行。 - 目前輸出:
0
- 第 2 次疊代():
- 步進與檢查:執行 ; 成立,進入迴圈。
switch (2):- 比對所有
case(0, 1, 4, 5, 6, 7),均不相符。 - 進入
default分支,執行printf("8");,螢幕輸出8。 - 遇到
break;,跳出switch。 - 迴圈後續敘述:執行
printf("\n");進行換行。 - 目前輸出:
0
8
- 第 3 次疊代():
- 步進與檢查:執行 ; 成立,進入迴圈。
switch (4):- 比對符合
case 4,執行printf("4");,螢幕輸出4。 - 注意:
case 4末端無break;,引發貫穿(Fall-through),程式順序向下執行。 - 進入
case 5,執行printf("5");,螢幕輸出5。