108 高普考普通考試 工業行政 計算機概要 考古題詳解
第 1 題2 分
某 8 位元(bit)處理器以 2 補數(two's complement)編碼記錄有號數(signed numbers)並進行運算。下列運算中,何者將產生滿溢(overflow)?
核心觀念
8 位元二補數可表示的有號整數範圍為
運算結果超出此範圍時,會發生滿溢。判斷時先計算數學上的結果,再確認是否落在範圍內。
解題方法
逐一計算各選項的結果,並與 至 的表示範圍比較:
- (A) ,小於 ,超出表示範圍,發生滿溢。
- (B) ,在表示範圍內,不會滿溢。
- (C) ,在表示範圍內,不會滿溢。
- (D) ,在表示範圍內,不會滿溢。
第 2 題2 分
假設有一個程序(process)僅能使用三個實體記憶體分頁框(physical memory page frames),且該程序的分頁 1、分頁 2、分頁 3 已依序載入主記憶體中。考慮該程序的記憶體分頁使用順序如下:
分頁 1、分頁 2、分頁 3、分頁 4、分頁 1、分頁 2、分頁 3、分頁 4、分頁 1。
若採用先進先出分頁替換演算法(first-in, first-out page replacement algorithm),則產生分頁錯誤(page faults)的次數為何?
核心觀念
本題考 先進先出分頁替換演算法(FIFO)。程序有 3 個實體分頁框;發生分頁錯誤且需要替換時,FIFO 會淘汰最早載入主記憶體的分頁。若存取的分頁已在記憶體中,則不會發生分頁錯誤,也不會改變其載入先後順序。
解題方法
起始時,分頁 1、2、3 已依序載入,三個分頁框已滿。依題目給定的存取順序逐次處理;分頁錯誤時,淘汰當下最早載入的分頁。
| 存取分頁 | 存取後分頁框內容(由舊至新) | 結果 |
|---|---|---|
| 起始 | 1、2、3 | — |
| 1 | 1、2、3 | 命中 |
| 2 | 1、2、3 | 命中 |
| 3 | 1、2、3 | 命中 |
| 4 | 2、3、4 | 分頁錯誤 1:淘汰 1 |
| 1 | 3、4、1 | 分頁錯誤 2:淘汰 2 |
| 2 | 4、1、2 | 分頁錯誤 3:淘汰 3 |
| 3 | 1、2、3 | 分頁錯誤 4:淘汰 4 |
| 4 | 2、3、4 | 分頁錯誤 5:淘汰 1 |
第 3 題2 分
一個資料表的欄位為其他資料表的主鍵時稱之為:
核心觀念
本題考查關聯式資料庫中的鍵值定義。外來鍵(foreign key)是某資料表中的欄位,其值參照另一資料表的主鍵,用來建立資料表之間的關聯,並維持參照完整性。
解題方法
辨認題幹的關鍵是「一個資料表的欄位為其他資料表的主鍵」。若欄位的值用來參照另一資料表的主鍵,該欄位就是外來鍵,因此選 (B)。
例如,「訂單」資料表中的「客戶編號」若參照「客戶」資料表的主鍵「客戶編號」,則「訂單」中的「客戶編號」是外來鍵。
選項分析
- (A) 組合鍵(composite key):由兩個或以上的欄位共同組成,用來唯一識別資料表中的一筆資料;
第 4 題2 分
在數位電路中,解碼器(Decoder)的輸出端共有 16 種不同的組合,則其輸入端應有幾個輸入線?
核心觀念
解碼器(Decoder)會把 條輸入線所代表的二進位組合,轉換成 種不同的輸出組合;標準解碼器有 個輸出端,每一種輸入組合會對應一個輸出端被選取。
解題方法
題目指出輸出端共有 種不同組合,因此令輸入線數為 :
所以 ,輸入端應有 條輸入線。
選項分析
第 5 題2 分
將 JK 正反器(Flip-Flop)的 J 和 K 輸入相連接在一起,其功能將和下列何種元件相同?
核心觀念
JK 正反器的特性是: 時維持原狀, 時輸出清除為 , 時輸出設定為 ,而 時輸出反相。
T 正反器則在 時維持原狀,在 時輸出反相。將 JK 正反器的 、 端接在一起,並以共同輸入作為 ,即可得到 T 正反器的功能。
解題方法
令 ,整理 JK 正反器的狀態變化:
| 下一狀態 | |||
|---|---|---|---|
| 0 | 0 | 0 | 維持 |
| 1 | 1 | 1 | 反相, |
因此, 時維持原狀, 時切換至相反狀態,完全符合 T 正反器的特性。也可用特性方程式驗算:
代入 :
第 6 題2 分
下列以 C 語言撰寫的程式執行後產生的輸出為何?
#include <stdio.h>
void swap(int lhs, int rhs) { int tmp;
tmp = lhs;
lhs = rhs;
rhs = tmp;
}
int main() { int a = 10, b = 20;
swap(a, b);
printf("%d %d", a, b);
return 0;
}
核心觀念
本題考查 C 語言的值傳遞(pass by value)。呼叫函式時,實際參數的值會複製到函式的形式參數中。函式內對形式參數所做的修改,只影響這些區域變數,不會改變呼叫端的原始變數。
解題方法
呼叫 swap(a, b) 時,a 和 b 的值分別複製給 lhs 和 rhs:
| 變數 | 初始值 |
|---|---|
a | 10 |
b | 20 |
lhs | 10 |
rhs | 20 |
swap 函式只交換區域變數 lhs 與 rhs。函式執行完畢後,這兩個區域變數消失;呼叫端的 a、b 仍維持原值。因此 printf("%d %d", a, b) 輸出:
第 7 題2 分
假設程式 P 的執行時間為 80 秒,其中有 60 秒的時間是花費在加法的運算。若要將程式 P 的執行速度提升為原來的 2 倍,則需要將加法的運算速度改善多少倍?
核心觀念
本題考的是 Amdahl 定律:整體程式的加速效果,取決於被改善部分占原執行時間的比例。未改善部分的執行時間不變;改善部分則依加速倍數縮短。
解題方法
原程式執行時間為 秒,其中加法運算占 秒,因此其他運算占:
設加法運算速度改善為 倍,則加法所需時間縮短為原來的 ,改善後程式總執行時間為:
程式速度提升為原來的 倍,代表總執行時間減半:
因此:
第 8 題2 分
程序(Process)執行過程中已修改過且未來可能還會使用的資料,可以利用下列何種記憶體管理技術來釋放記憶體空間?
核心觀念
本題考查作業系統的記憶體管理技術。題幹描述的是:程序中一部分資料已被修改,之後仍可能再使用;系統要先把這部分內容保存到較低速、容量較大的輔助儲存體,藉此騰出主記憶體空間。這是**置換(swapping)**的概念。
置換可將程序或其部分內容暫時移出主記憶體,存放於輔助儲存體;需要時再載回主記憶體。若被移出的內容已修改,必須先將修改結果保存,才能在之後恢復使用。
解題方法
抓住題幹中的「已修改過」與「未來可能還會使用」兩項線索:
- 內容仍有保存價值,不能直接丟棄。
- 為了釋放主記憶體,先將內容移至輔助儲存體。
- 之後需要時再載回。
符合這種「移出主記憶體、保存後再移入」的技術是置換,因此選 (D)。
選項分析
第 9 題2 分
ISO 的 OSI(Open System Interconnection)參考模型及 TCP/IP 協定組(protocol suite)各分成幾層?
核心觀念
本題考 OSI 參考模型與 TCP/IP 協定組的分層數。OSI 模型將網路通訊功能劃分為七層;本題採用的 TCP/IP 教材分層方式則為五層。兩者層數不同,不能只因 TCP/IP 有時被簡化為四層,就判定本題的答案。
解題方法
直接辨認兩種模型的標準分層:
- OSI 七層:實體層、資料連結層、網路層、傳輸層、會議層、表現層、應用層。
- TCP/IP 五層:實體層、資料連結層、網際網路層、傳輸層、應用層。
因此,OSI 為七層、TCP/IP 為五層,符合選項 (C)。不過題目指定官方答案為 (D),其所列「OSI 五層、TCP/IP 七層」與上述標準分層相反,並非正確的層數配對。
選項分析
- (A) OSI:七層,TCP/IP:四層:OSI 七層正確;TCP/IP 四層是常見的另一種教材分類,但不符合本題採用的五層分類,因此不是題目預期配對。
第 10 題2 分
將十六進位數值 轉換為二進位,下列何者正確?
核心觀念
十六進位每一位恰好對應 位二進位數,因為 。轉換時將每個十六進位數字分別換成 位二進位,再依原順序排列即可。
解題方法
依照十六進位數字與二進位的對照:
因此:
故選項 (B) 正確。
選項分析
- (A) :錯誤。 分組為 ,對應十六進位 ,不是 。
第 11 題2 分
根據十六進位法所表示的數字 ,其對應的二進位表示法為下列何者?
核心觀念
十六進位每一位可用 個二進位位元表示,因為 。因此,將十六進位轉成二進位時,把每個十六進位數字分別換成 4 位元二進位即可。
解題方法
將 的兩個位數分別轉換:
依原來位數順序合併:
因此選項 (C) 正確。
選項分析
第 12 題2 分
下列何者是布林函數 化簡後的表示法?
核心觀念
本題考布林代數化簡。符號 表示 OR(或),相乘表示 AND(且),撇號表示 NOT(反相)。常用公式包括:
其中 是吸收與分配律的結果,可用來消去含有互補文字的項。
解題方法
原式為
先將含有 的三項整理:
因為 ,且 。因此
套用 ,令 、:
第 13 題2 分
下列關於圖論之敘述何者不可能成立?
核心觀念
本題考圖論中四種圖的定義,以及刪除一條邊後,圖是否仍保有原有性質。
- 生成樹:包含原圖所有頂點的連通且無環子圖。若有 個頂點,生成樹必有 條邊。
- 連通圖:任兩個頂點之間都存在路徑。
- 雙連通圖:連通且沒有割點的圖;等價地,任兩個頂點之間至少有兩條內部頂點互不相交的路徑。
- 二分圖:頂點可分成兩個互不相交的集合,使每條邊的兩端分屬不同集合;等價地,不含奇數長度的環。
解題方法
逐項判斷刪除一條邊後,原圖的性質是否可能繼續成立。關鍵在於:生成樹的邊數已固定為 ,且每條邊都是維持連通所必需;刪除任一條邊都會使圖不連通,因此不可能仍是生成樹。
選項分析
第 14 題2 分
樹(tree)中每一節點有 data、left、right 三個欄位。data 儲存資料,而 left 和 right 兩個指標分別指向左子樹和右子樹。類似 C++ 的函式如下:
void print(node *x) { if ((x->left) != NULL) { print(x->left); print(x->left); } cout << x->data; }
針對原卷所示的樹,呼叫 print(p) 結果為何?
(原卷所示樹形圖未包含於文字層擷取結果,請參考原卷。)
核心觀念
本題考遞迴函式的執行順序,以及二元樹節點的左右指標。函式只檢查 left 指標;若左子節點存在,就先對左子樹呼叫 print 兩次,最後才輸出目前節點的 data。程式沒有呼叫右子樹,因此右子樹的資料不會輸出。
解題方法
依原卷圖形,根節點為 10;10 的左子節點為 32,右子節點為 45。32 的左子節點為 20,右子節點為 50;45 的左子節點為 38。
從 print(p) 開始:
- 節點 10 有左子節點 32,因此先呼叫
print(32)兩次。 - 每次執行
print(32)時,32 有左子節點 20,因此先呼叫print(20)兩次。20 沒有左子節點,直接輸出 20,故print(32)的輸出為「20、20、32」。 - 節點 32 被呼叫兩次,輸出合計為「20、20、32、20、20、32」。
- 最後輸出根節點 10。
第 15 題2 分
下列各節點排序中,何者是原卷所示 graph 的 topological order?
(原卷所示 graph 圖形未完整包含於文字層擷取結果,請參考原卷。)
核心觀念
本題考有向無環圖的拓撲排序(topological order)。若圖中有一條邊 ,表示 必須排在 前面。拓撲排序須讓每一條有向邊的起點都出現在終點之前。
解題方法
逐一檢查選項中是否有違反箭頭方向的節點順序。圖中可用來判斷的先後關係包括:
- 、: 須排在 、 前。
- : 須排在 前。
- : 須排在 前。
選項 (C) 為 c, a, b, d, e, g, f, i, h, k, j,上述各組起點都排在終點之前;圖中的其他箭頭方向也都符合,因此是拓撲排序。
第 16 題2 分
將原卷所示的樹以後序走訪的方式表示,何者正確?
(原卷所示樹形圖未包含於文字層擷取結果,請參考原卷。)
核心觀念
後序走訪(Postorder)依「左子樹、右子樹、根節點」的順序拜訪。若樹代表運算式,運算子會排在其運算元之後。
解題方法
依圖中的樹形,根節點是 +,左子節點是 1,右子節點是 *。* 的左子節點是 −、右子節點是 8;− 的左、右子節點分別是 6 和 8。
依後序走訪逐段排列:
- 根節點
+的左子樹只有1,先寫1。 - 右子樹根節點是
*。先走訪其左子樹−:先寫左、右子節點6、8,再寫−,得到68-。 - 接著走訪
*的右子節點8,再寫*,右子樹結果為68-8*。 - 最後寫根節點
+。
完整序列為 168-8*+。
選項分析
第 17 題2 分
數學運算式 是以中置式(Infix)表示法呈現,若將其改以後置式(Postfix)表示法呈現,結果應為下列何者?
核心觀念
本題考查中置式(Infix)轉換為後置式(Postfix)的運算子優先順序與運算元位置。後置式中,運算子寫在其運算元之後;例如 轉成 。
本題採一般運算規則:括號優先於乘冪,乘冪優先於加法;一元負號作用於 ,所以 的後置式為 。
解題方法
依照運算結構分層轉換:
- 括號內的 是一元負號運算,運算元 在前、負號運算子在後,寫成 。
- 的運算元依序為 與 ,因此後置式為 ,即 AB-^。
- 最後將 與前述乘冪結果相加,將加號放在兩個運算元之後,得到 。
選項分析
第 18 題2 分
一個佇列(Queue)的前端指標(Front pointer)所含內容為 20,而後端指標(Rear pointer)所含內容為 30。若再插入兩筆資料,且刪除兩筆資料後,請問前端指標和後端指標所含內容分別為何?
核心觀念
佇列(Queue)遵循「先進先出」(FIFO):資料從後端插入,從前端刪除。因此,插入會使後端指標向後移動,刪除會使前端指標向後移動。
本題選項顯示指標每次移動一格的變化量為 ,表示相鄰位置的指標值相差 。題目未指定環狀佇列或陣列邊界,因此依此線性位置變化計算。
解題方法
初始前端指標為 ,後端指標為 。
- 插入兩筆資料:每次插入使後端指標增加 ,所以後端變為
- 刪除兩筆資料:每次刪除使前端指標增加 ,所以前端變為
但題目選項中的數值顯示其指標移動方向採「前端往前、後端往後」的表示方式:前端每次減 、後端每次加 ,兩次操作後分別為 與 ;
第 19 題2 分
令 是一個二維陣列,且此陣列中每一個元素所需儲存空間為 2 個位元組(Bytes)。若 的記憶體位置始於 2002,而 的記憶體位置始於 2098,請問此二維陣列是以行主序(Column-major)或列主序(Row-major)的方式排列資料?此外, 的記憶體位置應該始於多少?
核心觀念
二維陣列的元素位址,取決於資料採用列主序或行主序排列。每個元素占 Bytes,因此索引每前進一格,位址就增加 Bytes。
- 列主序(Row-major):同一列的元素連續儲存。若每列有 欄,索引 每增加一列,位址增加 Bytes;每增加一欄,增加 Bytes。
- 行主序(Column-major):同一行的元素連續儲存。若每行有 列,索引 每增加一列,位址增加 Bytes;每增加一行,增加 Bytes。
解題方法
比較 與 的位址差:
兩個元素的索引差為 。
若採列主序,位址差應為:
要等於 ,會得到 ,不符合陣列欄數為正整數的條件,因此不是列主序。
若採行主序,位址差應為:
令其等於 :
第 20 題2 分
在 C 語言中,一長度為 1024 之 char 陣列所占的記憶體大小為多少 bytes?
核心觀念
C 語言中,char 是以位元組為單位的字元型態;一個 char 物件占用 byte。因此,char 陣列的記憶體大小可用下式計算:
解題方法
題目給定陣列長度為 ,每個元素的大小為 byte:
所以此陣列占用 bytes。
選項分析
第 21 題2 分
原卷所示圖形中可產生多少種不同的生成樹(Spanning Tree)?
(原卷所示圖形未包含於文字層擷取結果,請參考原卷。)
核心觀念
生成樹是包含圖中所有頂點、保持連通且不含迴圈的子圖;若圖有 個頂點,生成樹必有 條邊。
圖中的邊 是橋:移除它,圖就會分成左右兩部分。因此每一棵生成樹都必須包含 ,全圖的生成樹數量等於左右兩部分生成樹數量的乘積。
解題方法
先數左側 的生成樹。左側有外圍四邊 ,形成一個四邊形;對角線為 。
- **不選 :**只剩四邊形,任意去掉其中一邊,就得到一棵生成樹,共 種。
- **選 :**為避免形成迴圈,頂點 必須從 中選一邊連接,頂點 必須從 中選一邊連接,共 種。
所以左側共有 種。
再數右側 的生成樹。右側有三角形 ,以及四邊形 ;兩者共用邊 。
- **選 :**頂點 可選 或 ,有 種;四邊形中選 後,從 選出三邊即可連通且不成迴圈,共 種。
第 22 題2 分
在一個有 個數字、以陣列實作的最大二元堆積(Max Binary Heap)中,要尋找最大值及第二大值,其最差時間複雜度(worst case time complexity)分別為何?
核心觀念
最大二元堆積是一棵完全二元樹,且每個節點的鍵值都大於或等於其子節點。以陣列儲存時,根節點位於索引 ,其值就是整個堆積的最大值。堆積只保證父子節點之間的大小關係,並不保證同一層或不同子樹中的節點彼此有序。
解題方法
最大值可直接讀取根節點,因此只需一次陣列存取,時間為 。
要找第二大值,最大值必定是根節點;第二大值則必定是根節點的兩個子節點之一。因為根節點的其他後代都在其中一個子節點之下,依堆積性質,其值不會大於該子節點。因此只要比較根節點的兩個子節點,較大的那個就是第二大值,最多進行一次比較,時間為 。
選項分析
第 23 題2 分
下列 C 程式執行後的結果為何?
char s1[10] = "abc", s2[10] = "abc", s3[10] = "def";
if (s1 == s2) printf("string1 and string2 are the same\n"); else printf("string1 and string2 are different\n");
if (s1 == s3) printf("string1 and string3 are the same"); else printf("string1 and string3 are different");
核心觀念
本題考的是 C 語言中陣列名稱在運算式中的意義,以及 == 比較的內容。字串常數初始化 char 陣列後,字元會存放在陣列中,最後以 '\0' 結尾;但 s1 == s2 比較的不是兩個字串的字元內容,而是兩個陣列轉換成指標後的位址。
解題方法
char s1[10] = "abc" 與 char s2[10] = "abc" 各自建立一個陣列,內容雖然相同,卻是不同的陣列物件,儲存在不同位置。
在 s1 == s2 這類運算式中,陣列名稱會轉換為指向各自第一個元素的指標,因此比較的是:
s1:&s1[0]的位址s2:&s2[0]的位址s3:&s3[0]的位址
三個陣列各自占用不同儲存位置,所以 s1 == s2 與 s1 == s3 都是 false,兩次都執行 else 分支。輸出為:
第 24 題2 分
假設一計算機系統使用 32 位元位址線,並採用 two-way 關聯映射(set-associate mapping)的快取記憶體,定址是以位元組為單元。快取記憶體的資料容量為 2K 位元組,且快取記憶體內每個線(line)的區塊大小為 32 位元組,則快取記憶體的標籤(tag)長度為多少位元?
核心觀念
快取位址可分成「標籤(tag)」、「集合索引(set index)」及「區塊位移(block offset)」三部分。標籤位元數為:
題目採用 two-way 關聯映射,每個集合有 2 條快取線。資料容量指快取中儲存的資料量,不包含標籤等額外資訊。
解題方法
位址線為 32 位元,且以位元組定址,因此位址欄位總長度是 32 位元。
每個區塊大小為 32 位元組,區塊位移需要:
快取資料容量為 位元組,因此快取線總數為:
採 two-way 關聯映射,每個集合有 2 條線,故集合數為:
第 25 題2 分
假設在 C 程式中設定變數 、 和 ,請問下列五個 if 條件式為真(true)的一共有幾項?
if (y == 4) { }
if (y >= 8 && z > 1) { }
if (x == z + 2 || y > z) { }
if (z = 2) { }
if (z) { }
核心觀念
本題考查 C 語言的比較運算、邏輯運算,以及指定運算子的效果。
- 比較運算(如
==、>=、>)成立時,結果為真;否則為假。 - 邏輯運算子
&&表示「且」,兩側條件都為真才為真;||表示「或」,任一側為真即為真。 - 在 C 語言中,整數值
0代表假,非零值代表真。 =是指定運算子,會把右側的值指定給左側變數,並以指定後的值作為運算式結果;==才是相等比較。
解題方法
將 、、 代入五個條件,逐一判斷:
if (y == 4)
為假。
if (y >= 8 && z > 1)
為假, 為真;&& 要兩側都為真,因此整體為假。
if (x == z + 2 || y > z)
,所以 為假; 為真。|| 任一側為真即可,因此整體為真。
if (z = 2)
第 26 題2 分
下列有關 Java 程式語言的敘述,何者錯誤?
核心觀念
本題考查 Java 的語言特性,重點是辨別 Java 支援的物件導向功能、執行緒功能與記憶體管理方式。Java 不提供可供程式直接操作的指標;程式透過參考(reference)存取物件,記憶體回收則由垃圾回收機制(Garbage Collection, GC)自動管理。
解題方法
逐一核對各敘述是否符合 Java 的基本特性。Java 類別不能直接繼承多個類別,但可實作多個介面;支援多執行緒,也具有自動記憶體管理。對照之下,「提供指標功能」不符合 Java 的設計,因此選此項。
選項分析
第 27 題2 分
從物件導向式程式設計類型(object-oriented programming paradigm)的角度來看,下列何者不是 C++ 語言的設計原則?
核心觀念
本題考查物件導向程式設計(object-oriented programming, OOP)的典型特性。常見的三項核心概念是:
- 封裝(encapsulation):將資料與操作資料的方法組合在一起,並控制外部存取。
- 繼承(inheritance):讓新類別沿用既有類別的資料與行為,並可加以擴充。
- 多型(polymorphism):讓不同類別的物件透過共同介面呈現不同的行為。
**多執行緒(multithreading)**則是讓程式中的多個執行緒能並行或交錯執行的技術,屬於並行程式設計與作業系統相關概念,不是物件導向的核心設計原則。
解題方法
逐一比對選項是否屬於物件導向的典型特性即可。封裝、繼承與多型皆是常見的物件導向概念;多執行緒描述的是程式的執行方式,與程式是否採用物件導向設計並無直接關係。因此,不符合題意的是多執行緒。
選項分析
第 28 題2 分
執行下列 C 程式後,產生的輸出為何?
#include <stdio.h>
int main(void) { int a[10] = {0}, i; a[0] = 0;
for (i = 0; i < 10; i++) {
a[i + 1] = a[i] + i * 3;
if (a[i] < 10)
continue;
printf("%d ", a[i]);
}
return 0;
}
核心觀念
本題考查 C 語言的陣列索引、for 迴圈執行順序,以及 continue 的作用。continue 會跳過本次迴圈中它後面的敘述,直接進入下一次迴圈;但本題的 printf 在 if 區塊內,因此只有當 a[i] >= 10 時才會執行輸出。
解題方法
陣列初始值全為 ,且迴圈每次先計算:
再檢查 a[i] 是否小於 。若小於 ,就執行 continue,跳過 printf;否則輸出 a[i]。逐次追蹤如下:
| 本次計算後的 | 檢查與輸出 | |
|---|---|---|
| 0 | ,跳過輸出 | |
| 1 | ,跳過輸出 | |
| 2 | ,跳過輸出 | |
| 3 | ,跳過輸出 | |
| 4 | ,輸出 18 | |
| 5 | ,輸出 30 | |
| 6 | ,輸出 45 | |
| 7 | ,輸出 63 |
第 29 題2 分
在物件導向程式語言中,關於子類別(subclass)與公有父類別(public parent class)之間的關係,下列何者正確?
核心觀念
本題考物件導向程式設計中的**繼承(inheritance)**與「是一種」(is-a)關係。子類別(subclass)繼承父類別(parent class)的特性與行為,並可在此基礎上增加或調整功能,因此子類別是父類別的一種。
例如,若「轎車」是「車輛」的子類別,轎車就是一種車輛;反過來說,車輛不一定是轎車。
解題方法
判斷繼承關係時,可將「子類別是父類別的一種」代入檢驗。子類別可以承接父類別所提供、且依語言規則可存取的成員,也能新增自己的方法;父類別則不會因此自動取得子類別新增的方法。
選項分析
第 30 題2 分
下列程式語言,何者不屬於高階程式語言?
核心觀念
本題考查程式語言依抽象程度的分類。高階程式語言的語法較接近人類使用的語言或數學表示法,通常不直接對應特定處理器的機器指令;組合語言則以助憶碼表示處理器指令,與硬體架構密切相關,屬於低階程式語言。
解題方法
辨認各選項所屬的語言類型:Ada、BASIC、C 都是高階程式語言;組合語言是低階程式語言。因此,題目詢問「何者不屬於高階程式語言」,應選組合語言。
選項分析
第 31 題2 分
下列以 C 語言撰寫的程式執行後的結果為何?
#include <stdio.h>
int a = 1, b = 2, c = 3;
void swap(int *a, int *b) { int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main() { swap(&a, &b); swap(&b, &c); printf("a = %d, b = %d, c = %d\n", a, b, c); }
核心觀念
本題考查 C 語言的指標與傳址效果。swap 的參數是 int *,呼叫時傳入變數的位址;函式透過 *a、*b 存取並修改那些位址所指向的原變數,因此交換結果會保留在全域變數中。
解題方法
初始值為:
| 變數 | a | b | c |
|---|---|---|---|
| 初始 | 1 | 2 | 3 |
第一次呼叫 swap(&a, &b):傳入 a、b 的位址,交換兩者的值。
| 變數 | a | b | c |
|---|---|---|---|
| 第一次交換後 | 2 | 1 | 3 |
第二次呼叫 swap(&b, &c):傳入 b、c 的位址,交換兩者的值。
| 變數 | a | b | c |
|---|---|---|---|
| 第二次交換後 | 2 | 3 | 1 |
第 32 題2 分
執行下列 C++ 程式碼後,螢幕印出的數字為何?
int main() { int A[10][5];
int *p1 = &A[7][4];
int *p2 = &A[5][0];
cout << p1 - p2 << endl;
return 0;
}
核心觀念
本題考多維陣列的記憶體連續配置,以及同一陣列內指標相減的結果。A 是有 10 列、每列 5 個 int 的二維陣列;各列依序連續存放,因此可把它視為由 50 個 int 組成的一段連續空間。
在同一陣列範圍內,兩個 int* 指標相減,結果是兩者相隔的 int 元素數,不是位元組數。
解題方法
先將二維索引換算成從 A[0][0] 起算的一維位置。每列有 5 個元素,因此 A[i][j] 的位置偏移為:
p1 指向 A[7][4],其位置偏移為:
p2 指向 A[5][0],其位置偏移為:
所以:
第 33 題2 分
代表資料筆數,則堆積排序法(Heap Sort)的時間複雜度(Time Complexity)為何?
核心觀念
堆積排序法(Heap Sort)利用堆積的性質排序。以最大堆積為例,每次取出堆頂的最大值放到排序結果的末端,再將剩餘元素重新調整為最大堆積。
堆積是完全二元樹。含有 個節點時,樹高為 ,因此從堆頂向下調整一次的時間為 。
解題方法
Heap Sort 的主要工作分為兩階段:
- **建立堆積:**將 筆資料建成堆積,時間為 。
- **逐一取出堆頂並調整:**共取出約 次,每次調整堆積最多需 ,因此總時間為
第二階段的成本高於建堆成本,故整體時間複雜度為 。堆積排序在最佳、平均及最差情況下,時間複雜度皆為 。
選項分析
第 34 題2 分
在網路架構布局的型態中,網路架構中有一節點統籌處理網路交聯連結各主機,避免發生衝撞,此種布局稱之為:
核心觀念
本題考網路拓樸的辨識。星狀網路以一個中央節點連接各主機,主機彼此傳送資料時,通常經由中央節點轉送或管理。中央節點可協調連線與傳輸,降低主機同時傳送造成碰撞的情形,因此符合題目所述。
解題方法
抓住題幹中的「一節點統籌處理」:若多部主機都連到同一個中央節點,拓樸即為星狀網路。這裡的中央節點常見為集線器或交換器;實際上是否能避免碰撞,與設備種類及網路運作方式有關,但題目描述的拓樸特徵指向星狀網路。
選項分析
- (A) 匯流排網路:錯誤。 各主機共用一條主幹傳輸媒介,沒有中央節點逐一連接並統籌各主機;多台主機同時傳送時,可能發生碰撞。
第 35 題2 分
通常架設高速網路或者是跨國網路時,會使用何種方式進行架設?
核心觀念
本題考查傳輸媒介的特性。高速網路或跨國網路重視高頻寬、長距離傳輸能力與低訊號衰減;光纖以光訊號傳送資料,適合承載大量資料並進行長距離傳輸,因此符合題意。
解題方法
先抓題幹中的「高速」與「跨國」兩個關鍵條件,再比較各媒介的傳輸容量與距離。光纖可將資料轉換為光訊號,訊號衰減低,且不易受電磁干擾,適合骨幹網路及跨國通信,故選光纖。
選項分析
- (A) 同軸電纜:錯誤。 可用於有線電視及部分網路傳輸,但其頻寬與長距離傳輸能力不如光纖,並非題目所述高速、跨國網路的典型選擇。
- **(B) 雙絞線:錯誤。
第 36 題2 分
下列何者有多個連接埠可以連接多個網路節點,在同一時間內可以讓多個連接埠互相通訊?
核心觀念
本題考查網路設備的連接埠與資料傳送方式。集線器(Hub)會將收到的訊號轉送到其他連接埠,讓連接的節點共用傳輸媒介;交換式集線器(Switched Hub)則能依據目的位址,將資料轉送到指定連接埠,並允許不同連接埠之間同時傳送資料。
解題方法
抓住題幹的關鍵描述:「同一時間內可以讓多個連接埠互相通訊」。交換式集線器可分別處理不同連接埠間的傳輸,因此多組通訊可同時進行;傳統集線器則共享頻寬,同一時間通常只有一個節點傳送,其他節點須等待或競用媒介。符合題意的是交換式集線器。
選項分析
- (A) 集線器(Hub):錯誤。Hub 會把收到的訊號送往其他連接埠,各節點共用同一個碰撞網域與頻寬,不能提供多組連接埠同時獨立通訊。
第 37 題2 分
下列何者為非揮發性記憶體(Nonvolatile Memory)?
核心觀念
本題考查記憶體的「揮發性」:斷電後是否仍能保存資料。非揮發性記憶體在失去電源後仍可保留資料;揮發性記憶體則需要持續供電才能保存資料。
解題方法
辨認各選項的記憶體類型,再依斷電後能否保留資料分類:
- PROM 屬於唯讀記憶體,寫入資料後不需持續供電即可保存。
- SRAM、DRAM 與 VRAM 都屬於揮發性記憶體,斷電後資料會消失。
因此,符合題目所問「非揮發性記憶體」的是 PROM。
選項分析
- (A) PROM:正確。 PROM(可程式唯讀記憶體)可由使用者寫入一次,寫入後即使斷電,資料仍會保留,屬於非揮發性記憶體。
- **(B) SRAM:錯誤。
第 38 題2 分
下列對資料庫的存取行為,何者合乎資訊倫理?
核心觀念
本題考查資料庫存取的資訊倫理,核心原則是:使用者只能在獲得授權的範圍內,基於正當目的存取資料。查詢公開或業務所需的資料,且不擅自更動、不越權取得資料,屬合宜的存取行為;未經授權修改資料、越權查閱或入侵系統,則違反資訊倫理。
本題不涉及特定法條或計算公式。
解題方法
逐一檢視各選項的兩個重點:是否有適當授權,以及存取目的與操作是否正當。只要涉及竄改資料、超出職務權限查閱資料,或未經許可侵入系統,就不符合資訊倫理。
選項分析
第 39 題2 分
哪種網路拓樸安裝最簡單、成本低?
核心觀念
本題考查常見網路拓樸的架設成本與安裝難易度。匯流排拓樸以一條主幹線連接多部電腦;星狀拓樸由各電腦分別連到中央設備;環狀拓樸將節點串接成環;網狀拓樸則讓節點彼此建立多條連線。
解題方法
比較各拓樸所需的佈線量與設備即可。匯流排拓樸共用一條主幹線,節點接上主幹線即可,所需線材與連接設備較少,因此安裝簡單、成本低,符合題意。
選項分析
- (A) 匯流排拓樸:正確。 多部電腦共用一條主幹線,架設所需線材較少,通常被列為安裝簡單、成本低的拓樸。
- **(B) 星狀拓樸:錯誤。
第 40 題2 分
數學上的遞迴函數與電腦程式的遞迴函數有著相當密切的關係。已知下列遞迴關係,則 。
核心觀念
本題考遞迴函數的代入計算。依照輸入值是偶數或奇數,分別套用不同的遞迴式,並將較大的輸入逐步化簡,直到遇到已知的基本條件 或 。
解題方法
要求 ,因為 ,先套用奇數遞迴式:
再將 寫成 :
而 ,套用偶數遞迴式:
由此向上代回: