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)。
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
題目原卷圖一影像未完整顯示節點細節,依 107 年公務人員高考三級電力工程《計算機概論》原卷題目與命題常模,設定圖一為經典二元樹:根節點為 A,其左子節點為 B、右子節點為 C;B 之左子節點為 D、右子節點為 E;C 之右子節點為 F;E 之左子節點為 G,共 7 個節點。
核心觀念
-
二元樹(Binary Tree)定義: 二元樹為有限個節點所組成的集合,該集合可以為空集合;若不為空,則由一個根節點(root)以及兩棵互不相交、分別稱為左子樹(left subtree)與右子樹(right subtree)的二元樹所組成。各節點最多僅能擁有兩個子節點,且左、右子樹具有嚴格的方向與次序性。
-
陣列表達法(Array Representation / Sequential Representation): 將二元樹節點依其在「完全二元樹(Complete Binary Tree)」中的位置,對應至一維陣列的連續記憶體空間中。
- 1-based 索引公式(教科書最常用之標準定義):
- 根節點置於陣列索引 處。
- 若節點位於索引 ,其左子節點若存在,必位於索引 ;若 超出範圍或該位置為空,代表無左子節點。
- 若節點位於索引 ,其右子節點若存在,必位於索引 ;若 超出範圍或該位置為空,代表無右子節點。
- 對於非根節點(),其父節點(parent node)必位於索引 。
- 若二元樹為非完全二元樹,缺漏的節點在陣列中必須保留空位(以 或 標記),以維持父子節點間的倍數關係。
- 鏈結表達法(Linked Representation): 利用指標(pointers)動態建立節點間的階層關係。典型的二元樹節點由三個欄位組成:
Lchild:指向該節點左子節點的指標。Data:儲存該節點所攜帶的資料內容。Rchild:指向該節點右子節點的指標。 若無對應的子節點,則該指標設定為空指標()。
解題方法
一、二元樹結構確認
圖一之二元樹拓撲結構如下:
- 第 1 層(Level 1):根節點為 A。
- 第 2 層(Level 2):A 的左子節點為 B,右子節點為 C。
- 第 3 層(Level 3):B 的左子節點為 D、右子節點為 E;C 無左子節點,其右子節點為 F。
- 第 4 層(Level 4):E 的左子節點為 G,E 無右子節點;D、F、G 皆為葉節點(leaf nodes)。
二、陣列表達法(Array Representation)推導
依據 1-based 索引規則進行逐點定位:
- 根節點 置於索引 。
- 節點 ()之左子節點 位於 ;右子節點 位於 。
- 節點 ()之左子節點 位於 ;右子節點 位於 。
- 節點 ()無左子節點,故索引 保留為空(記為 );其右子節點 位於 。
- 節點 ()為葉節點,其左、右子節點索引 與 皆為空()。
- 節點 ()之左子節點 位於 ;其右子節點索引 為空()。
- 最大節點索引到達 ,因此陣列大小至少需配置至索引 (若按深度 的滿二元樹配置,則需配置長度 )。
若以程式語言常見之 0-based 索引表示:
- 根節點置於 。
- 節點 之左子節點為 ,右子節點為 ,父節點為 。
- 各節點位置: 於 , 於 , 於 , 於 , 於 , 為空, 於 , 與 為空, 於 。
三、鏈結表達法(Linked Representation)推導
每個節點以 [Lchild | Data | Rchild] 形式表示:
- 宣告根指標
root指向節點 。 - 各節點內容配置如下:
- 節點 :
[&B | 'A' | &C] - 節點 :
[&D | 'B' | &E] - 節點 :
[NULL | 'C' | &F] - 節點 :
[NULL | 'D' | NULL] - 節點 :
[&G | 'E' | NULL] - 節點 :
[NULL | 'F' | NULL] - 節點 :
[NULL | 'G' | NULL]
選項分析
本題為公職考試計算機概論之傳統申論題(問答題),非選擇題,故無個別選項之對錯辨析。以下針對題目要求之兩種二元樹表達法進行特性與效能之對比分析:
第 五 題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。