109 鐵路特考員級 電子工程 計算機概要 考古題詳解
第 1 題2 分
當今較常見的計算機架構,大都是基於下列哪種模型?
核心觀念
本題考查常見計算機架構的基本模型。凡紐曼(von Neumann)模型的特徵是:指令與資料共用記憶體,處理器依序取出指令、解讀指令,再執行指令;這種運作方式也稱為「儲存程式概念」。
解題方法
題目問「當今較常見的計算機架構」所依據的模型,應辨認一般用途電腦的主流架構。一般電腦多採用凡紐曼模型:程式指令和資料存放於同一記憶體空間,由處理器透過系統匯流排存取,因此選 (C)。
選項分析
- (A) 資料流(data flow)模型:錯誤。 資料流模型以資料的可用狀態觸發運算,重點在運算節點間的資料依賴與流動,並非一般通用電腦最常見的基本架構模型。
- **(B) 杜林(Turing)模型:錯誤。
第 2 題2 分
下列程式語言中,何者最適於網頁瀏覽器執行?
核心觀念
本題考查程式語言是在用戶端(瀏覽器)還是伺服器端執行。網頁瀏覽器能直接解讀並執行 JavaScript,常用來處理網頁互動、表單檢查與動態更新。
解題方法
先辨認各選項的典型執行環境:瀏覽器端程式由使用者的瀏覽器執行;伺服器端程式則在網站伺服器處理,再將結果傳給瀏覽器。C++ 通常需先編譯成機器碼或其他可執行形式,並非瀏覽器原生的網頁程式語言。因此,最適於網頁瀏覽器執行的是 JavaScript。
選項分析
- (A) ASP(Active Server Pages)錯誤。 ASP 是伺服器端網頁技術,由網站伺服器處理後輸出網頁內容;瀏覽器接收的是處理結果,不是直接執行 ASP 程式碼。
第 3 題2 分
將二進位數值 轉換成十進位,下列何者正確?
核心觀念
二進位數轉換成十進位時,整數部分依位權 展開;小數部分依位權 展開,再將各位的數值相加。
解題方法
將 依小數點分成整數部分 與小數部分 。
整數部分由右至左標示位權:
小數部分由小數點右側開始,位權依序為 :
因此:
第 4 題2 分
關於關聯式資料庫設計正規化(normalization),下列敘述何者正確?
核心觀念
本題考查資料庫正規化各階段的先後關係,以及第二、第三、第四正規化分別處理的相依問題。
正規化是逐步整理關聯式資料表的過程:先滿足較低階正規化的條件,再進一步檢查是否符合更高階正規化。常見重點如下:
- 第二正規化(2NF):符合第一正規化,且每個非鍵屬性完全相依於候選鍵;主要消除對複合鍵的部分相依。
- 第三正規化(3NF):符合第二正規化,且非鍵屬性不透過其他非鍵屬性而間接相依於候選鍵;主要處理遞移相依。
- 第四正規化(4NF):符合第三正規化,且不存在非平凡的多值相依。
因此,高階正規化建立在較低階正規化已符合的前提上。
解題方法
逐一對照各正規化階段的處理對象,並檢查選項是否把部分相依、遞移相依與多值相依的階段弄混:
- 判斷正規化是否按階段遞進。
- 核對 2NF、3NF、4NF 各自處理的相依問題。
- 選出與正規化原則及階段定義相符的敘述。
選項分析
(A) 高階正規化的前提是低階正規化完成。—正確
第 5 題2 分
下列作業系統何者不具時間分享(time sharing)之特性?
核心觀念
時間分享(time sharing)是作業系統讓多個使用者或多個工作共用處理器的方式。系統將處理器時間切成短暫的時間片,輪流分配給各工作;時間片用完後,作業系統會切換執行對象,讓使用者感覺各工作能同時進行。
判斷重點是作業系統是否具備多工與處理器排程能力,而非它能否執行應用程式。
解題方法
逐一辨認選項的作業系統類型:Windows 7、GNU/Linux 與 Android 都支援多工排程,具備時間分享特性;DOS 則是傳統單使用者、單工作環境,沒有一般所指的時間分享能力。因此選擇 DOS。
選項分析
第 6 題2 分
將運算元的位址直接編碼在指令中的是哪一種定址模式?
核心觀念
本題考「運算元的有效位址如何取得」。直接定址是把運算元所在的記憶體位址直接寫在指令的位址欄位中;執行指令時,該欄位的內容就是有效位址(Effective Address, EA)。
解題方法
看到「將運算元的位址直接編碼在指令中」,即可判斷為直接定址。換句話說,指令給的是運算元的位址,處理器再依此位址存取記憶體中的運算元。
選項分析
- (A) 暫存器定址(register addressing)錯誤:指令指定的是存放運算元的暫存器編號,運算元位於暫存器內;指令中並未直接編碼運算元的記憶體位址。
第 7 題2 分
下列何者為直譯式語言?
核心觀念
本題考程式語言的執行方式。直譯式語言通常由直譯器在程式執行時逐步讀取並執行指令;編譯式語言則會先將原始程式轉換成機器碼或其他形式的程式,再執行。
解題方法
辨認選項主要的執行特性:JavaScript 通常由瀏覽器或 JavaScript 執行環境在執行時處理,故在本題採用的分類中屬於直譯式語言;Java、C++ 與 Objective-C 通常需先經編譯程序,因此不符合題意。
選項分析
- (A) Java:錯誤。 Java 原始碼先編譯為位元碼,再由 Java 虛擬機器執行;依本題常見分類,歸為編譯式語言。
- **(B) JavaScript:正確。
第 8 題2 分
一微處理器有 32 條位址線、24 條資料線,可定址之記憶體最多為多少位元組?
核心觀念
位址線的數量決定可表示的不同位址數。若有 條位址線,每條線可為 0 或 1,因此共有 個位址。題目未註明採用位元組定址時,計算機概要通常以每個位址對應 1 位元組計算。
解題方法
本微處理器有 32 條位址線,可表示的位址數為:
每個位址對應 1 位元組,因此最多可定址:
資料線有 24 條,影響一次可傳輸的資料寬度;它不決定位址總數,因此不影響本題的可定址記憶體容量。
選項分析
- (A) :錯誤。 位元組,對應 24 條位址線的位元組定址容量;題目的位址線是 32 條。
第 9 題2 分
一般全彩影像(True Color)是以多少位元來表現顏色?
核心觀念
本題考影像的色彩深度,也就是用多少位元表示每個像素的顏色。一般全彩影像採用 RGB 三原色,每個色彩通道各以 位元表示,因此紅、綠、藍三個通道合計:
解題方法
每個通道有 位元,可表示 個亮度階調。RGB 三個通道合計為 位元,每個像素可表示的顏色數為:
因此,一般所稱的 True Color(全彩)是每像素 位元。
選項分析
- (A) :錯誤。 位元可表示 種數值,常用於灰階影像或索引色影像,不足以代表一般 RGB 全彩。
第 10 題2 分
若你的電腦系統採用偶同位(even parity),則下列數字何者會被視為有錯誤發生?
核心觀念
偶同位(even parity)檢查的是資料位元與同位位元合計後, 的個數是否為偶數。若收到的位元串中, 的總數為奇數,便會被判定為同位檢查錯誤。
解題方法
逐一計算每個選項中 的個數:總數為偶數,符合偶同位;總數為奇數,則會被視為有錯誤發生。
選項分析
第 11 題2 分
下列何者是布林函數 的積之和(sum of products)表示法?
核心觀念
布林函數的「積之和」(sum of products, SOP)表示法,是將函數寫成多個「乘積項」相加的形式。布林代數中, 表示 OR,乘積表示 AND,撇號表示 NOT。
本題要把
化為 SOP 形式。
解題方法
利用布林代數分配律展開:
由互補律 ,以及吸收律 ,可得
因此符合 SOP 形式的是選項 (B)。
選項分析
第 12 題2 分
【題目圖示未包含於文字擷取,請參考原卷】
使用 2 個 SR 正反器(flip-flop)與 3 個邏輯閘組成一時序電路(sequential circuit)如下圖所示,其中 SR 正反器由 NAND 閘所組成。、 表示狀態位元, 表示外部輸入位元, 表示輸出位元, 與 表示第一個 SR 正反器之輸入位元, 與 代表第二個 SR 正反器之輸入位元,CLK 表示時脈。
關於各個邏輯閘與正反器之時間參數( 表示傳遞延遲時間, 表示就緒時間(setup time), 表示保持時間(hold time))如下:
反向器(inverter): 互斥或閘(XOR): 或閘(OR): 正反器:、、
試問此時序電路之最高操作頻率為何?
核心觀念
這題考同步時序電路的最高操作頻率。時脈週期必須足以涵蓋最長的「正反器輸出至下一個正反器輸入」路徑:
其中 是起始正反器的輸出傳遞延遲, 是目的正反器的就緒時間。最高操作頻率為 。
解題方法
依圖追蹤正反器之間的訊號路徑:第一個正反器的輸出 經過 XOR 閘,再經反向器後送至第二個正反器的輸入 。這條路徑的延遲為:
依序為正反器輸出延遲、XOR 閘延遲、反向器延遲及第二個正反器的就緒時間。因此:
第 13 題2 分
以下排序演算法(sorting algorithm)何者使用分而治之(divide-and-conquer)的概念?
核心觀念
本題考查排序演算法是否採用「分而治之」(divide-and-conquer)。此方法通常分成三步:
- 分割:將原問題拆成較小的子問題。
- 征服:遞迴解決各子問題。
- 合併或完成:將子問題的結果組成原問題的解。
快速排序法會選定一個基準值(pivot),將資料分成小於與大於基準值的兩部分,再分別遞迴排序;兩側完成後,資料即依序排列,因此符合分而治之。
解題方法
辨認演算法是否將資料分成較小區段,並對各區段重複執行排序。快速排序法的主要步驟如下:
- 選取一個基準值。
- 將比基準值小的元素移至一側,比基準值大的元素移至另一側。
- 分別對兩側子序列遞迴執行相同操作。
例如資料為 ,選 作為基準值,分割後可得左側 、右側 ;再分別排序兩側,最後得到 。這正是將問題分割為子問題並遞迴處理的過程。
選項分析
第 14 題2 分
【題目圖示未包含於文字擷取,請參考原卷】
下圖表示一個具有權重(weight)的無向圖(undirected graph)。假設我們針對該圖求取最小生成樹(minimum spanning tree),則該樹的權重總和為下列何者?
核心觀念
最小生成樹(minimum spanning tree)是在連通無向圖中,選取能連接所有頂點且不形成環路的邊,使總權重最小。若圖有 個頂點,生成樹必須恰有 條邊。
解題方法
圖中有 四個頂點,邊及權重為:
- :
- :
- :
- :
依權重由小到大選邊:先選 (權重 ),再選 (權重 )。此時 已連通,加入 (權重 )會形成環路,因此略過。接著選 (權重 ),使四個頂點都連通。
生成樹總權重為:
選項分析
第 15 題2 分
若一個二元搜尋樹(binary search tree)中各節點(node)包含的數字範圍為 到 ,在找尋數字 的過程中,下列何者不可能是所造訪之節點形成的數字序列?
核心觀念
二元搜尋樹(binary search tree, BST)符合下列規則:
- 若目標值小於目前節點,就往左子樹搜尋;若大於目前節點,就往右子樹搜尋。
- 搜尋路徑上的每個節點都會限制後續節點的取值範圍。往左表示後續值必須更小;往右表示後續值必須更大。
因此,判斷一串數字能否成為搜尋 時的造訪序列,重點是檢查每一步是否符合先前節點累積出的範圍限制。
解題方法
從根節點開始搜尋目標 ,逐一更新後續節點必須落在的範圍:
- 遇到小於 的節點,搜尋往右,後續節點必須大於該節點。
- 遇到大於 的節點,搜尋往左,後續節點必須小於該節點。
- 同時遵守先前已經累積的所有上下界。
若某個後續節點違反其中一個界限,該序列便不可能出現在同一條 BST 搜尋路徑上。
選項分析
(A) :可以成立。
都小於 ,搜尋方向持續往右,形成下界 。接著造訪 ,轉往左,形成上界 ;其後 位於 。再由 往右,形成新的下界 ;
第 16 題2 分
以 C++ 宣告一個名為 的類別(class)如下:
class unknown {
private:
int front, rear;
int components[50];
public:
unknown() { front = -1; rear = -1; };
int get() {
front = front + 1;
return components[front];
}
void put(int d) {
rear = rear + 1;
components[rear] = d;
}
};
若接下來我們宣告 為對應到該類別(class)的一個物件,再依序執行以下四個指令:、、、,則所回傳的值為下列何者?
核心觀念
本題考查類別物件的成員變數初始化,以及 put、get 函式如何操作索引。front 與 rear 是索引值;put(d) 先增加 rear,再把資料存入 components[rear]。get 則先增加 front,再回傳 components[front]。
解題方法
物件 uu 建立時,建構子將 front、rear 都設為 。依序執行各指令:
| 指令 | front | rear | 操作結果 |
|---|---|---|---|
| 初始狀態 | — | ||
uu.put(1) | components[0] = 1 | ||
uu.put(2) | components[1] = 2 | ||
uu.put(3) | components[2] = 3 |
第 17 題2 分
已排序(sorted)的表格資料如下:
以二元搜尋法(binary search)取得 ,需比較幾次?
核心觀念
二元搜尋法用於已排序資料。每次比較都取目前搜尋範圍的中間元素:
- 若目標值較小,繼續搜尋左半部。
- 若目標值較大,繼續搜尋右半部。
- 相等時即找到目標。
本題的「比較幾次」是指目標值與中間元素進行大小比較的次數。
解題方法
將 15 個數由左至右編號為第 1 至第 15 個:
依二元搜尋法逐次查找 :
- 範圍為第 1 至第 15 個,中間位置為第 8 個,數值是 。 ,往左半部搜尋。
- 範圍縮為第 1 至第 7 個,中間位置為第 4 個,數值是 。 ,往右半部搜尋。
第 18 題2 分
下列哪一種資料結構最適合用來置放遞迴函式(recursive function)之區域變數(local variables)?
核心觀念
遞迴函式每呼叫一次,就會建立一份獨立的執行資訊,包含區域變數、參數與返回位置等。由於函式呼叫具有「後呼叫者先返回」的順序,這些資訊適合依**後進先出(LIFO)**方式保存。
堆疊(stack)正是採用 LIFO 規則的資料結構。函式呼叫時,系統將該次呼叫的資訊放入呼叫堆疊;函式返回時,再取出最上層的資訊。這份資訊通常稱為堆疊框架(stack frame)。
解題方法
判斷關鍵是遞迴呼叫的巢狀順序。若函式依序呼叫自己多次,最內層的呼叫會最先完成,因此其區域變數必須先被取回;接著才處理外層呼叫的變數。這個次序與堆疊的後進先出特性完全相符,因此選擇 stack。
選項分析
第 19 題2 分
某一個二元樹的前序(pre-order)順序為 ,中序(in-order)順序為 ,則其後序(post-order)順序為何?
核心觀念
本題考查二元樹的三種走訪順序:
- 前序(pre-order):根、左子樹、右子樹。
- 中序(in-order):左子樹、根、右子樹。
- 後序(post-order):左子樹、右子樹、根。
若節點值不重複,前序的第一個節點就是整棵樹的根;根在中序中的位置則可將其餘節點分成左、右子樹。依此遞迴重建,再按後序輸出即可。
解題方法
前序為 ,第一個節點 是根。在中序 中, 左邊是左子樹 ,右邊是右子樹 。
左子樹的前序是 。其根為 ;中序 中, 沒有左子樹,右子樹為 ,所以左子樹的後序為 。
右子樹的前序是 ,中序是 。其根為 :
- 在中序中左側沒有節點,右子樹中序為 。
- 右子樹前序為 ,根為 。在中序 中, 不在其中;依根節點分割,需先注意右子樹中序應從原序列扣除 後為 。因此 為根,其右子樹中序為 。
- 該子樹前序為 ,根為 。在中序 中,左子樹為 、右子樹為 。
- 的前序為 ,根為 ,其右子節點為 ,後序為 ;右子樹 的後序為 。
因此,以題目給定的前序與中序重建時,後序為:
第 20 題2 分
【題目圖示未包含於文字擷取,請參考原卷】
若針對下圖中的樹由樹根(root)開始進行廣度優先搜尋(breadth-first search),並同時將走訪到的節點標籤輸出,則輸出的字串為下列何者?
核心觀念
廣度優先搜尋(breadth-first search, BFS)從根節點開始,先走訪同一層的所有節點,再往下一層走訪。通常搭配佇列(queue):節點依序加入佇列,取出一個節點時,將它尚未走訪的子節點依圖示順序加入佇列。
解題方法
圖中的樹為:根節點 的子節點依序是 ;節點 的子節點依序是 。
依層次走訪:
- 第 1 層:
- 第 2 層:
- 第 3 層:
因此輸出順序為 。
用佇列也可驗算:先放入 ;走訪 後,將 入列;接著依序走訪 ,再走訪 的子節點 ,結果同樣是 。
選項分析
第 21 題2 分
【題目圖示未包含於文字擷取,請參考原卷】
下圖中可產生多少種不同的生成樹(spanning tree)?
核心觀念
生成樹是包含圖中所有頂點、且連通無環的子圖。若圖中有橋接兩個子圖的橋接邊,該邊必須納入每一棵生成樹;兩側子圖的生成樹選法彼此獨立,總數可相乘。
解題方法
圖中 與 之間的邊是橋接邊,必須選入生成樹。因此分別計算左、右兩側子圖的生成樹數量。
左側有 四個頂點,邊為 。其拉普拉斯矩陣刪去 所在列與欄後,得到:
依生成樹矩陣定理,左側有 種生成樹。
第 22 題2 分
【題目圖示未包含於文字擷取,請參考原卷】
下方之有向圖(directed graph)中,從節點 至節點 的最短路徑(shortest path)其長度為何?
核心觀念
本題考有向加權圖的最短路徑。路徑長度是沿途邊權重的總和,而且只能依箭頭方向行進。可用 Dijkstra 演算法,逐步更新起點到各節點的最短距離。
解題方法
以節點 為起點,初始距離為 。依圖上的箭頭與權重更新距離:
- 從 可到 、,權重皆為 ,所以距離分別為 。
- 經 ,得到 的距離 ;經 ,得到 的距離 。
- 經 ,得到 的距離 。
- 再經 ,得到 的距離 。
因此最短路徑為
其長度為
第 23 題2 分
執行下列 C 程式,若輸入 ,產生的輸出為何?
int main() { int a[10] = {0}, b, n;
scanf("%d", &n);
while (n > 0)
{
b = n % 10;
a[b]++;
n /= 10;
}
for (b = 0; b < 10; b++)
if (a[b] > 1)
printf("%d ", b);
return 0;
}
核心觀念
本題考查陣列計數、整數除法與取餘數。n % 10 取得整數的個位數,n /= 10 則移除個位數;因此,迴圈會逐位檢查輸入數字,並用 a[b]++ 記錄數字 出現的次數。
解題方法
輸入 後,迴圈依序取得個位數,並更新對應的陣列元素:
取得的數字 b | 更新後的計數 |
|---|---|
a[7] = 1 | |
a[7] = 2 | |
a[5] = 1 | |
a[9] = 1 | |
a[3] = 1 | |
a[9] = 2 |
接著,for 迴圈按照 到 的順序檢查每個數字,只輸出出現次數大於 的數字。符合條件的是 和 ,因此輸出為:
第 24 題2 分
下列 C 程式執行時,若輸入為 ,則下列結果何者正確?
int i = 0, j = 0; char s[10];
scanf("%d%s%d", &i, s, &j);
核心觀念
本題考 scanf 的格式控制字串如何依序讀取輸入,以及 %d 遇到非數字字元時如何停止轉換。
%d:讀取帶符號十進位整數。讀到第一個不屬於該整數的字元時,整數轉換結束;該字元留在輸入串流中。%s:跳過前導空白後,讀取連續的非空白字元,並在字串末尾補上'\0'。scanf依格式指定的順序執行轉換;前一項轉換停止後,後續格式仍會從輸入串流目前的位置繼續讀取。
解題方法
將輸入視為:
12abc34 56def78
依照格式字串 "%d%s%d" 逐項解析:
%d讀取開頭的12,遇到a時停止,因此i = 12;a留在輸入串流中。%s從a開始,讀取連續的非空白字元abc34,遇到空白時停止。因此s儲存的是"abc34"。
第 25 題2 分
概念上,下列何者與其他三者相比,差異較大?
核心觀念
本題考的是計算機程式中的「函數、方法、程序」與「執行緒」所屬的概念層次。函數、方法、程序都是可被呼叫或執行的程式單位;執行緒則是作業系統排程與執行工作的基本單位,負責承載程式碼的執行。
解題方法
先判斷各詞描述的是「程式碼的組織或呼叫單位」,還是「程式執行時的工作單位」。前三者都與程式中的子程式概念相關,雖然定義與使用情境不完全相同;執行緒則屬於並行處理與作業系統的執行管理概念,因此與其他三者差異最大。
選項分析
- (A) 函數(function):可接受參數、執行一段程式碼,通常會回傳值,是常見的子程式形式。與程序同屬程式碼的組織及呼叫單位。
第 26 題2 分
關於 Java 程式語言之敘述,下列何者正確?
核心觀念
本題考查 Java 的物件導向結構、繼承方式,以及程式執行與多執行緒的基本特性。Java 的程式由類別與物件構成;類別用來定義資料與方法,物件則是類別的實例。Java 不支援類別的多重繼承,但支援透過介面實作多種型別。
解題方法
逐一核對各選項是否符合 Java 的語言設計:
- 先辨認 Java 對類別、物件與介面的規範。
- 再檢查「不必定義類別」、「只能單一執行緒」等絕對說法;這類敘述常把 Java 的特性過度簡化。
選項分析
- (A) 錯誤。 Java 類別不支援像 C++ 那樣同時繼承多個類別,以避免多重繼承可能造成的歧義。Java 類別可以實作多個介面,因此可具備多種介面所定義的行為契約,但這不等同於類別多重繼承。
第 27 題2 分
在 C 語言中,若變數 、 宣告如下:
int *a; int b[5];
下列何者不是合法的 C 語言敘述?
核心觀念
本題考查 C 語言中陣列與指標的差異,以及陣列名稱在運算式中的轉換規則。
宣告如下:
int *a;
int b[5];
a是指向int的指標變數,可以存放某個int物件的位址,也可以改指向其他位置。b是含有 5 個int元素的陣列。陣列名稱在多數運算式中會轉換為指向首元素的指標,也就是&b[0];但b本身仍是陣列,不是可重新指定的指標變數。
解題方法
逐一檢查運算式是否合法,特別注意賦值運算子的左運算元必須是可修改的左值。指標變數 a 可以被指定新值;陣列 b 則不能被指定新值。
選項分析
第 28 題2 分
若有一位址,其以 16 進位表示為:,問該位址應為下列何種位址?
核心觀念
本題考查網路位址的長度與表示方式。IPv4 位址由 32 位元組成,通常以四個十進位數字表示,每組範圍為 至 ,組與組之間以句點分隔。每個十六進位數字代表 位元,因此 8 個十六進位數字正好是 位元。
解題方法
題目給的位址是 ,共有 8 個十六進位數字:
也可依每兩個十六進位數字分組,換算成 IPv4 常見的點分十進位格式:
其中 、、、。四組數值皆介於 至 ,符合 IPv4 的表示方式,因此依官方答案判定為 IPv4 位址。
選項分析
第 29 題2 分
請問下列語言或符號,何者經常被用來描述程式語言的文法?
核心觀念
本題考查「程式語言文法的表示法」。程式語言的文法用來規定哪些符號排列方式構成合法的程式敘述。BNF(Backus–Naur Form,巴科斯-諾爾範式)是常見的形式化文法表示法,能以產生式描述語法結構,例如:
其中,::= 表示「定義為」,| 表示「或」。
解題方法
辨認各選項的用途,找出專門用來描述語法規則的表示法。BNF 以產生式描述語言的句法結構,符合題意,因此選 B。
選項分析
第 30 題2 分
給定下列以 C 語言實作的函數 :
int A(int m, int n) { if (m == 0) return n + 1; else if (n == 0) return A(m - 1, 1); else return A(m - 1, A(m, n - 1)); }
請問呼叫 的回傳值應為多少?
核心觀念
此函數符合阿克曼函數(Ackermann function)的遞迴形式。解題時要依照程式中的條件順序展開:先處理 ,再處理 ,其餘情況則先計算內層呼叫 ,再將結果代入外層呼叫。
解題方法
先求 :
內層值為:
當 時,依函數定義:
接著計算:
所以:
因此 ,進而:
計算 。由 ,且 :
第 31 題2 分
下列 C 語言程式執行後呈現的結果應為何者?
#include <stdio.h>
void swap(int a, int b) { int temp; temp = a; a = b; b = temp; }
int main() { int a = 1, b = 2, c = 3;
swap(a, b);
swap(b, c);
swap(c, a);
printf("a = %d, b = %d, c = %d\n", a, b, c);
}
核心觀念
本題考 C 語言函式的傳值呼叫。呼叫 swap(a, b) 時,函式參數 a、b 是主程式變數值的副本;函式內交換的是副本,不會改變 main 中的變數。
解題方法
主程式中的初始值為 a = 1、b = 2、c = 3。每次呼叫 swap 都只交換函式內的區域變數,函式結束後,主程式的變數維持原值:
| 執行敘述 | main 中的 a、b、c |
|---|---|
| 初始狀態 | 1, 2, 3 |
swap(a, b); 後 | 1, 2, 3 |
swap(b, c); 後 | 1, 2, 3 |
swap(c, a); 後 | 1, 2, 3 |
因此 printf 輸出:
a = 1, b = 2, c = 3
選項分析
第 32 題2 分
執行下列 C++ 程式碼後,螢幕印出的數字為何?
int main() { int D[3][4] = {2,4,6,8,10,12,14,16,18,20,22,24};
int *p1 = &D[0][3];
int *p2;
p2 = p1 + 6;
cout << *p2 << endl;
return 0;
}
核心觀念
本題考查二維陣列在記憶體中的列優先排列,以及指標加法。D 有 3 列、每列 4 個整數,元素依序連續存放:
對 int* 指標而言,p + n 表示往後移動 個 int 元素,不是移動 個位元組。
解題方法
p1 = &D[0][3],因此 p1 指向第一列最後一個元素,也就是 8。
依陣列的列優先排列,從 D[0][3] 起向後數 6 個整數:
| 位移 | 元素 | 數值 |
|---|---|---|
| 0 | D[0][3] | 8 |
| 1 | D[1][0] | 10 |
| 2 | D[1][1] | 12 |
第 33 題2 分
區域網路若採用匯流排架構,會具有下列何項特性?
核心觀念
本題考查匯流排(Bus)型區域網路的媒介存取特性。匯流排上的各個節點共用同一條傳輸媒介,傳送資料前須競爭媒介使用權。採用 CSMA/CD(載波偵聽多重存取/碰撞偵測)時,節點先偵聽媒介是否忙碌,再開始傳送;若同時傳送而發生碰撞,便停止傳送並等待一段隨機時間後重試。
CSMA/CD 屬於競爭式媒介存取,無法保證特定資料一定能在某個確定時間內成功送達,因此不具確定的傳輸完成時間。
解題方法
先掌握匯流排的兩項特徵:多個節點共用媒介,因此有碰撞的可能;訊號沿共用媒介傳播,並非只能單方向傳輸。再依序檢查選項是否符合這些特徵,以及是否正確描述 CSMA/CD 的傳輸時序。
選項分析
- (A) 不會有資料碰撞問題。錯誤。 匯流排上的節點共用傳輸媒介,兩個以上節點若同時傳送,就可能發生資料碰撞。CSMA/CD 的作用之一,正是偵測碰撞並安排節點稍後重傳。
第 34 題2 分
當 TCP 收到多個下列何種回應訊息(acknowledgement),將會啟動快速重送(fast retransmission)?
核心觀念
本題考查 TCP 的快速重送(fast retransmission)。接收端若發現某個 TCP 區段遺失,後續區段仍可能先到達;接收端會反覆回覆相同的確認號碼,表示目前仍在等待遺失區段。這種重複出現的確認稱為重複式回應(duplicate ACK)。
傳送端收到多個重複 ACK,便可推知某區段可能遺失,無須等到重送計時器逾時,就重新傳送該區段。常見 TCP 快速重送機制以收到 3 個重複 ACK 作為觸發條件。
解題方法
辨認題幹中的關鍵詞「多個」與「快速重送」。快速重送是由接收端反覆送出相同確認號碼所觸發,因此要找的是「重複式回應」,而非描述 ACK 延遲、確認範圍或資料搭載方式的選項。
選項分析
- (A) 延誤式回應(delayed ACK)錯誤。 接收端刻意延後一小段時間再送 ACK,以減少確認封包數量;它描述的是 ACK 的傳送時機,不是觸發快速重送的訊號。
第 35 題2 分
有關多人多工作業系統之敘述,下列何者錯誤?
核心觀念
本題考查多人多工作業系統的基本特性。「多人」表示系統能服務多位使用者;「多工」表示系統能在多個工作之間分配處理器時間,使它們得以交錯執行。這類系統通常需要排程能力與中斷處理能力;但不必然需要多個 CPU。
解題方法
判斷各選項是否屬於多人多工作業系統的必要條件。關鍵在於區分「多工」與「多處理器」:多工可以由單一 CPU 透過分時切換工作來實現;多個 CPU 則是提升平行處理能力的硬體配置,並非多人多工的必要條件。
選項分析
- (A) 正確。 分時技術將 CPU 時間切分為多個時間片,依序分配給不同工作或使用者,使多個工作交錯進行,能支援多人多工作業。
- **(B) 正確。
第 36 題2 分
下列何者不是螢幕輸出裝置的連接埠?
核心觀念
本題考「螢幕輸出裝置的連接埠」辨識。DVI、HDMI、VGA 都是常見的影像輸出介面,可將電腦的影像訊號傳送至螢幕;USB 則是通用的周邊裝置介面,主要用於資料傳輸、供電及連接周邊設備,並非一般所稱的螢幕影像輸出連接埠。
解題方法
辨認各介面的主要用途:若介面用來傳送影像至螢幕,便屬於螢幕輸出連接埠;若是通用周邊介面,則不屬於此類。依此分類,DVI、HDMI、VGA 均為影像介面,USB 為通用周邊介面,因此選 USB。
選項分析
第 37 題2 分
關於 IEEE 所定義的 IEEE 802.11 規範,下列敘述何者正確?
核心觀念
IEEE 802.11 是無線區域網路(WLAN,俗稱 Wi-Fi)的系列標準,定義無線區域網路的實體層與資料鏈結層規範。資料鏈結層又可分為媒體存取控制(MAC)子層與邏輯鏈結控制(LLC)子層;802.11 主要規範 MAC 與實體層。
WiMAX 的主要標準是 IEEE 802.16,行動通訊世代(如 3G、4G)則各有其行動通訊標準體系,均不屬於 IEEE 802.11 的規範範圍。
解題方法
先辨認 IEEE 802.11 的用途:它是無線區域網路標準,再檢查選項是否把它的分層範圍或應用領域說錯。題目中只有選項 (A) 符合其標準範圍;其餘選項把其他無線技術或行動通訊世代誤列為 802.11。
第 38 題2 分
假設兩個不同主機上的程序(A 和 B)利用 TCP 傳輸資料,則 A 如何確定其送給 B 的資料都已經送達?
核心觀念
本題考查 TCP 的可靠傳輸與累積確認。TCP 以序號(Sequence Number)標示資料位元組的位置,並以確認號碼(Acknowledgment Number)表示接收端下一個預期收到的位元組序號。
A 傳送資料給 B 後,B 若成功收到資料,會在回傳給 A 的 TCP 封包中,以確認號碼表示已收到的範圍。A 可藉由檢查 B 回傳的確認號碼,判斷自己的資料是否已獲確認。
解題方法
先看封包方向:要確認「A 送給 B 的資料」,應檢查 B 回傳給 A 的封包。再看欄位功能:回傳封包中的 acknowledgement number 用來確認收到的資料,因此選 (D)。
例如,若 A 傳送的資料位元組序號為 1000 至 1099,B 回傳確認號碼 1100,表示 B 已收到序號 1099 為止的連續資料,下一個預期收到的位元組是 1100。
第 39 題2 分
下列哪種網路拓樸(network topology)具有較高可靠度(reliability)?
核心觀念
本題考查網路拓樸的可靠度,也就是部分連線或設備故障時,網路仍能維持連通、傳送資料的能力。拓樸中的路徑越多、替代路徑越充足,通常越能容忍單一連線故障。
解題方法
比較各拓樸在連線故障時是否有替代路徑:
- 匯流排拓樸共用一條主幹線,主幹線故障會影響整個網路。
- 星狀拓樸各節點透過中央設備連接,中央設備故障會使整個網路中斷。
- 環狀拓樸節點串接成環,單一連線故障可能切斷環路。
- 網狀拓樸節點間有多條連線,通常存在多條替代路徑;部分連線故障時,資料仍可能繞道傳送,因此可靠度較高。
選項分析
第 40 題2 分
HTML 的功用為何?
核心觀念
HTML 是「超文字標記語言」(HyperText Markup Language),用標籤描述網頁內容的結構,例如標題、段落、圖片與連結。瀏覽器讀取 HTML 後,會依其標記呈現網頁。
HTML 負責標記與組織內容,不是用來繪製複雜圖像、翻譯程式語言或求解方程式的工具。
解題方法
辨認 HTML 的全名與用途即可:它是建構網頁內容的標記語言,因此選出「編寫網頁」的選項。題目考的是 HTML 的基本功能,不涉及計算或法規。