111 身心障礙特考四等 電子工程 計算機概要 考古題詳解
第 1 題2 分
透過下列那一種機制,可讓記憶體和硬碟之間的大量資料轉移的工作,不需要依賴中央處理器去逐筆處理?
核心觀念
本題考「直接記憶體存取」(Direct Memory Access, DMA)。DMA 控制器可在周邊裝置與主記憶體之間直接傳送資料,中央處理器(CPU)負責設定傳送的起始位置、方向與資料量,傳送期間不必逐筆搬移資料,完成後再由 DMA 控制器通知 CPU。
解題方法
題幹的關鍵是「大量資料轉移」以及「不需要依賴中央處理器去逐筆處理」。能讓資料在裝置與記憶體間直接傳送、減少 CPU 逐筆介入的機制,就是 DMA。
選項分析
- (A) I/O 映射 I/O(I/O-mapped I/O):錯誤。 這是配置 I/O 裝置位址空間的方式,CPU 透過專用的 I/O 指令讀寫裝置;它本身不會讓資料在裝置與記憶體間自動大量傳送。
- **(B) 記憶體映射 I/O(memory-mapped I/O):錯誤。
第 2 題2 分
某處理器的指令運算碼(operation code)長度為 個位元,該運算碼最多可解碼出幾種不同的指令?
核心觀念
運算碼(operation code,opcode)用來表示指令種類。若運算碼長度為 個位元,每個位元各有 、 兩種狀態,因此可組成 種不同的位元組合。
解題方法
本題的運算碼長度為 位元,套用公式:
因此,最多可解碼出 種不同的指令。
選項分析
第 3 題2 分
下列技術,何者可以協助電腦系統實現虛擬記憶體?
核心觀念
本題考查實現虛擬記憶體(Virtual Memory)的基本機制。虛擬記憶體讓程式使用的位址空間可以大於實際安裝的主記憶體;作業系統與硬體會將虛擬位址對應到實體記憶體中的位置。常見的實作方式是分頁(Paging)。
解題方法
判斷各選項是否負責「把虛擬位址空間映射到實體記憶體,並在需要時管理資料載入」即可。分頁將虛擬位址空間切成固定大小的頁(page),將實體記憶體切成相同大小的頁框(frame),再透過頁表記錄頁與頁框的對應關係。
當程式要存取的頁不在主記憶體時,作業系統可將所需頁從輔助儲存裝置載入主記憶體,並更新頁表。因此,分頁能支援虛擬記憶體。
選項分析
第 4 題2 分
將十進制含有小數點的數字 用二進制表示,答案為:
核心觀念
這題考查十進制小數轉換為二進制。二進制小數點後各位的位值依序為 ;也可反覆將小數部分乘以 ,每次乘積的整數部分依序就是二進制小數位。
解題方法
將 的小數部分反覆乘以 ,取每次乘積的整數部分:
依序讀取整數部分,得到二進制小數 。題目選項皆寫成五位小數,補上末尾的零後為 。
也可用位值驗算:
第 5 題2 分
將三進位數值 轉換為九進位數值表示,下列何者正確?
核心觀念
進位制轉換可利用 ,將三進位數每兩位一組分段,直接轉成九進位。分組時由小數點往左,每兩位一組;不足兩位時在左側補零。
解題方法
將 從右側開始每兩位分組:
每組分別換算成十進位數值。三進位的「20」代表 ,「12」代表 。因此:
選項分析
- (A) :正確。 兩位一組換算後依序為 、,得到 。
- (B) :錯誤。 「12」的三進位值為 ,不是 。
第 6 題2 分
若要用同樣數量的位元來描述 種不同狀態中的任一狀態,則至少要用多少個位元才足夠?
核心觀念
個位元共有 種不同的組合,因此要表示 種狀態,必須找到最小的整數 ,使得 。
解題方法
比較相鄰的 2 的次方:
6 個位元只能表示 64 種狀態,不足以涵蓋 100 種;7 個位元可表示 128 種,足以涵蓋。因此至少需要 7 個位元。
選項分析
第 7 題2 分
下列那一個布林運算式與()完全等效?
核心觀念
互斥或(XOR,exclusive OR)在兩個輸入不同時輸出 ,相同時輸出 。因此:
其中 表示 NOT、 表示 AND、 表示 OR。
解題方法
依照 XOR 的定義,列出兩種輸入不同的情況:
- :輸出 ,對應 。
- :輸出 ,對應 。
兩種情況以 OR 合併,得到:
這正是選項 (B)。
選項分析
- (A) 錯誤。 依德摩根定律,
第 8 題2 分
對 按位元進行 的運算,結果為下列何者?
核心觀念
位元 NOT(反相)會將每個位元個別取反: 變成 , 變成 。它不會改變位元數,也不涉及進位。
解題方法
將原數 的每一位分別反相:
第 9 題2 分
有關作業系統中的 Critical section problem,主要是在討論:
核心觀念
Critical section(臨界區)是行程中會存取共享資料或共享資源的程式區段。當多個行程同時執行時,若未妥善協調,可能發生資料不一致或競爭情況。
因此,Critical section problem(臨界區問題)主要探討如何同步多個行程,讓它們安全地存取共享資源,屬於行程同步(Process synchronization)的範疇。常見的解決機制包括互斥鎖、信號量與監視器。
解題方法
辨認題目中的關鍵詞「Critical section problem」:臨界區涉及多個行程競爭使用共享資源,核心在於協調行程執行順序與資源存取。這正是行程同步所處理的問題,故選 Process synchronization。
選項分析
第 10 題2 分
當一個程序(Process)得到 CPU 控制權後,可以被更高優先權的程序暫時暫停,是下列那一種作業系統的排程策略?
核心觀念
本題考查作業系統的 可搶先排程(Preemptive Scheduling)。若目前執行中的程序可以因更高優先權程序到達,或其他排程條件成立,而被作業系統暫停並讓出 CPU,這種排程方式稱為可搶先排程。
相對地,**不可搶先排程(Non-Preemptive Scheduling)**中,程序取得 CPU 後,通常會持續執行到結束或主動交出 CPU,排程器不會因另一個程序優先權較高就強制中斷它。
解題方法
題幹的關鍵是「得到 CPU 控制權後,可以被更高優先權的程序暫時暫停」。這表示執行中的程序可被作業系統強制中斷,CPU 改由優先權較高的程序使用,符合可搶先排程的定義。
選項分析
- **(A) 先到先做排程(FCFS)錯誤:**依程序到達就緒佇列的先後順序分配 CPU,通常屬於不可搶先排程;較晚到達的高優先權程序不會因此中斷目前程序。
第 11 題2 分
某處理器為具有 個 stages 的管線式處理器,各管線階級(pipeline stage)分別為 instruction fetch (IF), instruction decode (ID), execution (EX), memory (MEM), write back (WB)。各 stage 所需的運算時間分別如下: IF: ID: EX: MEM: WB:
則該處理器可執行的最快時脈頻率為何?
核心觀念
管線處理器每個時脈週期推進一個 stage。時脈週期必須足以容納最慢的 pipeline stage,因此最短時脈週期為各 stage 運算時間中的最大值:
時脈頻率與時脈週期互為倒數:。
解題方法
題目各 stage 的運算時間為 。其中最慢的是 MEM stage,需 ,所以時脈週期至少為:
換算頻率:
第 12 題2 分
一般而言,增加管線階級(Pipeline stages)數,可以造成下列何種結果?
核心觀念
本題考查管線處理器(Pipeline)的階段數與時脈頻率。管線會把指令執行工作切分為多個階段,例如取指、解碼、執行與寫回,讓多條指令能在不同階段重疊執行。
在其他條件相同時,階段切分得更細,每一階段需要完成的工作通常較少,因而有機會縮短最慢階段的延遲。時脈週期需足以容納最慢階段的延遲,因此可用較短的時脈週期運作,提升處理器時脈頻率。
解題方法
抓住「增加管線階段數」的直接效果:工作切得更細,理想情況下可縮短單一階段的延遲,讓時脈週期縮短、時脈頻率提高。時脈頻率與時脈週期互為倒數:
因此,時脈週期縮短時,時脈頻率提高,對應選項 (A)。
選項分析
第 13 題2 分
在 UNIX 系統中,fork() 這個系統呼叫的作用為何?
核心觀念
本題考查 UNIX 系統呼叫 fork 的功能。fork 會建立一個新的子程序(child process),原本呼叫它的程序則成為父程序(parent process)。
子程序會以父程序的執行狀態為基礎開始執行;fork 在父、子程序中都會返回,但返回值不同:父程序取得子程序的程序識別碼(PID),子程序則取得 0。
解題方法
辨認系統呼叫的名稱與功能即可。題目問 fork 的作用,關鍵是將它和「建立程序」連結:執行 fork 後,系統會新增一個子程序,因此選擇「產生子程序」的選項。
選項分析
第 14 題2 分
執行下列 C 程式後,產生的輸出為何?
#include<stdio.h> main() { int a[] = {3, 0}; int b[] = {1, 2, 3, 10};
printf("%d", b[1]/a[1]);
}
核心觀念
本題考查陣列索引、整數除法與除數為零的執行錯誤。
陣列索引從 開始,因此 a[1] 是陣列 a 的第二個元素,值為 ;b[1] 也是第二個元素,值為 。兩者皆為 int,相除時會進行整數除法;但整數不能除以 。
解題方法
依序代入陣列元素:
a[1] = 0b[1] = 2
所以 printf 中的運算式為:
除數為 ,程式在執行這個除法時會發生錯誤,因此不會正常輸出數值。
選項分析
第 15 題2 分
對一個堆疊(Stack)可以執行推入(Push)、彈出(Pop)和清空(Empty)等基本運算。現在接連對一個空堆疊連續執行推入 A、推入 B、清空、推入 C、推入 D、推入 E、彈出,最後執行推入 F。在執行以上運算後,堆疊中共存在多少元素?
核心觀念
堆疊(Stack)採用「後進先出」(LIFO)原則:最後推入的元素會最先彈出。清空(Empty)會移除堆疊中的所有元素,使堆疊回到空狀態。
解題方法
依序追蹤每個運算後堆疊內的元素:
| 運算 | 堆疊內容(底部 → 頂端) |
|---|---|
| 初始為空 | 空 |
| 推入 A | A |
| 推入 B | A、B |
| 清空 | 空 |
| 推入 C | C |
| 推入 D | C、D |
| 推入 E | C、D、E |
| 彈出 | C、D |
| 推入 F | C、D、F |
第 16 題2 分
在一個圖(Graph)中進行深度優先搜尋(Depth-first Search),應使用下列那種資料結構設計,可使得搜尋的過程最符合深度優先的順序?
核心觀念
深度優先搜尋(Depth-first Search, DFS)會從起點沿著尚未搜尋的相鄰節點一路往下探索;遇到沒有未訪問鄰點的節點時,便回到上一個尚有未探索路徑的節點。
堆疊(Stack)採用「後進先出」(LIFO)原則,最近走到的節點會最先取出,因此能自然保留 DFS 回溯所需的順序。
解題方法
判斷搜尋方式與資料結構的配合:
- 深度優先:沿路深入,必要時回溯,使用堆疊。
- 廣度優先:先搜尋同一層的所有節點,使用佇列。
因此,本題要選擇能符合「一路深入、再回溯」順序的資料結構,即堆疊。
選項分析
第 17 題2 分
下列何者是平衡樹(Balanced Tree)?
核心觀念
本題考「平衡樹」的定義。平衡樹是透過限制左右子樹高度差,避免樹的高度過度偏斜,讓搜尋、插入與刪除等操作維持良好效率。AVL tree 是一種自我平衡的二元搜尋樹;其每個節點的左右子樹高度差至多為 。
解題方法
辨認選項是否明確以維持樹的高度平衡為設計條件。AVL tree 具有高度平衡規則,當插入或刪除造成失衡時,會透過旋轉恢復平衡,因此符合平衡樹的定義。
選項分析
- (A) AVL tree:正確。 AVL tree 是經典的平衡二元搜尋樹,透過限制每個節點左右子樹的高度差來維持平衡。
- **(B) Binary Search Tree:錯誤。
第 18 題2 分
之前序式表示法為何?
核心觀念
本題考「中序式轉前序式」。中序式的運算子寫在運算元之間;前序式則把運算子放在所屬運算元或子運算式之前。依運算子優先順序,乘法高於加法;括號內先視為一個完整子運算式。
解題方法
原式為 。
- 括號內 ,先算 ,再與 相加,因此前序式為 。
- 右側 的前序式為 。
- 最外層是加法,將左、右兩個子運算式依序接在 後:
去除括號與空格後,得到:
選項分析
第 19 題2 分
Dijkstra 演算法是一很有名的找出最短路徑演算法,根據其方法特性,屬於下列何類演算法?
核心觀念
本題考查 Dijkstra 演算法的分類。Dijkstra 演算法用來求解帶有非負權重圖形中的單一起點最短路徑問題,採取逐步確定最短距離的方式,並利用已求得的子問題結果擴展到下一個節點,屬於動態規劃演算法。
解題方法
從演算法的解題特性判斷:Dijkstra 會維護各節點目前已知的最短距離,每次選取尚未確定且距離最小的節點,再用它更新相鄰節點的距離。其距離更新可寫為:
其中 、 是起點到節點的目前距離, 是邊 的權重。演算法將已確定的子問題結果用於後續更新,因此本題依官方分類選擇動態規劃。
選項分析
- **(A) Dynamic Programming Algorithm:正確。
第 20 題2 分
從圖中的節點 a 開始進行廣度優先搜尋(Breadth first search,簡稱 BFS),產生的廣度優先擴張樹(BFS spanning tree)可能為下列何者? 🖼️【此處有附圖,請對照原卷】
核心觀念
本題考查廣度優先搜尋(BFS)與 BFS spanning tree 的層級概念。
BFS 從起點 出發時,會依照「距離起點的最短邊數」逐層拜訪:
- 第 層:起點
- 第 層:與 直接相連的節點
- 第 層:由第 層節點首次拜訪的節點
- 第 層:由第 層節點首次拜訪的節點
BFS spanning tree 必須同時符合:
- 包含原圖所有節點。
- 為一棵樹,不能有循環。
- 每個節點在樹中的深度,必須等於該節點由起點 出發的最短距離。
- 同一層節點的拜訪順序可以不同,因此 BFS 樹不一定唯一。
解題方法
依原圖可判斷:
- 起點 直接連接左上與左下兩個節點,這兩個節點必須位於第 層。
- 左上節點所連接的上方及中間節點,以及左下節點所連接的中下方及下方節點,位於第 層。
- 最右側節點可由第 層的任一適當節點拜訪,因此位於第 層。
因此,正確的 BFS 樹應呈現:
第 21 題2 分
將下列六個整數依下列步驟由小到大排序的演算法為何? 原始資料 9 8 6 10 9 3 第一次比序並交換位置後 8 6 9 9 3 10 第二次比序並交換位置後 6 8 9 3 9 10 第三次比序並交換位置後 6 8 3 9 9 10 第四次比序並交換位置後 6 3 8 9 9 10 第五次比序並交換位置後 3 6 8 9 9 10
核心觀念
本題考辨認排序演算法。**氣泡排序(bubble sort)**會反覆比較相鄰兩個元素;若順序不符,就交換位置。每一趟比較後,較大的元素會逐步往右移,完整一趟後,該趟最大的元素到達未排序部分的最右端。
解題方法
觀察各次結果中的相鄰交換:
- 原始資料:
- 第一次後: 大數 往右移到末端,顯示它經過相鄰比較與交換。
- 第二次後: 往右移到尚未排序部分的末端。
- 第三次後:
- 第四次後:
- 第五次後:
每次比序都透過相鄰元素交換,較大的元素逐步向右移;這正是氣泡排序的特徵,因此符合官方答案 (D)。
第 22 題2 分
搜尋未排序的串列,應使用那種搜尋法?
核心觀念
本題考查搜尋法的適用條件。搜尋未排序的串列時,沒有大小順序可供判斷目標在前半段或後半段,因此需從串列的一端開始,逐一比對元素;這種方法稱為循序搜尋法(Sequential Search),也稱線性搜尋法。
解題方法
先確認串列是否已排序。未排序的資料無法使用排序所提供的方向資訊來縮小搜尋範圍,因此由第一個元素開始依序比對,找到目標即停止;若比對至末端仍未找到,則表示目標不在串列中。這正是循序搜尋法的做法。
選項分析
第 23 題2 分
假設要撰寫一個 C 程式來處理學生資料,而每一個學生有兩類資料,第一類為其姓名、型態為字串,第二類為其班級排名、型態為整數,則應該使用 C 語言的何種型態來表示每一筆學生資料最合適?
核心觀念
本題考查 C 語言中如何將不同型態、但屬於同一筆資料的欄位組合在一起。
struct(結構)可將多個欄位組成一筆資料,欄位可使用不同型態。學生資料同時包含姓名字串與班級排名整數,適合以結構表示。
解題方法
先判斷姓名與排名是否要同時保存在每筆學生資料中:姓名與排名都是學生資料的一部分,兩者需要同時存在,因此應選能將多個欄位一起組合的 struct。
例如:
struct Student {
char name[50];
int rank;
};
其中 name 儲存姓名字串,rank 儲存班級排名整數;一個 struct Student 即代表一筆學生資料。
選項分析
第 24 題2 分
若是一個高階程式語言支援強型態(strong typing),有關其程式特性的敘述,下列何者錯誤?
核心觀念
強型態(strong typing)重視程式執行時的型態安全:運算與資料使用須符合型態規則,避免不合理的型態混用。許多強型態語言會在編譯階段檢查型態,但「強型態」不代表所有型態錯誤都必然在編譯時發現,也不直接決定程式的執行速度。
解題方法
先辨認各選項描述的是型態與程式結構的關係,還是執行效率。強型態主要規範型態使用的一致性;執行時間則受語言實作、編譯器最佳化、執行環境等因素影響,不能單憑強弱型態判定。故將「強型態通常執行較久」視為必然特性,即為錯誤敘述。
選項分析
第 25 題2 分
如下所示之 C 程式,其輸出為下列何者?
#include<stdio.h> int func(int a, int b) { int p; if (b == 0) return 1; p = func (a, b / 2); p *= p; return (b % 2) ? a * p : p; } int main(int argc, char *argv) { printf("%d\n", func(2, 11)); return 0; }
核心觀念
本題考遞迴函式與整數除法、取餘數的運算,並利用平方遞迴計算次方。對正整數 ,C 語言的整數除法 會捨去小數部分; 則用來判斷 是奇數還是偶數。
解題方法
函式的遞迴基底是 時回傳 。其餘情況先計算 ,再將 平方;若 是奇數,則再乘上 。因此這個函式計算的是 。
代入 ,依遞迴呼叫逐步計算:
第 26 題2 分
執行下列 C 程式後,產生的輸出為何?
#include<stdio.h> int main(){ int i; for(i= 0; i < 3; i++){ switch(i){ case 0: break; case 1: printf("one "); case 2: printf("two "); case 3: printf("three "); } printf("four "); } return 0; }
核心觀念
本題考查 for 迴圈與 switch 的執行流程,尤其是 switch 中 break 的作用,以及沒有 break 時發生的「貫穿執行」(fall-through)。
for(i = 0; i < 3; i++)使i依序為0、1、2。switch(i)會從符合的case開始執行;遇到break才會離開switch。- 若某個
case後沒有break,程式會接著執行後續case的敘述,直到遇到break或switch結束。 - 每輪的
switch結束後,都會執行printf("four ");。
解題方法
依照 i = 0、1、2 逐輪追蹤:
i | switch(i) 執行內容 | 該輪輸出 |
|---|---|---|
| 0 | case 0 立即遇到 break,離開 switch | four |
| 1 | 從 case 1 開始,依序執行 case 1、case 2、case 3 | one two three four |
第 27 題2 分
對下列之 C 函式:
int f(char *s, char *t) { char *p1, *p2; for (p1 = s; *p1; p1++) { for (p2 = t; *p2; p2++) if (*p1 == *p2) break; if (*p2 == '\0') break; } return p1-s; }
若執行此函式呼叫 f("abcd", "babc"),所得到的回傳值為何?
核心觀念
此函式逐一檢查字串 s 中的每個字元,並搜尋該字元是否出現在字串 t 中:
- 內層迴圈找到相同字元時,
break跳出內層迴圈。 - 若搜尋到
t的結尾'\0'仍未找到相同字元,外層迴圈也會停止。 - 函式回傳
p1 - s,也就是「第一個沒有出現在t中的字元」在s裡的索引位置。
解題方法
s 為 "abcd",t 為 "babc"。依序檢查 s:
p1 索引 | s 字元 | 是否出現在 t 中 | 結果 |
|---|---|---|---|
| 0 | a | 是 | 繼續檢查 |
| 1 | b | 是 | 繼續檢查 |
| 2 | c | 是 | 繼續檢查 |
第 28 題2 分
下列 C 程式的執行結果為何?
int fn(char s[]) { int i=0, num=0; while (s[i]) if (str[i++]=='e') num++; return num; } int main() { char c[]="To be or not to be, that's the question"; printf("%d", fn(c)); return 0; }
核心觀念
本題考查 C 語言的字元陣列、字串結尾字元 '\0',以及 while 迴圈與後置遞增運算子 i++。
字串 "To be or not to be, that's the question" 的字元會依序存放在陣列中,最後以 '\0' 結尾。while (s[i]) 在目前字元不是 '\0' 時繼續執行。每次執行 s[i++] 時,先取出目前位置的字元,再將 i 加 1;若該字元是小寫 'e',便將 num 加 1。
解題方法
逐字掃描字串,只計算小寫字元 'e':
To be:1 個or not to be,:1 個that's the question:2 個(the中 1 個、question中 1 個)
因此,字串中共有 個小寫 'e',函式回傳 4,printf 輸出 4。
選項分析
第 29 題2 分
執行下列 C 程式後,產生的輸出為何?
#include <stdio.h> int f (int *a) { int i, t; t = *a; for( i=1; i<t; i++ ) { *a += t; } return t; } main() { int x =5, y =0; y = f(&x); printf("%d, %d\n", x, y); }
核心觀念
本題考查 C 語言的指標與傳址效果、for 迴圈的執行次數,以及函式的回傳值。
f(&x) 將 x 的位址傳入函式,因此函式內的 *a 指向原本的 x。對 *a 的修改會直接改變 x;但 return t 回傳的是區域變數 t 的值。
解題方法
進入 f(&x) 時,*a 指向 x,而初始值為 :
t = *a;
因此 t = 5。接著執行:
for (i = 1; i < t; i++) {
*a += t;
}
t 固定為 ,所以迴圈在 時各執行一次,共四次。每次都將 加到 x:
| 迴圈次數 | x 的值 |
|---|---|
| 初始值 | 5 |
| 第 1 次 | 10 |
| 第 2 次 | 15 |
| 第 3 次 | 20 |
| 第 4 次 | 25 |
第 30 題2 分
在一個有 個節點(Nodes)的二元樹(Binary tree)中,包含多少個空鏈結(Null links)?
核心觀念
二元樹中,每個節點都有兩個子鏈結欄位,分別指向左子樹與右子樹。若某個子樹不存在,對應的鏈結就是空鏈結(Null link)。
解題方法
若二元樹有 個節點,每個節點提供兩個子鏈結欄位,因此共有 個鏈結欄位。
在一棵有 個節點的樹中,每個非根節點都由一條鏈結連接至其父節點,所以非空鏈結共有 條。其餘欄位就是空鏈結:
因此答案為選項 (C) 。
選項分析
第 31 題2 分
給定以下類別定義:
class A { public: A() { cout << ":::"; } A(int a) { cout << "***"; } A(int a,int b) { cout << "$$$"; } private: };
若在 main() 中執行以下指令,則將產生的輸出為何? A v1; A v2(1,2); A v3(3);
核心觀念
本題考 C++ 的建構函式多載。物件建立時,會依照提供的引數數量與型態,選擇相符的建構函式:
A:無引數建構函式,輸出:::A(int a):一個整數引數的建構函式,輸出***A(int a, int b):兩個整數引數的建構函式,輸出$$$
解題方法
依序判斷三個物件的初始化方式:
A v1;沒有提供引數,呼叫A,輸出:::A v2(1,2);提供兩個整數引數,呼叫A(int a, int b),輸出$$$A v3(3);提供一個整數引數,呼叫A(int a),輸出***
三個建構函式依程式執行順序輸出,合併後為:
第 32 題2 分
在物件導向程式中,在一個類別(Class)中,可定義多個名稱相同但參數(Parameter)不同的方法(Method),此稱為:
核心觀念
本題考「方法多載(Method Overloading)」:在同一個類別中,定義多個方法名稱相同、參數列表不同的方法,讓程式依呼叫時提供的參數來選擇要執行的方法。參數列表的差異可在參數數量、型別或排列順序。
解題方法
抓住題幹的關鍵描述:「同一個類別中,方法名稱相同但參數不同」。這正是 Overload(多載) 的定義,因此選 (B)。
選項分析
- **(A) Override(覆寫)錯誤:**子類別重新定義父類別中已存在的方法,通常保留相同的方法名稱與參數列表,以改變或提供該方法的實作。
第 33 題2 分
依順序插入下列整數以建立一棵二元搜尋樹(Binary search tree):、、、、、、、、,則該二元搜尋樹的樹根(Root)的左子樹(Left subtree)、右子樹(Right subtree)各有多少個節點?
核心觀念
二元搜尋樹(Binary Search Tree, BST)依序插入節點時,對每個節點都遵守:左子樹的鍵值小於該節點,右子樹的鍵值大於該節點。題目詢問的是根節點左、右子樹各有幾個節點,不必比較兩邊的高度,也不計入根節點本身。
解題方法
依題目順序插入:
- 為根節點。
- ,放在 左側;,放在右側。
- ,往左至 ,因 ,放在 左側。
- 、但 ,放在 右側。
- 、但 ,放在 左側。
- 、且 ,放在 右側。
- 、、,放在 左側。
- 、、但 ,放在 右側。
形成的樹如下:
第 34 題2 分
下列何者屬於廣域網路(Wide Area Networks, WAN)使用的技術?
核心觀念
本題考查網路涵蓋範圍與常見連線技術的分類。廣域網路(WAN)用來連接相距較遠、跨越城市或地區的網路;ADSL 是透過電話銅線提供寬頻上網的接取技術,常用於連接用戶端與電信業者網路,屬於 WAN 相關技術。
解題方法
先辨認各選項主要用途與涵蓋範圍:
- 藍牙與 Wi-Fi 是短距離無線通訊技術。
- 乙太網路主要用於區域網路(LAN)。
- ADSL 利用電話線路提供用戶連接電信網路的寬頻接取服務,符合 WAN 的廣域連線情境。
因此選擇 ADSL。
選項分析
- (A) 藍牙(Bluetooth)錯誤。 藍牙用於個人裝置間的短距離無線通訊,例如手機連接耳機,屬於個人區域網路(PAN)範疇。
第 35 題2 分
關於企業電子化的軟體系統,下列敘述何者錯誤?
核心觀念
本題考查企業電子化系統的功能與定位。判斷重點是分清 KM、SCM、CRM、ERP 各自處理的對象:
- KM(知識管理):蒐集、整理、分享與運用組織知識,協助知識創造、傳承及決策。
- SCM(供應鏈管理):協調企業與供應商、製造商、通路等供應鏈夥伴。
- CRM(客戶關係管理):運用資訊系統管理客戶資訊與互動,提升對客戶需求的了解。
- ERP(企業資源規劃):整合企業內部各部門的流程與資料,支援協調及資源運用。
解題方法
逐一比對各選項的「系統名稱」與「功能描述」。若描述把某系統的核心技術與目的說成另一種系統的工作,即為錯誤選項。
選項 (A) 所列的資料倉儲、線上分析處理(OLAP)、資料探勘與資料展現,主要用於商業智慧(BI)及決策支援分析;將這組功能當作 KM 的定義,系統定位不符,因此錯誤。
選項分析
第 36 題2 分
在 TCP/IP 的架構下,為方便管理,讓每一臺電腦能夠有不同 IP,確保其位址的唯一性,網路管理員通常會採用什麼機制?
核心觀念
本題考查 DHCP 的用途。DHCP(Dynamic Host Configuration Protocol,動態主機設定協定)可由 DHCP 伺服器集中管理網路設定,並在裝置加入網路時,動態分配 IP 位址及其他設定,例如子網路遮罩、預設閘道與 DNS 伺服器位址。
解題方法
題幹的關鍵在「讓每一臺電腦取得不同 IP」及「方便管理」。這描述的是由網路管理機制自動分配 IP 位址,對應 DHCP。
DHCP 通常從設定好的位址範圍中租用 IP 給用戶端;租約到期、裝置離開網路或重新連線時,位址可依管理設定續租或重新分配。如此可減少逐臺手動設定的工作,也降低同一網段內因重複設定而造成 IP 衝突的機會。位址唯一性仍取決於網路的正確設定與管理。
選項分析
第 37 題2 分
有關傳輸控制通訊協定(Transmission Control Protocol;TCP),下列敘述何者錯誤?
核心觀念
本題考查 TCP 的協定層級、連線特性,以及流量控制、壅塞控制與即時影音傳輸的適用性。TCP 屬於傳輸層,採連接式傳輸,並提供可靠傳輸所需的控制機制;即時影音則通常重視低延遲,常使用 UDP 傳輸。
解題方法
先判斷各敘述是否符合 TCP 的基本特性。TCP 會在傳送資料前建立連線,並透過確認、重傳、流量控制及壅塞控制來提升傳輸可靠性。這些機制有助於資料完整送達,但也可能帶來等待與重傳延遲,因此一般而言,TCP 不適合對即時性要求高的影音傳輸。
選項分析
- (A) 正確。 TCP 是傳輸層(Transport layer)協定,負責應用程式間的端點對端點資料傳輸。
- **(B) 正確。
第 38 題2 分
下列何者不是 Web 安全協定?
核心觀念
本題考辨識網路安全相關協定,以及各協定所屬的網路層級與功能。一般的 HTTP 是用來傳送網頁資料的應用層協定,本身不提供加密或身分驗證;安全的網頁傳輸通常使用 HTTPS,也就是在 HTTP 上搭配 TLS。
解題方法
逐一判斷選項是否具備網路安全功能:SSH 提供安全遠端登入,SET 用於信用卡交易安全,IPsec 則在網路層提供加密與驗證。HTTP 本身只負責傳輸網頁內容,未提供上述安全保護,因此符合題目所問的「不是 Web 安全協定」。
選項分析
- (A) HTTP 傳輸協定:正確。 HTTP 是超文字傳輸協定,用於瀏覽器與網頁伺服器間交換資料;一般 HTTP 傳輸不加密,也不驗證通訊對象,因此不是安全協定。
第 39 題2 分
具有下列各類常見副檔名的檔案中,相對比較安全,不易含有惡意程序碼者為何?
核心觀念
本題考常見檔案格式與惡意程式碼風險的相對差異。副檔名只能提示檔案類型,不能保證檔案內容安全;比較時,應看格式是否通常承載可執行指令、巨集或其他主動內容。
純文字檔 .txt 通常只儲存文字內容,不會像文件或壓縮檔那樣直接承載巨集或可執行檔,因此在四個選項中相對較不易含有惡意程式碼。
解題方法
逐一比較各格式可能包含的內容:
.doc是文書文件格式,可含巨集或利用文件軟體漏洞的內容。.pdf除文字與圖像外,也可能含有程式指令、表單或其他主動內容。.zip是壓縮封裝格式,可能包住惡意程式或其他危險檔案。.txt通常是純文字,承載主動內容的能力較低。
因此,依題意比較相對安全性,選擇純文字檔 .txt。
選項分析
第 40 題2 分
有關數位簽章(Digital Signature)的敘述,下列何者正確?
核心觀念
本題考數位簽章的基本流程,以及它與訊息摘要、數位憑證和訊息認證碼的差異。數位簽章通常先對訊息計算雜湊值,再由簽署者以自己的私密金鑰對摘要簽章。驗證者則使用簽署者的公開金鑰驗證簽章,並比對訊息摘要。
解題方法
判斷各選項時,抓住兩個重點:
- 為提高效率,簽章通常作用於固定長度的訊息摘要,而不是整份訊息。
- 數位簽章的方向是「私密金鑰簽章、公開金鑰驗證」。
再區分數位簽章與其他安全機制:數位憑證用於確認公開金鑰與簽署者身分的關聯;HMAC 則使用共享密鑰產生訊息認證碼,並非數位簽章。
選項分析
(A) 正確。 訊息通常先經雜湊函數計算出訊息摘要,再對摘要進行簽章。摘要長度固定,能降低簽章運算的成本;驗證時也會重新計算訊息摘要並與簽章所驗證的摘要比對。