108 國安局特考五等 資訊組 計算機大意 考古題詳解
第 1 題2 分
假設下列數字是以 16-bit 的二補數(two’s complement)方式儲存在記憶體中,那麼十六進位的 結果為何?
核心觀念
本題考 16 位元二補數的加法。二補數數值以 16 位元儲存時,運算結果保留低 16 位元;若最高位產生進位,該進位捨棄。最高位為 1 表示該位元樣式代表負數,但不影響以固定位元數進行加法。
解題方法
將兩個十六進位數直接相加:
結果需以 16 位元表示,也就是保留 4 個十六進位數字,捨棄最左側超出的進位 :
因此結果為選項 (B) 。
也可先解讀兩個數的有號值: 為正數; 最高位為 1,代表負數,其值為 。所以:
第 2 題2 分
電腦系統內的程序(process),會處於三種不同狀態(state):準備(ready)、正在執行(running)及等候(waiting)。程序的狀態會在三種不同狀態之間變換,請問下列哪一個狀態的變換是不可能發生的?
核心觀念
本題考程序的三種基本狀態及其轉換:
- 準備(ready):已具備執行條件,正等待 CPU 分配處理器時間。
- 正在執行(running):正在 CPU 上執行。
- 等候(waiting/blocked):因等待 I/O 或其他事件而暫停,尚不能繼續執行。
常見的狀態轉換包括:
- 正在執行 → 準備:時間片用完,或被較高優先權程序搶占。
- 正在執行 → 等候:程序提出 I/O 請求,或等待某項事件。
- 等候 → 準備:I/O 完成或等待事件發生。
- 準備 → 正在執行:排程器選中程序,分配 CPU。
解題方法
依程序狀態的定義判斷:程序只有在取得 CPU 後才能執行指令;若程序尚在準備狀態,就不能自行提出 I/O 請求或進入等待。因此,準備狀態不能直接轉換為等候狀態,必須先進入正在執行狀態,再因等待事件而轉換。
選項分析
第 3 題2 分
【題目包含邏輯線路圖】
下列這個邏輯線路圖,有兩個 1-bit 的輸入 及 ,產生 1-bit 的輸出。請問這個邏輯線路圖可能的運算功能為何?
核心觀念
邏輯閘的輸出由輸入訊號及閘的運算決定。圖中 先經過反相器,變成 ;接著 與 輸入 AND 閘,因此輸出為
解題方法
列出 、 的所有組合,依序計算 與輸出 :
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
只有 時輸出為 。將 1-bit 二進位數視為數值比較,這正是 的情況,所以此電路是 1-bit 的大於比較器。
選項分析
第 4 題2 分
下列有關資料排序的敘述,何者錯誤?
核心觀念
本題考常見排序法的基本操作方式。選擇排序與插入排序都可將資料概念上分為「已排序」與「未排序」兩部分;氣泡排序透過相鄰資料的比較與交換,使資料逐步到達正確位置;合併排序則將資料分割後,再合併已排序的子序列。
解題方法
逐一對照各選項所述的操作是否符合該排序法定義。關鍵在於合併排序的「合併」不是任意取兩個陣列直接合併,而是合併已排序的子序列;排序過程會先將資料分割,再以合併方式逐步形成完整的排序結果。
選項分析
(A) 正確。 選擇排序每一輪從未排序部分找出最小值(遞減排序時找最大值),放到已排序部分的末端。重複此步驟,直到全部資料排序完成。
第 5 題2 分
假設電腦的硬體設計使用獨立 I/O 定址(isolated I/O addressing),且其位址空間(address space)大小的設計剛好存取的記憶體空間為 1024 字(words)。如果每個 I/O 控制器(controller)有 16 個暫存器(register),那麼此電腦可以存取多少個 I/O 控制器?
核心觀念
本題考查獨立 I/O 定址下,I/O 位址空間如何分配給各個控制器。獨立 I/O 定址具有與記憶體分開的 I/O 位址空間;題目給的記憶體空間大小是 字,作為 I/O 位址空間大小的線索。每個控制器占用的位址數,則等於它所含的暫存器數。
解題方法
依題目設定,位址空間共有 個可定址位置,每個 I/O 控制器有 個暫存器,因此每個控制器需要 個 I/O 位址。可容納的控制器數為:
因此選 (B) 64。
選項分析
第 6 題2 分
下列運算式是以後序法(postfix)表示:,請問運算的結果為何?
核心觀念
後序法(postfix,又稱逆波蘭表示法)將運算子放在運算元之後,因此不需括號表示優先順序。計算時由左至右掃描:遇到數字就放入堆疊;遇到運算子就取出堆疊頂端的兩個數字運算,再將結果放回堆疊。
解題方法
依序處理 :
- 讀入 ,依序放入堆疊。
- 遇到 ,取出 和 ,計算 ,放回堆疊。此時為 。
- 遇到 ,取出 和 ,計算 ,放回堆疊。
- 讀入 ,放入堆疊;遇到最後的 ,計算 。
因此,運算結果為 。
選項分析
第 7 題2 分
假設 是一個堆疊(stack),一開始它的內容是空的(empty)。而 與 是兩個變數名稱,則執行下列的演算法後, 的內容為何?(由左至右的順序代表堆疊的底部到上面。)
push(S, 5)
push(S, 3)
push(S, 2)
if (not empty(S)) pop(S, x);
if (not empty(S)) pop(S, y);
push(S, x+y)
核心觀念
堆疊(stack)遵循「後進先出」(LIFO):最後放入的資料會最先取出。push 將資料放到堆疊頂端;pop 取出並移除頂端資料,並將取出的值存入指定變數。
解題方法
依序追蹤每次操作。下表由左至右表示堆疊底部到頂端:
| 操作 | 堆疊內容 | 變數 |
|---|---|---|
| 初始狀態 | 空 | — |
push(S, 5) | 5 | — |
push(S, 3) | 5、3 | — |
push(S, 2) | 5、3、2 | — |
pop(S, x) | 5、3 | |
pop(S, y) | 5 | |
push(S, x+y) | 5、5 |
第 8 題2 分
針對一個二元搜尋樹(BST: Binary search tree),用下列哪種走訪(traversal),所得到的順序剛好是由小到大的順序?
核心觀念
二元搜尋樹(BST)的性質是:對每個節點而言,左子樹中的鍵值小於該節點,右子樹中的鍵值大於該節點。依此性質採用中序走訪,也就是依序走訪「左子樹、根節點、右子樹」,所得節點順序會由小到大。
解題方法
將中序走訪套用到 BST:
- 先走訪左子樹,取得比根節點小的鍵值。
- 再走訪根節點。
- 最後走訪右子樹,取得比根節點大的鍵值。
左右子樹也各自符合 BST 性質,因此整體結果會維持由小到大的順序。
例如,若根節點為 ,左子樹包含 ,右子樹包含 ,中序走訪結果為 。
選項分析
第 9 題2 分
下列關於程式語言範式(paradigm)的敘述,何者錯誤?
核心觀念
本題考查四種程式語言範式如何組織程式與描述計算:
- 函數式範式以函數運算為核心,常將程式設計成類似數學函數的組合。
- 宣告式範式著重描述「要得到什麼結果」,而不是逐步指定「如何執行」;邏輯式程式設計是常見形式,可用事實與規則推導新的結論。
- 物件導向範式以物件為核心,物件封裝狀態與行為,並可透過訊息互動。
- 程序式範式以程序或指令為核心,描述主動執行的程式如何處理資料。
解題方法
逐一核對選項中「範式名稱」與「描述特徵」是否相符。關鍵在於區分宣告式程式設計的整體概念,與邏輯式程式設計中以事實、規則推論結論的特定作法。題目官方答案指定為 B;B 把特定的推論機制說成宣告式範式的一般定義,因此為錯誤敘述。
選項分析
第 10 題2 分
下列程式是 C 語言的 function,請問呼叫 會得到多少?
int C(int n, int k) { if ((k==0) || (n==k)) return 1; else return (C(n-1, k) + C(n-1, k-1)); }
核心觀念
此題考遞迴函式與二項係數的遞迴關係。函式 C(n, k) 在符合終止條件時回傳 1;否則將問題拆成 C(n-1, k) 與 C(n-1, k-1) 兩個子問題後相加。
解題方法
由題目給定的程式逐層代入:
其中,、、 都因為 而回傳 1; 則因為 而回傳 1。
第 11 題2 分
下列程式是 C 語言的 function,請問呼叫 會得到多少?
int g(int m, int n) { /* assume m >= 1 && n >= 1 */ int i;
for (i=m; i>=1; i--)
if (m%i == 0 && n%i == 0)
return i;
}
int g2(int m, int n, int r) { /* assume m >=1 && n>=1 && r>=1 */ return g(g(m,n), r); }
核心觀念
函式 g(m,n) 由 開始往下檢查整數 。第一個同時整除 與 的 ,就是兩數的最大公因數(GCD)。函式 g2(m,n,r) 則先求出 的最大公因數,再與 求最大公因數。
解題方法
先計算:
接著代入 g2 的回傳式:
的因數中,最大且也能整除 的數是 ,因此:
所以呼叫結果為 。
選項分析
第 12 題2 分
下列有關軟體工程的軟體開發過程的敘述,何者錯誤?
核心觀念
本題考查軟體生命週期的階段,以及瀑布模型、需求分析與結構圖的用途。
軟體開發常見的階段包括需求分析、設計、實作與測試。各階段會產生不同的成果:分析階段整理「軟體要做什麼」,設計階段規劃「軟體要如何做到」,實作階段則依設計將功能寫成程式。結構圖(structure chart)屬於設計階段的工具,用來呈現系統或模組的階層關係與呼叫結構。
解題方法
先判斷各敘述對軟體開發階段及工具用途的描述是否相符。瀑布模型強調階段依序進行;分析階段著重需求與功能規格;再確認結構圖應歸於設計或實作。結構圖用於規劃程式模組的組成與關係,因此將它歸為實作階段工具的敘述錯誤。
選項分析
第 13 題2 分
下列有關資訊安全的敘述,何者錯誤?
核心觀念
本題考查資訊安全攻擊與安全服務、網路防火牆的過濾層級,以及對稱式與挑戰應答認證的基本概念。
封包過濾防火牆通常依據網路層與傳輸層的封包欄位判斷,例如來源/目的 IP 位址、通訊協定及連接埠;應用層防火牆則會檢查應用程式或應用層協定的內容。完整性(integrity)著重防止資料遭未授權修改;機密性(confidentiality)著重防止未授權讀取。
解題方法
逐項核對敘述是否符合標準定義。題目指定官方答案為 B,因此關鍵在分辨封包過濾防火牆使用的資訊層級:若把它說成依據應用層資訊過濾,即與其典型運作方式不符。
選項分析
- (A) 正確。 偽裝攻擊是攻擊者冒充合法使用者或系統,以其身分進行未授權活動。這主要威脅身分鑑別與存取控制,也可能進一步造成資料遭竄改,因此題目將其歸為完整性威脅,符合常見資訊安全分類。
第 14 題2 分
下列電腦系統元件中,何者資料存取速度最快?
核心觀念
本題考查電腦系統中各種儲存元件的存取速度。一般速度由快至慢依序為:
暫存器位於處理器內部,直接供 CPU 執行指令時使用,存取速度最快;快取記憶體也靠近處理器,但速度仍低於暫存器。
解題方法
比較各選項在記憶體階層中的位置即可。越靠近 CPU 的儲存元件,通常存取延遲越低、速度越快。暫存器位於 CPU 內部,快取記憶體與 RAM 則依序位於較外層,SATA 硬碟屬於次級儲存裝置,速度最慢。
選項分析
第 15 題2 分
假如某部電腦的 IP 為 ,那麼它所在的子網路的 IP 範圍應是?
核心觀念
CIDR 的 /26 表示子網路遮罩有 26 個連續的網路位元,遮罩為 255.255.255.192。因此每個子網路在最後一個八位元組中有 個 IP 位址,網段邊界依序為 .0、.64、.128、.192。
解題方法
題目主機 IP 的最後一個八位元組是 66。以每個網段 64 個位址分組:
.0 ~ .63.64 ~ .127.128 ~ .191.192 ~ .255
66 落在 .64 ~ .127,所以該子網路的網路位址是 160.70.14.64,廣播位址是 160.70.14.127,整個子網路的 IP 範圍為 160.70.14.64 ~ 160.70.14.127。
選項分析
第 16 題2 分
數位簽章(digital signature)無法提供下列哪一個功能?
核心觀念
數位簽章主要用來確認訊息來源、確保訊息未遭竄改,並讓簽署者事後不能輕易否認曾簽署該訊息。它不負責隱藏訊息內容,因此不能提供機密性。
以公開金鑰密碼學為例,傳送者先對訊息計算雜湊值,再以自己的私密金鑰對雜湊值簽章。接收者使用傳送者的公開金鑰驗證簽章,並比對訊息的雜湊值。
解題方法
判斷各選項是否屬於數位簽章的功能。可用「簽章讓人驗證訊息與簽署者;加密才讓未授權者看不懂內容」作為切入點。
簽章驗證可確認訊息是否由持有相應私密金鑰者簽署,並檢查訊息內容是否被更動;但訊息若未另外加密,旁人仍可讀取內容。因此,題目問數位簽章無法提供的功能,應選機密性。
選項分析
- (A) 訊息的機密性(confidentiality)—正確答案。 數位簽章不會隱藏訊息內容。要提供機密性,通常須另外以接收者的公開金鑰加密,讓接收者以自己的私密金鑰解密。
第 17 題2 分
根據 TCP/IP 通訊協定(protocol suite),下列敘述何者錯誤?
核心觀念
本題考查 TCP/IP 協定套件各層的功能,以及各層通訊的對象範圍:
- 傳輸層:負責端點之間的資料傳輸;TCP、UDP 都屬於此層。
- 網路層:負責封包跨越網路的遞送,通常採盡力而為方式,不保證可靠送達。
- 資料鏈結層:負責相鄰結點間的資料傳送。
- 實體層:負責在實體媒介上傳送位元,不處理程序對程序的通訊。
解題方法
逐一核對選項中的「協定層」與「通訊對象/功能」是否相符。特別注意通訊範圍由局部鏈路逐步擴大:資料鏈結層是相鄰結點間;程序對程序的通訊則屬於傳輸層的功能。
選項分析
第 18 題2 分
下列哪一種威脅,並不是採取直接攻擊電腦,而是一種非法取得敏感資料(例如信用卡號、帳號密碼)的方式?
核心觀念
本題考資訊安全威脅的類型,關鍵在於分辨「直接攻擊電腦系統」與「利用欺騙手段取得敏感資料」。
網路釣魚(Phishing)通常透過偽造電子郵件、網站或訊息,誘使使用者自行提供信用卡號、帳號或密碼,重點是騙取資料,而非直接攻擊電腦。病毒、阻斷服務與木馬則屬於針對電腦、程式或網路服務造成危害的威脅。
解題方法
先抓題幹的辨識線索:「非法取得敏感資料」以及「並不是採取直接攻擊電腦」。若手法是誘騙使用者交出資料,對應的就是網路釣魚;若是感染程式、癱瘓服務或植入惡意程式,則屬於直接危害系統或服務的攻擊方式。
選項分析
- (A) 病毒(Virus)錯誤。 病毒會附著於程式或檔案,並在執行或傳播時感染其他檔案或系統,可能破壞資料、干擾運作。它是直接危害電腦系統的惡意程式,不是以誘騙使用者提供敏感資料為主要手段。
第 19 題2 分
下列哪種技術,使用隧道協定(tunneling protocol)以及安全的程序,使得即使透過公共的骨幹網路進行網路連線,仍能維持其私密性(privacy)?
核心觀念
本題考查虛擬私人網路(VPN,Virtual Private Network)的用途與運作方式。VPN 透過公共網路建立加密的「隧道」,並使用身分驗證、加密等安全機制,讓資料在傳輸期間維持機密性與完整性,形成如同私人網路般的安全連線。
解題方法
題幹的關鍵線索是「使用隧道協定」以及「透過公共骨幹網路連線仍維持私密性」。能以隧道技術在公共網路上建立安全連線的技術是 VPN,因此選 (D)。
隧道會將原始資料封裝後,透過公共網路傳送;VPN 通常再搭配加密與驗證,避免未授權者讀取或竄改傳輸資料。隧道本身負責封裝與傳送,隱私與安全則仰賴 VPN 所使用的安全機制。
選項分析
- (A) NAT:錯誤。 網路位址轉換(Network Address Translation)會轉換封包的 IP 位址,常用於讓多台內部設備共用公用 IP 位址;
第 20 題2 分
已知變數 是十進位,若 ,求 ?
核心觀念
不同進位制的數值相等時,可先各自轉換為十進位,再列式求解。位值轉換的規則為:每一位數字乘上該位的進位底數次方,再加總。
解題方法
將等式左右兩側分別轉成十進位:
代回題目:
因此:
選項分析
第 21 題2 分
定義霍夫曼編碼(Huffman encoding)規則為:
– A, – E, – T, – C, – L, – S, – R, – O, – I, – N, – F, – H, – D。
則 編碼後為下列何者?
核心觀念
本題考霍夫曼編碼的前綴碼解碼:依題目列出的碼字,從位元串左端開始逐位讀取;一旦讀到完整碼字,就輸出對應字母,接著從下一個位元繼續。這些碼字具有前綴碼特性,因此可唯一切分,不必另外加入分隔符號。
解題方法
將位元串由左至右切分,並對照題目中的編碼表:
依題目提供的編碼表,切分後的字母為 FANSSFC。這與選項 D「FANTASTIC」不一致:例如,T 的碼字是 ,但切分結果中沒有 ;而選項 D 的完整字串也無法由題目所列碼字逐字解出。
選項分析
第 22 題2 分
【題目包含電路圖】
針對下列電路圖,下列何者為正確布林表示式(Boolean Expression)?
核心觀念
本題考布林代數與邏輯閘符號判讀:
- 三角形末端有小圓圈表示反相器,輸出為輸入的補數。
- AND 閘輸出為兩個輸入相乘;OR 閘輸出為兩個輸入相加。
- 閘的輸出端有小圓圈,表示整個閘的輸出再取反。
解題方法
依電路由左至右讀取:
- 先經過反相器,成為 ;再與 輸入 AND 閘,輸出為 。
- 下方的閘是 OR 閘,輸入為 與 ,且輸出端有反相小圓圈,因此輸出為 。
- 最後兩路訊號輸入 OR 閘,所以總輸出為
這與選項 (A) 相同。
選項分析
- (A) :正確。 上方支路是 ,下方支路是 NOR 輸出 ,兩路最後以 OR 閘相加。
- **(B) :錯誤。
第 23 題2 分
在一個切割式(Partition)記憶體管理系統,若基礎暫存器(Base Register)的值是 744,且範圍暫存器(Bounds Register)的值是 1105,則邏輯記憶體位址 900 相對於實體記憶體位置的值為下列何者?
核心觀念
本題考查切割式記憶體管理中的位址轉換。基礎暫存器(Base Register)記錄該程式分割區在實體記憶體中的起始位置;邏輯位址是相對於分割區起點的位移。因此,合法邏輯位址的實體位址為:
範圍暫存器(Bounds Register)用來限制可存取的邏輯位址範圍,供合法性檢查使用。
解題方法
題目給定基礎暫存器為 、範圍暫存器為 ,邏輯位址為 。
先檢查邏輯位址是否在範圍內:,因此位址合法。接著將基礎位址與邏輯位址相加:
第 24 題2 分
【題目包含記憶體狀態圖】
假設電腦系統目前的主記憶體狀態如下圖,記憶體管理使用動態切割技術。一個新的工作(程序 5)要求 63 區塊(Block)主記憶體。若使用最差適用法(Worst fit)配置主記憶體,下列敘述何者正確?
核心觀念
動態切割會依程序需求,從主記憶體的空閒區塊中配置空間。最差適用法(Worst fit)每次選擇最大的可用空閒區塊;配置後,未使用的部分仍是空閒區塊。
解題方法
圖中的空閒區塊大小為 、、、 區塊。程序 5 需要 區塊,四個空閒區塊都足以容納;依最差適用法,選擇最大的 區塊。
配置後剩餘空間為:
因此, 空區塊分配 區塊給程序 5,剩餘 空區塊。
選項分析
第 25 題2 分
甲公司的電腦通訊使用偶同位(Even Parity)傳送重要資料,若傳送 7 位元原始資料,下列接收到的資料何者在傳送過程中一定發生錯誤?
核心觀念
偶同位(Even Parity)會在 7 位元原始資料外加 1 個同位元,使傳送的 8 位元資料中「1」的總數為偶數。接收端檢查 8 個位元的「1」總數:若為奇數,代表傳送過程中一定發生錯誤;若為偶數,則只能判定符合偶同位規則,不能保證資料完全沒有錯誤。
解題方法
逐一計算各選項中「1」的個數。若個數為奇數,該資料不符合偶同位,必定發生錯誤;若個數為偶數,則符合偶同位檢查。
選項分析
第 26 題2 分
建立二元搜尋樹(Binary Search Tree),其插入順序為 ,則由左至右依序列出此樹的葉節點(Leaf node),下列何者正確?
核心觀念
二元搜尋樹(Binary Search Tree, BST)的規則是:對每個節點而言,較小的值插入其左子樹,較大的值插入其右子樹。依序插入時,每個新值都從根節點開始,比較並往左或往右,直到找到空的位置。
葉節點是沒有任何子節點的節點。本題的「由左至右」是依樹形圖的位置排列,不是依數值大小排序。
解題方法
依序插入題目所列數值,得到以下二元搜尋樹:
72
/ \
19 96
/ \ / \
16 21 94 107
\ / \
25 101 126
\ /
51 112
/
111
例如, 比根節點 大,因此往右;比 小,因此插入 的左側。 則依序比較 ,最後插入 的左側。
檢視各節點是否有子節點:
- 沒有子節點,是葉節點。
- 有右子節點 ,不是葉節點; 又有右子節點 ,所以 也不是葉節點,而 是葉節點。
第 27 題2 分
有關 B-tree 平衡樹特性之敘述,下列何者正確?
核心觀念
本題考 B-tree(B 樹)與 B+ tree(B+ 樹)的結構特性。兩者都是平衡搜尋樹,常用於資料庫與檔案系統的索引;題目選項中提到「葉節點依鍵值順序連結」是 B+ tree 的典型特徵。
B-tree 的節點可存放鍵值及資料(或指向資料的指標),搜尋可能在內部節點或葉節點找到目標。B+ tree 則將資料索引集中在葉節點,內部節點主要負責導引搜尋;葉節點通常按鍵值排序,並以指標串連,方便範圍查詢。
解題方法
先辨認各選項描述的樹型特徵:平衡樹的根到葉路徑長度是否相同、增刪是否會破壞平衡,以及資料是否集中於葉節點並以鏈結維持順序。選項 C 描述葉節點按鍵值順序相連,符合 B+ tree 的典型特性;本題官方答案為 C。
選項分析
- (A) 錯誤。 B-tree 是平衡樹,所有葉節點位於相同深度,因此從根到葉的路徑長度相同,不是「歪斜樹」,距離也不是不一定相同。
第 28 題2 分
某二元樹(Binary tree)之中序走訪(Inorder traversal)為 ABCDEFGHJK,後序走訪(Postorder traversal)為 ACEDBJHKGF。對此二元樹之描述,下列何者錯誤?
核心觀念
二元樹的中序走訪順序為「左子樹、根節點、右子樹」;後序走訪順序為「左子樹、右子樹、根節點」。因此,後序序列的最後一個節點是整棵樹的根,再利用中序序列切分左右子樹,即可逐層重建二元樹。
解題方法
中序序列為 ABCDEFGHJK,後序序列為 ACEDBJHKGF。
- 後序最後一個節點是根節點
F。在中序序列中,以F為界,左子樹為ABCDE,右子樹為GHJK。 - 左子樹的後序序列為
ACEDB,故其根為B。中序中B左側為A,右側為CDE;而CDE的根為D,左右子節點分別為C、E。 - 右子樹的後序序列為
JHKG,故其根為G。中序中G右側為HJK;該子樹後序為JHK,根為K。在中序的HJK中,K左側為HJ,其後序為JH,所以根為H,且H的右子節點為J。
重建後的樹如下:
第 29 題2 分
【題目包含圖形結構】
針對下列圖形結構,以廣度優先順序搜尋輸出,下列何者正確?
核心觀念
廣度優先搜尋(BFS)從起點開始,先拜訪距離起點較近的節點,再拜訪較遠的節點;實作時通常使用佇列。拜訪節點時,將尚未拜訪的相鄰節點依圖示或題目採用的順序加入佇列。
從節點 1 出發,依圖中連線可得各層:
- 第 0 層:1
- 第 1 層:2、6
- 第 2 層:3、7、5
- 第 3 層:4
解題方法
依圖形的相鄰節點順序進行 BFS:
- 起點 1,將相鄰的 2、6 加入佇列。
- 取出 2,將尚未拜訪的相鄰節點 3、7 加入佇列。
- 取出 6,將尚未拜訪的相鄰節點 5 加入佇列。
- 依序取出 3、7、5;其中 3 或 5 會將尚未拜訪的 4 加入佇列。
- 最後取出 4。
因此輸出順序為 。
選項分析
第 30 題2 分
使用選擇排序法(Selection sort)將 7 個整數 由小排到大,下列敘述何者正確?
核心觀念
選擇排序法每一趟都在尚未排序的部分找出最小值,與該部分的第一個元素交換。升冪排序時,第一趟固定最小值到第 1 個位置,第二趟固定第 2 小的值,依此類推。
選擇排序法不論輸入資料原本是否已排序,都要逐趟搜尋未排序部分,因此比較次數為 ,時間複雜度為 。通常使用原陣列排序,額外空間複雜度為 。
解題方法
原始數列為:
依序在未排序部分找最小值並交換:
| 趟數 | 未排序部分的最小值 | 交換後數列 |
|---|---|---|
| 第 1 趟 | 8 | |
| 第 2 趟 | 12 | |
| 第 3 趟 | 19 |
第 31 題2 分
有關物件導向語言 C++ 建構子(Constructor)的敘述,下列何者正確?
核心觀念
C++ 的建構子(Constructor)是建立物件時負責初始化的特殊成員函式。它的名稱必須與類別名稱相同,且不宣告回傳型別。建構子可以多載,也可以依需求設為 public、protected 或 private。
解題方法
逐一檢查各選項是否符合 C++ 建構子的定義與使用方式。判斷關鍵是建構子的名稱,以及它是否有「必須使用 new」、「只能有一個」或「必須為 public」等限制。
選項分析
- (A) 錯誤。 建構子不一定要配合
new。例如MyClass obj;可直接建立區域物件並呼叫預設建構子;
第 32 題2 分
有關 C 語言陣列(Array)的敘述,下列何者錯誤?
核心觀念
本題考查 C 語言陣列的大小、索引檢查方式,以及陣列與指標的關係。C 語言的陣列索引由 開始;若陣列長度為 ,合法索引為 至 。C 語言本身不會在執行時自動檢查索引是否超出範圍,越界存取可能造成未定義行為。
解題方法
逐一判斷各選項是否符合 C 語言的陣列特性。題目問「何者錯誤」,因此找出與 C 語言實際行為不符的敘述即可。
選項分析
(A) 陣列在程式執行階段不可以改變其大小:正確。
一般宣告的陣列,其大小在建立時決定,之後不能直接調整。例如 int a[10]; 的元素數量不會因執行中指派不同值而改變。若需要可調整大小的儲存空間,通常使用動態記憶體配置,再依需求重新配置。
(B) 支援檢查所使用陣列之位址/索引(Index)是否超出宣告範圍:錯誤。 標準 C 語言不提供陣列索引的自動越界檢查。
第 33 題2 分
執行 C 程式 ,其回傳值為下列何者?
int test(int control) { int g[] = {0,2,4,6}, h[] = {20,40,60,80}; int i, g_length = 4, s = 0;
for(i = g_length-1; i >= 0; i--) {
if(g[i] < control) break;
}
while(i >= 0) {
s = s + (control-g[i]) * h[i];
control = g[i];
i--;
}
return s;
}
核心觀念
本題考查 C 語言陣列索引、for 迴圈中的 break,以及 while 迴圈如何更新變數。陣列索引從 開始,因此:
| 索引 | g[i] | h[i] |
|---|---|---|
| 0 | 0 | 20 |
| 1 | 2 | 40 |
| 2 | 4 | 60 |
| 3 | 6 | 80 |
解題方法
初始 control = 3。for 迴圈從索引 往下檢查,遇到第一個符合 g[i] < control 的位置就執行 break:
- :, 不成立。
- :, 不成立。
- :, 成立,跳出迴圈。
因此進入 while 時,。依序計算:
- :;接著
control更新為 , 減為 。
第 34 題2 分
針對下列 Python 程式,執行 後,其輸出為下列何者?
def f(a, b): if a>b: a = a + b else: b = b - a return b, a
def test(x): x, y = f(x, x+3) print(x+y)
核心觀念
本題考查 Python 函式呼叫、區域變數,以及多個回傳值的順序。函式以 return b, a 回傳兩個值時,呼叫端會依照該順序指定給左側變數。
解題方法
執行 test(3) 時,先令 ,接著呼叫:
x, y = f(x, x+3)
因此傳入 f 的引數為 、。由於 不成立,執行 else:
a 維持 。函式以 return b, a 回傳 ,所以呼叫端指定為 、。最後輸出:
選項分析
第 35 題2 分
給定 Python 函數 ,已知 、、 回傳值分別為 13、19、22,則 if 的條件判斷式為下列何者?
def g(x): if (____): return x2+3 else: return x3+1
核心觀念
本題考查 Python 的 if...else 條件判斷:條件成立時執行 if 區塊,不成立時執行 else 區塊。解題時要把已知回傳值與兩個 return 式子對照,判斷各輸入值走哪個分支。
解題方法
當 時,已知回傳值為 。兩個分支的計算結果分別是:
if分支:else分支:
因此 必須滿足 if 條件。
當 時,已知回傳值為 :
if分支:else分支:
因此 不滿足 if 條件,執行 else 分支。
當 時,已知回傳值為 :
if分支:else分支:
因此 也不滿足 if 條件。
條件必須在 時成立,並在 時不成立。
第 36 題2 分
對於資料庫中關聯式代數(Relational Algebra)運算子(Operator)的敘述,下列何者正確?
核心觀念
本題考查關聯式代數各運算子的分類。基本運算子是指一組可作為運算基礎的運算;其他運算子則可由基本運算子組合推導。常見的基本運算子包括選擇(Select,)、投影(Project,)、聯集(Union,)、差集(Difference,)及卡式集(Cartesian Product,)。交集、合併與除法等運算,則可由基本運算子推導。
解題方法
逐一比對選項所列的運算子是否屬於基本運算子。選擇與投影是關聯式代數的基本運算,因此 (B) 正確。
例如,選擇運算從資料表中挑出符合條件的資料列;投影運算則挑出指定欄位。兩者是基本運算,不必由其他運算子推導。
選項分析
第 37 題2 分
針對下列 C 程式,執行 後回傳值為下列何者?
int f(int n) { if (n > 3) return 1; else if (n == 2) return (3 + f(n + 1)); else return (1 + f(n + 1)); }
int test() { int i=0, j=0;
for (i = 1; i < 4; i++)
j = j + f(i);
return j;
}
核心觀念
本題考遞迴函式的呼叫與回傳值,以及 for 迴圈逐次累加。計算 f(n) 時,先依序判斷條件;每次遞迴呼叫會繼續往下執行,直到遇到終止條件 n > 3,再將回傳值逐層加回。
解題方法
先由終止條件往回計算:
- ,因為 。
- 。
- ,因為 時適用第二個條件。
- 。
test 的迴圈中, 依序為 ,因此:
所以回傳值為 。
選項分析
第 38 題2 分
對一個二元樹的走訪(Binary tree traversal),以後序走訪(Postorder traversal)的結果是 FECHGDBA,但若以中序走訪(Inorder traversal)的結果是 FECABHDG,那麼這個二元樹若以先序走訪(Preorder traversal)的結果為何?
核心觀念
二元樹的三種深度優先走訪順序如下:
- 先序走訪(Preorder):根 → 左子樹 → 右子樹。
- 中序走訪(Inorder):左子樹 → 根 → 右子樹。
- 後序走訪(Postorder):左子樹 → 右子樹 → 根。
由後序走訪的最後一個節點可找出整棵樹的根;再利用中序走訪中根的位置,分割出左、右子樹。對各子樹重複此步驟,即可還原樹形並求出先序走訪結果。
解題方法
後序結果為 FECHGDBA,最後一個節點 A 是整棵樹的根。在中序結果 FECABHDG 中,A 左側為 FEC,右側為 BHDG,因此左子樹節點為 F、E、C,右子樹節點為 B、H、D、G。
依後序序列分割:
- 左子樹後序:
FEC;中序:FEC。其根為C,左側為FE,且沒有右子樹。FE的根為E,其左子節點為F。 - 右子樹後序:
HGD B,即HGDB;中序:BHDG。其根為B,沒有左子樹,右子樹中序為HDG、後序為HGD。該子樹根為D,左子節點為H,右子節點為G。
還原後,先序走訪依序為根、左子樹、右子樹:
第 39 題2 分
有關網際網路通訊中 TCP(Transmission Control Protocol)通訊協定的敘述,下列何者正確?
核心觀念
TCP(傳輸控制協定)是傳輸層的連線導向協定,提供可靠的端對端資料傳輸。它會使用序號、確認回應、逾時重傳與錯誤檢查等機制,協助資料依序且完整地送達。
解題方法
判斷選項是否描述 TCP 的傳輸層功能。可靠傳輸是 TCP 的核心特性;頻寬保證、入侵偵測與流量限制則不是 TCP 本身提供的服務。
選項分析
- (A) 提供最小頻寬保證:錯誤。 TCP 不負責保留或保證網路頻寬。頻寬與服務品質通常由網路管理或 QoS 機制處理。
- **(B) 提供可靠傳輸:正確。
第 40 題2 分
由國際標準組織(ISO)訂定之 OSI 通訊協定,是採用通訊堆疊協定(Protocol Stack)方式運作,下列敘述何者正確?
核心觀念
OSI(開放系統互連)參考模型將網路通訊功能分成七層:實體層、資料連結層、網路層、傳輸層、會議層、表現層與應用層。各層負責不同工作;資料由上層往下層傳送時,會逐層加入控制資訊,接收端則逐層處理。
網路層負責在不同網路間傳送封包,並依網路位址選擇傳輸路徑,也就是路由(Routing)。資料連結層則處理相鄰節點間的資料傳送,例如媒體存取與訊框傳輸。
解題方法
逐一比對選項描述的功能與 OSI 各層職責。路由是網路層的代表功能,因此可先確認選項 (A);其餘選項則檢查表頭的處理方式,以及管理與安全相關功能所屬層級。
選項分析
- (A) 正確。 網路層負責封包轉送與路由,會依目的網路位址選擇適當路徑。路由器主要在此層運作,因此本選項符合網路層職責。