110 鐵路特考員級 電子工程 計算機概要 考古題詳解
第 1 題2 分
32 位元電腦中,若記憶體分頁大小為 2048 位元組,該系統最多可支援幾個記憶體分頁?
核心觀念
記憶體分頁數由「可定址的記憶體總容量」除以「每頁大小」求得。32 位元位址可表示 個位址;若以位元組為定址單位,則可定址 個位元組。每個分頁大小為 位元組。
解題方法
因此系統最多可支援 個記憶體分頁。
選項分析
第 2 題2 分
某循序程式的執行時間中有 90% 是可被平行化(parallelizable)的部分。若欲以多核心(multi-core)處理器取得 2 倍的加速(speedup),至少需要幾個核心?
核心觀念
本題考查阿姆達爾定律(Amdahl’s Law):程式中可平行化的部分能隨核心數增加而加速,但不可平行化的部分仍須循序執行,限制了整體加速比。
若可平行化比例為 、核心數為 ,理想加速比為:
本題 ,不可平行化比例為 。
解題方法
要求至少達到 倍加速,代入公式並令加速比不小於 :
分母為正,因此:
第 3 題2 分
下列計算機語言,何者可用於合成(synthesis)硬體電路?
① C++ ② Python ③ Verilog ④ Java ⑤ VHDL
核心觀念
本題考查硬體描述語言與一般程式語言的差異。硬體合成(synthesis)是將描述電路功能的程式,轉換成可實作的邏輯電路或硬體配置。
Verilog 與 VHDL 是常見的硬體描述語言(HDL),可用於描述數位電路,並透過合成工具轉換為硬體電路。
解題方法
辨認各語言是否以描述硬體結構或電路行為為主要用途:
- Verilog、VHDL:硬體描述語言,可用於電路合成。
- C++、Python、Java:一般用途程式語言,主要描述軟體執行流程,不是本題所問的典型硬體描述語言。
因此,符合題意的是③ Verilog 與⑤ VHDL。
選項分析
第 4 題2 分
將二進制數字 轉成十進制數字,答案為:
核心觀念
二進位採 為底,每個位元由右至左依序代表 等權值。將二進位轉為十進位時,把每個位元乘上其位權後加總。
解題方法
將 由右至左標示位權:
只有位元為 的位置需要加總,因此:
所以十進位數字是 。
選項分析
第 5 題2 分
假設陣列 有 個整數的元素,讀取或寫入陣列 的第 個元素的值,,電腦所需要的時間:
核心觀念
本題考查陣列的隨機存取與時間複雜度。一般陣列的元素儲存在連續記憶體位置,因此可依起始位址與索引直接計算指定元素的位址,不必逐一讀取前面的元素。
若每個元素占 個位元組,陣列起始位址為 ,則第 個元素的位址可表示為:
解題方法
讀取或寫入 時,電腦依索引計算出該元素的記憶體位址,再直接存取該位置。位址計算與存取所需的步驟數不會隨陣列元素個數 增加,因此時間複雜度為 ,也就是常數時間。
選項分析
第 6 題2 分
若全彩圖像中每一個像素(Pixel)需以三個位元組(Bytes)來表示,每一個像素的顏色有多少種變化?
核心觀念
本題考彩色影像的像素表示方式與位元組、位元的換算。每個位元組有 個位元;若每個像素使用三個位元組,便有 個位元可表示顏色。
解題方法
每個位元可表示 或 ,因此 個位元共有
種組合。也可理解為三個位元組各有 種取值,三者組合數相乘,故選項 D 正確。
選項分析
- (A) 種:錯誤。 是像素所使用的位元數,不是顏色種類數。位元數為 時,組合數應為 。
第 7 題2 分
執行下列 C 語言的程式,輸出結果為何?
void foo(int n1, int n2) { int temp;
temp = n1;
n1 = n2;
n2 = temp;
}
int main(void) { int x = 1, y = 2, z = 3;
foo(x, y);
foo(y, z);
printf("%d, %d, %d", x, y, z);
}
核心觀念
本題考 C 語言函式的傳值呼叫。呼叫 foo(x, y) 時,函式參數 n1、n2 會各自取得 x、y 當時的值;函式內交換的是這兩個區域變數,不會直接改動 main 裡的 x、y。因此,foo 執行完畢後,main 中的變數仍維持原值。
解題方法
初始值為:
第一次呼叫 foo(x, y) 時,n1=1、n2=2。函式內交換參數後,只有區域變數 n1、n2 改變;函式返回後,x、y 仍是 、。
第二次呼叫 foo(y, z) 時,n1=2、n2=3。同樣地,交換只發生在函式的區域參數中,返回後 y、z 仍是 、。
因此,printf 輸出:
1, 2, 3
選項分析
第 8 題2 分
有關以遞迴(Recursion)或迴圈(Iteration)設計程式,下列何者錯誤?
核心觀念
本題考遞迴與迴圈的互相轉換,以及兩者執行時使用的控制機制。
- 遞迴:函式在執行過程中呼叫自己。為了記錄每次呼叫的返回位置、區域變數與參數,執行時會使用呼叫堆疊(Call Stack)。
- 迴圈:透過條件判斷與重複執行程式區塊控制流程,不必為每次重複建立函式呼叫紀錄。
解題方法
逐一檢查各選項。遞迴與迴圈在一般可計算的程式設計情境中通常可以互相改寫;但要特別辨認執行時資料結構:遞迴依靠堆疊保存呼叫狀態,佇列則是先進先出,並非遞迴呼叫的主要控制結構。迴圈本身也不必使用堆疊維護函式呼叫順序。
選項分析
(A) 所有的遞迴函式都可以轉換為迴圈函式:正確。 遞迴可改寫成迴圈;若遞迴具有尚待返回時處理的工作,改寫時可用明確的堆疊保存呼叫狀態。尾端遞迴則常能直接轉換為迴圈。
第 9 題2 分
下列哪一個不是堆疊(Stack)的特性?
核心觀念
堆疊(Stack)是一種線性資料結構,遵循後進先出(Last In, First Out,LIFO):最後放入的資料會最先取出。堆疊的插入與刪除都在同一端進行,這一端稱為頂端(Top)。
在程序的記憶體配置中,區域變數、函式呼叫資訊等常由執行期堆疊(runtime stack)管理;動態配置的記憶體則通常屬於堆積(heap),兩者是不同的概念。
解題方法
逐項比對堆疊的基本定義,並辨別選項描述的是「堆疊」還是「堆積」:
- 若描述後進先出,或在頂端插入、刪除,符合堆疊特性。
- 若描述程序的動態記憶體配置,則不符合一般計算機概要對堆疊的定義。
選項分析
第 10 題2 分
如果圖中不存在迴路(Cycles),那麼在具有 7 個頂點的簡單有向圖(Simple directed graph)中,最多有多少個邊?
核心觀念
有向圖的邊具有方向。若圖中不存在迴路(cycle),頂點可排成一個拓樸順序,使每條邊都由順序較前的頂點指向較後的頂點。簡單有向圖不允許重複邊,也不包含頂點指向自己的自環。
解題方法
依拓樸順序排列 7 個頂點。若每一對頂點之間都放一條由前者指向後者的邊,就不會形成迴路,且邊數最多。
每一對頂點可形成一條邊,因此最多邊數為:
例如,頂點依序為 ,可加入所有滿足 的邊 。任何沿著邊前進時,頂點順序都只會向後,因此不可能回到原頂點形成迴路。
因此,依題目所述「簡單有向圖」且「不存在迴路」,最多應有 21 條邊。題目選項中的 12、7、6、14 均不是此數值,與官方答案 C(6)不符。
第 11 題2 分
IPv6 協定能提供更多 IP 位址空間,解決 IPv4 數量不足問題。有關 IPv6 的長度為何?
核心觀念
本題考查 IPv6 位址長度。IPv6 位址長度為 128 位元(bits);IPv4 位址則為 32 位元。位址長度增加,能提供更大的位址空間。
解題方法
直接辨認協定版本與位址長度:IPv4 為 32 位元,IPv6 為 128 位元。因此,本題選擇標示 128 bits 的選項。
選項分析
第 12 題2 分
當同一個瀏覽器同時開啟兩個 TCP 連線到同一台 Web 伺服器時,伺服器收到的連線訊息中,哪一個欄位最有可能不同?
核心觀念
TCP 以四個欄位識別一條連線:來源 IP 位址、來源埠、目的 IP 位址與目的埠。兩條連線若同時連到同一台伺服器,伺服器必須能分辨它們;同一部用戶端電腦同時連線時,通常以不同的來源埠建立不同連線。
解題方法
以用戶端和伺服器兩端的資訊判斷:
- 兩條連線來自同一部瀏覽器所在的電腦,因此來源 IP 位址相同。
- 兩條連線連到同一台 Web 伺服器,因此目的 IP 位址相同。
- Web 伺服器提供相同服務,因此目的埠通常相同,例如 HTTP 的 80 埠或 HTTPS 的 443 埠。
- 用戶端為區分同時建立的連線,會使用不同的來源埠。
因此,最有可能不同的是來源埠。
選項分析
第 13 題2 分
某個數位電路設計使用到一個解多工器(demultiplexer),該解多工器的選擇控制線共有 6 條,下列敘述何者正確?
核心觀念
解多工器(demultiplexer,簡稱 DEMUX)有 1 個資料輸入端,並依選擇控制線的組合,將輸入訊號送到其中一個輸出端。若有 條選擇控制線,最多可選擇的輸出端數為:
解題方法
本題有 6 條選擇控制線,因此最多可選擇的輸出端數為:
所以此解多工器有 1 個輸入通道,至多有 64 個輸出通道。
選項分析
第 14 題2 分
九進位數值 以三進位表示,下列何者正確?
核心觀念
不同進位制的數值可以先轉成十進位,再轉成目標進位。本題也可利用 ,將九進位的每一位直接換成兩位三進位數字。
解題方法
九進位數 的位值展開為:
將 轉成三進位,依序除以 並記下餘數:
由下往上讀取餘數,得到 ,因此選項 D 正確。
也可直接利用 :每個九進位位數都可換成兩位三進位數。,,所以 。
第 15 題2 分
愈來愈多的消費型相機採用 CMOS(Complementary metal-oxide semiconductor)感光元件來擷取畫面。相較於 CCD(Charge-coupled device)感光元件,對 CMOS 的敘述,下列何者錯誤?
核心觀念
本題考 CMOS 與 CCD 兩種影像感光元件的特性差異。CMOS 感光元件通常具備耗電較低、製造成本較低、容易整合讀出電路等優點,因此常見於智慧型手機及消費型相機。像素上限則取決於感光元件製程、尺寸與設計,不能概括說 CMOS 的最高像素較低。
解題方法
逐項判斷敘述是否符合 CMOS 相較於 CCD 的常見特性。前三項描述 CMOS 常見的應用與優勢;第四項把「最高像素較低」當成 CMOS 的固定限制,並不成立,因此選 D。
選項分析
- (A) 較常見於智慧型手機上:正確。 CMOS 感光元件易於與讀出電路整合,且耗電較低、成本較具優勢,適合手機等講求體積與耗電的裝置。
第 16 題2 分
作業系統的程序排程器(process scheduler)會管理電腦中每一個程序(process)的狀態。若某一程序 原本在使用 CPU,但遇到需要從鍵盤讀取資料的狀況,則程序 會被改變為何種狀態?
核心觀念
程序使用 CPU 時處於 Running(執行)狀態。若程序因等待外部事件而無法繼續執行,例如等待鍵盤輸入,作業系統會將它移至 Waiting(等待)狀態,也常稱 Blocked(阻塞)狀態。事件完成後,程序才會回到 Ready(就緒)狀態,等待再次取得 CPU。
解題方法
題目指出 正在使用 CPU,之後需要從鍵盤讀取資料。鍵盤輸入是外部 I/O 事件;等待輸入期間, 無法繼續使用 CPU,因此由 Running 轉為 Waiting。
狀態轉換可表示為:
選項分析
第 17 題2 分
根據以下的 C++ 宣告,下列何者不是「ListB」類別的私有成員(private member)?
class ListA { int first;
public: void add(int); };
class ListB : private ListA { int second;
public: void put(int); };
核心觀念
本題考 C++ 的存取權限與私有繼承。
ListA未標示存取權限的成員first,在class中預設為private。ListB : private ListA表示以private方式繼承ListA:基底類別的public與protected成員,在ListB中會以private權限呈現。ListB自己宣告的成員,則依其所在區段的存取標籤判斷。
解題方法
逐一判斷各成員屬於「從 ListA 繼承而來」或「在 ListB 內自行宣告」,再套用各自的存取規則:
first原本是ListA的private成員,不會因繼承而變成ListB可存取的成員;但它仍是基底類別子物件中的私有成員。add原本是ListA的public成員,經private繼承後,在ListB中成為private。second是ListB自行宣告的成員,位於public:之前,因此是private。put位於ListB的public:之後,因此是public。
選項分析
第 18 題2 分
執行下列 Python 語言程式碼片段後,產生的輸出為何?
a = 40 y = 10
if (a < 50): if (a < 30): y = y + 10 else: y = y - 10
print(y)
核心觀念
本題考查 Python 的 if、else 配對與巢狀條件判斷。Python 以縮排表示程式區塊;else 會配對到與它縮排層級相同的 if。
解題方法
先依序判斷條件,再執行所屬區塊:
- 初始值為
a = 40、y = 10。 - 判斷外層條件
a < 50: 成立,因此進入外層if區塊。 - 判斷內層條件
a < 30: 不成立,因此不執行y = y + 10。 else與外層if (a < 50)同層縮排,屬於外層條件的另一分支。由於外層條件成立,不執行y = y - 10。
第 19 題2 分
下列何者為 個節點的二元搜尋樹(Binary search tree)最糟搜尋時間複雜度?
核心觀念
二元搜尋樹(Binary Search Tree, BST)符合以下順序性質:每個節點的左子樹鍵值小於該節點,右子樹鍵值大於該節點。搜尋時,從根節點開始比較目標值,每次依比較結果往左或往右走,因此搜尋時間與樹高 成正比,為 。
解題方法
若樹保持平衡,樹高約為 ,搜尋時間為 。但題目問的是「最糟」情況;當資料依序插入等情況使樹退化成單鏈時,樹高可達 。此時搜尋目標可能需要逐一比較最多 個節點,因此:
選項分析
第 20 題2 分
圖示為一個二元表示樹(expression tree),下列何者為其前序(Preorder)輸出?
樹根為 ;左子樹根為 ,其左子樹為 , 的左右子節點分別為 、,其右子節點為 ;右子樹根為 ,其左右子節點分別為 、。
核心觀念
前序走訪(Preorder)依序為「根節點、左子樹、右子樹」,也就是先輸出運算子,再依序走訪左、右運算元所在的子樹。
解題方法
從樹根開始走訪:
- 根節點是 ,先輸出 。
- 走訪左子樹:先輸出 ;再走訪它的左子樹,輸出 、、;最後輸出右子節點 。左子樹的前序結果為
*-DEA。 - 走訪右子樹:先輸出 ,再輸出左、右子節點 、。右子樹的前序結果為
/BC。
合併後為 +*-DEA/BC。
選項分析
第 21 題2 分
將訊息切割成許多較小封包,封包大小皆固定,且每個封包都知道目的地位址,各自傳送到目的地之後,由目的地電腦將封包重新組合之交換,為何種交換?
核心觀念
本題考查資料交換方式的特徵。分封交換(Packet Switching)會將訊息切割成較小的封包,各封包帶有目的地位址,能各自經由網路傳送,抵達目的地後再重新組合。題目描述的正是這種方式。
解題方法
抓住題幹中的關鍵線索:「切割成許多較小封包」、「每個封包都知道目的地位址」以及「目的地電腦將封包重新組合」。這些都是分封交換的特徵,因此選 (B)。
選項分析
第 22 題2 分
若 5G 行動通訊的網速為 1 Gbps,假設傳輸時控制訊號及其他等非資料需要用去 50% 網速,傳送 50 MB 檔案需時為多少?
核心觀念
本題考查網路傳輸速率與檔案大小的單位換算,以及有效資料速率的計算。網速以 bps(bit per second,每秒位元數)表示,檔案大小的 B 則是 Byte(位元組);。
解題方法
控制訊號及其他非資料占去 網速,因此可用於傳送檔案的有效速率為:
換算成每秒位元數:
換算成位元數(採 ):
傳輸時間為資料量除以有效速率:
第 23 題2 分
常見的 TCP 阻斷式攻擊(Denial-of-Service Attack),主要是利用 TCP 標頭代碼欄位中的下列何種旗標(Flag)?
核心觀念
本題考查 TCP 連線建立方式,以及常見的 SYN Flood 阻斷式攻擊。TCP 以三向交握建立連線:用戶端送出設定 SYN 旗標的封包,伺服器回覆 SYN-ACK,再由用戶端送出 ACK。伺服器收到 SYN 後,會暫存尚未完成交握的連線請求。
解題方法
判斷攻擊利用哪個旗標,可從 TCP 三向交握中伺服器需要等待後續確認的步驟切入。SYN Flood 攻擊者大量送出 SYN 封包,卻不完成後續交握,使伺服器持續保留半開連線狀態;當相關佇列或資源耗盡,合法連線便可能無法建立,形成阻斷服務。
因此,這類攻擊主要利用 TCP 標頭中的 SYN 旗標。
選項分析
第 24 題2 分
一圖(Graph) 有 個節點(Vertices)以及 個邊(Edges),若用相鄰矩陣(Adjacency matrix) 來表示 ,則 中的元素(Elements)應該有幾個?
核心觀念
相鄰矩陣(Adjacency matrix)用來記錄圖中每一對頂點是否相鄰。若圖有 個頂點,矩陣的列與欄都各對應一個頂點,因此矩陣大小為 。
解題方法
每個頂點都要能與其他每個頂點(包含自身)配對,作為矩陣的一個位置。故元素總數為:
邊數 會影響矩陣中有多少位置記錄為相鄰,但不影響矩陣的尺寸。
選項分析
第 25 題2 分
相較於複雜指令集電腦 CISC(Complex Instruction Set Computer)CPU 而言,精簡指令集電腦 RISC(Reduced Instruction Set Computer)CPU 的特點,不包括下列哪一項?
核心觀念
本題考查 RISC 與 CISC 的典型設計取向。RISC 著重精簡、規則的指令集與指令格式,讓指令解碼和管線化較容易;CISC 則常以較多、較複雜的指令支援較多樣的操作。兩者也會影響程式編譯後的機器碼大小。
解題方法
逐項比對選項是否符合 RISC 的典型特點。A、B、C 都是 RISC 常見的設計特性;D 說 RISC 編譯出的機器碼較省記憶體,與典型比較方向相反。RISC 指令通常較簡單,完成同一工作時可能需要較多條指令,因此程式碼不一定較短,甚至可能比 CISC 機器碼占用更多空間。
選項分析
第 26 題2 分
SYN Flood 是一種針對 TCP 的阻斷服務攻擊,主要利用下列何者以達到影響正常連線的目的?
核心觀念
SYN Flood(SYN 洪水攻擊)利用 TCP 三向交握尚未完成時,伺服器會保留半開連線狀態這項特性。伺服器可供等待完成交握的半開連線數量有限;攻擊者大量送出 SYN 封包,卻不完成後續交握,使這些連線資源被占用,進而影響正常使用者建立連線。
解題方法
判斷本題的關鍵,是找出 SYN Flood 攻擊消耗的伺服器資源。
TCP 建立連線時,客戶端先送出 SYN,伺服器回覆 SYN-ACK,並等待客戶端再送 ACK。等待最後一個 ACK 的期間,伺服器會保留半開連線的紀錄。當大量連線停留在這個狀態,有限的半開連線佇列可能被占滿,正常連線便難以建立。
選項分析
第 27 題2 分
關於將 筆資料進行排序(Sorting),下列敘述何者正確?
核心觀念
本題考各種排序法的時間複雜度,尤其要分清最佳、平均與最壞情況。 表示演算法執行時間的漸近上界;排序法的複雜度須依演算法特性及輸入資料排列情況判斷。
解題方法
逐一比對選項所述的排序法與其時間複雜度:
- 快速排序:平均情況為 ,最壞情況為 。
- 插入排序:最佳情況為 ,平均及最壞情況為 。
- 合併排序:最佳、平均及最壞情況皆為 。
- 選擇排序:最佳、平均及最壞情況皆為 。
因此,符合敘述的是合併排序。
選項分析
(A) 錯誤。 快速排序在每次分割都能大致平均時,時間複雜度為 ;若每次分割都極度不平衡,例如每次只分出一筆資料,遞迴深度會達 ,總比較次數為 。因此其最壞情況不是 。
第 28 題2 分
若要將兩個各自由小到大排序好的數列(長度分別為 5 和 6)進行合併排序(Merge sort),使得合併後的數列也能由小到大排列,則合併過程至少需要進行幾次數字比較?
核心觀念
合併排序(Merge sort)的合併步驟,是比較兩個已排序數列目前尚未合併的最小值,將較小者放入結果數列,再繼續比較。當其中一個數列已全部取完,另一個數列剩餘元素便可直接接到結果末端,不需要再比較。
解題方法
設兩個數列長度分別為 、。合併時,最少可以在其中一個數列的最後一個元素被取出前,就讓另一個數列先全部取完;此時尚未取出的最後一個元素可直接接上。
因此,最少比較次數為:
例如兩個數列分別為 與 。前五次比較中,每次都取出第一個數列的元素,接著第一個數列已空,將第二個數列剩餘元素直接接上,合計只比較 次。
第 29 題2 分
考慮下列三種排班演算法:先到先服務排班法(FCFS)、循環排班法(RR)、最短剩餘時間優先排班法(SRTF),其中有多少種有機會導致飢餓(starvation)問題?
核心觀念
飢餓(starvation)是指某個行程長期無法取得 CPU,等待時間可能無限延長。判斷排班法是否可能造成飢餓,重點在於:行程是否可能一直被其他行程排在前面或搶先執行。
解題方法
逐一檢查三種排班法:
- FCFS(先到先服務):依到達順序執行,通常採非搶先方式。已進入就緒佇列的行程,前面只有有限個先到行程時,前面的行程完成後便會輪到它。因此,FCFS 不會因排班規則本身造成飢餓。
- RR(循環排班):每個行程輪流取得固定時間片。只要時間片結束後會將行程排回就緒佇列尾端,且排程持續運作,等待中的行程便會依序取得 CPU,因此不會因排班規則本身造成飢餓。
- SRTF(最短剩餘時間優先):優先執行剩餘 CPU 執行時間最短的行程,且屬搶先式排班。
第 30 題2 分
依一致性限制,若外來鍵的值不是它所參照的關聯主鍵中的值,則這個外來鍵的值之敘述,下列何者正確?
核心觀念
本題考查關聯式資料庫的參照完整性(一致性限制)。外來鍵用來參照另一個關聯中的主鍵;依參照完整性規則,外來鍵若有非空值,該值必須出現在被參照的主鍵值集合中。若外來鍵沒有對應的主鍵值,則必須為虛值(NULL)。
解題方法
題幹已限定外來鍵的值「不是它所參照的關聯主鍵中的值」。依參照完整性判斷:
- 外來鍵若為非
NULL,就必須能在被參照的主鍵中找到相同值。 - 題目指出找不到相同值,因此該外來鍵必須是
NULL。
這裡的 NULL 表示沒有提供可用的參照值,不是一般的資料值。
選項分析
第 31 題2 分
如下所示之 C 程式,其輸出為何?
#include <stdio.h>
int cc = 0, xx = 0, yy = 0;
int f1(int nn) { static int cc = 0; int xx = nn; cc++; }
int f2(int nn) { static int cc = 0; int yy = nn; xx = nn; cc++; }
int main(void) { f1(1); f2(2);
printf("cc = %d, xx = %d, yy = %d\n", cc, xx, yy);
return 0;
}
核心觀念
本題考查 C 語言的作用域與 static 區域變數。
- 全域變數
cc、xx、yy在程式開始時皆初始化為0。 - 函式內以相同名稱宣告的區域變數會遮蔽同名全域變數。
f1、f2中的static int cc各自是不同的函式區域變數,不是全域cc。 static區域變數的生命期持續至程式結束;但本題沒有讀取它們的值。int xx = nn;與int yy = nn;分別宣告函式內的區域變數,不會改動全域xx或yy。只有明確指定全域變數,例如xx = nn;,才會改變全域xx。
解題方法
依序追蹤全域變數的值:
- 初始時,全域變數為
cc = 0、xx = 0、yy = 0。 - 呼叫
f1(1):
static int cc = 0;宣告的是f1自己的靜態區域變數。int xx = nn;宣告的是f1的區域變數,值為1。cc++遞增的也是f1內的靜態區域變數。- 全域
cc、xx、yy均未改變。
- 呼叫
f2(2):
static int cc = 0;是f2自己的靜態區域變數,與f1的cc彼此獨立。int yy = nn;宣告函式內區域變數yy,值為2,不影響全域yy。
第 32 題2 分
下列 C 語言程式執行後,產生的輸出為何?
#include <stdio.h>
void unknown() { static int x = 10;
x = x + 10;
printf("%d;", x);
}
int main() { unknown(); unknown(); }
核心觀念
本題考 C 語言 static 區域變數的生命週期與初始值。函式內以 static 宣告的區域變數,具有靜態儲存期:程式執行期間只初始化一次,呼叫函式離開後,變數值仍會保留,供下次呼叫使用。
解題方法
unknown 中的 x 初始值為 10。每次呼叫都先執行 x = x + 10,再輸出 x:
| 呼叫次數 | 呼叫前的 x | 加 10 後的 x | 輸出 |
|---|---|---|---|
| 第一次 | 10 | 20 | 20; |
| 第二次 | 20 | 30 | 30; |
因此程式輸出為 20;30;。
選項分析
第 33 題2 分
關於網路設備的敘述,下列何者錯誤?
核心觀念
本題考查常見網路設備的功能與其所在層級:
- 閘道器(Gateway):連接不同網路或系統,必要時轉換通訊協定與資料格式。
- 數據機(Modem):負責調變與解調,讓數位資料能透過類比訊號傳送,並在接收端還原。
- 中繼器(Repeater):接收並再生或放大訊號,以延長傳輸距離;不負責連接多台電腦形成區域網路。
- 路由器(Router):依據路由表選擇封包的下一個傳送路徑。
解題方法
逐一比對設備名稱與主要功能。題目問「何者錯誤」,只要找出把某設備功能描述成另一種設備功能的選項即可。中繼器的重點是延伸訊號傳輸範圍;連接多台電腦形成區域網路,通常由集線器或交換器負責,因此選項(C)錯誤。
選項分析
第 34 題2 分
是一個 16 位元樣式(Bit pattern)。若要將 的中間 8 個位元強制設定為 0,且讓其他位元保持原有內容,應該進行下列何種邏輯運算(Logic Operations)?
核心觀念
本題考位元邏輯運算。若要將某些位元強制設為 ,應使用 AND 運算:遮罩對應位置為 時,無論原位元是 或 ,結果都會是 ;遮罩為 時,原位元則保持不變。
解題方法
16 位元的「中間 8 個位元」是第 5 至第 12 位。要清除這 8 個位元,遮罩的中間 8 位應設為 ,其餘 8 位設為 :
因此對 做 AND 運算:
遮罩兩端的 會保留 原本的位元;中間的 會把 的中間 8 位清為 。
選項分析
第 35 題2 分
一般而言,密碼可分為對稱式金鑰與非對稱式金鑰。下列何者加密法屬於非對稱式金鑰密碼?
核心觀念
密碼依金鑰的使用方式,可分為對稱式與非對稱式:
- 對稱式金鑰密碼:加密與解密使用相同的金鑰,或使用彼此可直接推導的金鑰。
- 非對稱式金鑰密碼:使用一組不同但彼此相關的金鑰,通常以公開金鑰加密、私密金鑰解密;RSA 是典型代表。
本題要辨認各選項所屬的密碼類型。
解題方法
先判斷每種方法是否採用公開金鑰與私密金鑰這一對金鑰。RSA 以一把金鑰公開、另一把金鑰保密,屬於非對稱式金鑰密碼;其餘選項皆為古典密碼方法,使用共享的替換規則或排列方式,不屬於非對稱式金鑰密碼。
選項分析
第 36 題2 分
對數列 進行選擇排序(Selection sort),下列何者為正確步驟?
核心觀念
選擇排序(Selection sort)每一回合都在「尚未排序的部分」找出最小值,並與該部分的第一個元素交換。由左至右逐步固定最小值後,數列會形成「已排序部分|未排序部分」。
解題方法
初始數列為 :
- 在全部數列中找最小值 ,與第一個元素 交換:
- 在未排序部分 中找最小值 ,與該部分第一個元素 交換:
- 在未排序部分 中找最小值 。它已在該部分第一個位置,因此數列不變:
- 在未排序部分 中找最小值 ,與 交換:
第 37 題2 分
若要以二元搜尋(Binary search)從 中尋找 ,則搜尋過程中檢驗的字母依序為何?
核心觀念
二元搜尋適用於已排序的資料。每次檢查目前搜尋範圍的中間元素:若目標較大,就繼續搜尋右半部;若目標較小,就搜尋左半部。資料中找不到目標時,搜尋會在範圍縮小為空後結束。
解題方法
字母已依照字母順序排列,共有 15 個:
目標 比所有資料中的字母都大,因此每次檢查後都往右半部搜尋:
- 先檢查中間位置的 。因為 ,往右搜尋。
- 在右側範圍 到 中,檢查中間位置的 。因為 ,繼續往右。
- 在 到 中,檢查中間位置的 。因為 ,繼續往右。
- 剩下 ,檢查後發現 ,搜尋範圍變成空集合,搜尋結束。
第 38 題2 分
下列何者不是星狀網路拓撲(Star Network Topology)的特性?
核心觀念
星狀網路拓撲是指各節點分別以獨立連線接到中央設備,例如集線器(Hub)或交換器(Switch)。節點彼此傳送資料時,通常須經由中央設備轉送。
解題方法
逐項比對選項是否符合星狀拓撲的特性。星狀拓撲的典型優點包括:新增或移除節點較方便,且單一節點或連線故障通常不會影響其他節點;使用交換器時,各連接埠可分別傳送資料,能降低碰撞。至於「同儕網路」描述的是網路中的電腦如何共享資源,並非星狀拓撲本身的優點。
選項分析
(A) 效率佳,降低資料傳輸發生衝突(Collision)的機率:正確。 星狀網路使用交換器時,交換器可依目的位址轉送資料,減少不同連線間的碰撞;即使使用 Hub,碰撞也發生在共用的傳輸媒介上,因此本選項所述可作為星狀網路常見的效率優點。
第 39 題2 分
假設 是類別 CLS 的六個物件變數(object variables),下列 C++ 語言程式片段中, 六個物件的建構(construct)順序為何?
void foo(void) { CLS a;
static CLS b;
……
}
CLS c;
int main(void) { CLS d;
static CLS e;
if (1) {
CLS f;
……
}
foo();
……
}
核心觀念
本題考查 C++ 物件的儲存期與建構時點:
- 區域自動物件:進入其作用域時建構,離開作用域時解構。
- 區域靜態物件:第一次執行到宣告時才建構;本題中
foo只呼叫一次。 - 全域物件:在
main開始執行前建構。
解題方法
依程式執行順序排列各物件的建構時點:
CLS c;是全域物件,在進入main前建構,排第一。- 進入
main後,先建構區域自動物件d。 - 接著執行
static CLS e;,建構區域靜態物件e。 - 進入
if (1)區塊時,建構區域自動物件f。 - 離開
if區塊後,呼叫foo;進入函式後建構區域自動物件a。 - 接著執行
static CLS b;,此時首次執行到其宣告,因此建構b。
因此順序為 c、d、e、f、a、b,即 cdefab。
選項分析
第 40 題2 分
有關子網路切割,假設子網路遮罩(Subnet Mask)值為 。若有一台電腦的 IP 為 ,下列哪一個位址與該臺電腦在同一個子網路內(網路識別碼(Network ID)相同)?
核心觀念
子網路遮罩用來區分 IP 位址中的網路部分與主機部分。遮罩為 時,前三個位元組都是 ,表示前三個位元組屬於網路部分;最後一個位元組的 為二進位 ,因此最後一個位元組有 個網路位元、 個主機位元。
判斷兩台電腦是否在同一子網路,可比較它們的 IP 位址與遮罩進行位元 AND 運算;若所得 Network ID 相同,即屬於同一子網路。
解題方法
最後一個位元組遮罩值為 ,每個子網路的位址區間大小為:
因此最後一個位元組的子網路區段依序為 –、–、–、–。
題目 IP 的最後一個位元組是 ,落在 – 區段,故其 Network ID 為 。選項中,只有最後一個位元組落在相同區段、且前三個位元組也相同者符合。