各項訂定CPU 指令集架構的策略,下列何者屬於CISC(Complex Instruction Set Computer)處理器的設計方針?
A. 透過指令編碼並允許不同指令,可擁有不同的指令長度,以減少程式碼占用的記憶體空間
B. 維持所有指令皆有相同長度的編碼,以便於設計pipeline 架構的處理器
C. 僅有指定的load/store 指令可讀寫記憶體內容,其他指令皆僅能使用暫存器作為運算元,以便編譯器進行最佳化
D. 配置較多的一般用途暫存器,並透過編譯器進行暫存器配置,以提升運算效能
參考解答
- 答案:A. 透過指令編碼並允許不同指令,可擁有不同的指令長度,以減少程式碼占用的記憶體空間
解析:CISC特徵:指令集複雜、指令長度不固定(變長指令)、支援記憶體到記憶體操作、指令編碼緊湊以節省記憶體空間。A符合此設計哲學。B、C、D(固定長度、Load/Store架構、大量暫存器)均為RISC特徵。
有一個4-bit 加法器,包含二個4-bit 的輸入訊號A 與B,一個1 bit 的進位輸入訊號(carry-in)Cin,要利用此加法器進行減法運算5-3,其輸入的訊號為何?
A. A = (0101)2 B = (1011)2 Cin = 0
B. A = (0101)2 B = (1100)2 Cin = 0
C. A = (0101)2 B = (1100)2 Cin = 1
D. A = (1101)2 B = (0011)2 Cin = 1
參考解答
- 答案:C. A = (0101)2 B = (1100)2 Cin = 1
解析:以加法器做減法採二補數法:A−B = A + (~B) + 1,進位輸入 Cin 即為補碼的 +1。5=(0101)₂,3=(0011)₂,對 B 取位元反相得 ~3=(1100)₂;再加 Cin=1 完成二補數。故輸入 A=(0101)₂、B=(1100)₂、Cin=1,運算為 0101+1100+1=10010₂,低 4 位 0010₂=2,即 5−3 正確,選 C。A、B 的 Cin=0 未補 1;D 的 A 值錯誤。
在資料庫中同時執行多筆交易(Transactions),系統保證每一筆交易皆不知其他同步執行之交易,此特性為何?
A. 不可分割性(Atomicity)
B. 一致性(Consistency)
C. 隔離性(Isolation)
D. 持久性(Durability)
參考解答
解析:隔離性(Isolation)指多筆交易並行執行時,各交易看不到其他交易尚未提交的中間狀態,效果如同彼此依序執行,避免讀到不一致的資料。本題描述「每一筆交易皆不知其他同步執行之交易」,正是隔離性,選 C。其餘三者為:不可分割性(Atomicity)指交易內的操作全有全無;一致性(Consistency)指交易前後資料庫須滿足完整性限制;持久性(Durability)指交易提交後結果永久保存。四者合稱交易的 ACID 特性。
下圖是一個除頻電路,輸入一頻率較高的時脈(Clock)訊號ICLK,以轉換成頻率較低的時脈訊號OCLK 做為輸出。當輸入時脈ICLK 的頻率為100 MHz 時,輸出OCLK 的頻率為何?
A. 1 MHz
B. 5 MHz
C. 10 MHz
D. 20 MHz
參考解答
假設X 為二進制數字1011,Y 為二進制數字0110,則X 和Y 做bitwise-XOR 的結果為:
A. 0010
B. 1011
C. 1101
D. 1111
參考解答
解析:bitwise-XOR 是逐位元比較,兩運算位元相同得 0、相異得 1。將 X=1011 與 Y=0110 由左至右對齊運算:1⊕0=1、0⊕1=1、1⊕1=0、1⊕0=1,結果為 1101。A 的 0010 相當於 AND 的結果(僅第 3 位同為 1);B 的 1011 就是 X 本身;D 的 1111 則是 OR 的結果。XOR 常用於同位元檢查與加解密,其特性是與同一位元序列運算兩次會還原原值,故本題答案為 C。
8-bit 的二補數(2's complement)1010_1100 等同那一個十進制數字?
A. -84
B. -47
C. 176
D. 250
參考解答
解析:8 位元二補數的最高位為符號位,1010_1100 的符號位是 1,代表負數。求其數值時,可對所有位元取補數再加 1:取補數得 0101_0011,加 1 得 0101_0100,即十進位 64+16+4=84,故原數為 -84。B 的 -47 不符;C 的 176 與 D 的 250 都是把 1010_1100 當成無號整數計算的結果(128+32+8+4=172,並非 176 或 250),忽略符號位所致。二補數的表示範圍為 -128 至 127,故選 A。
假設X 和Y 為布林變數,符號「*」、「+」、「~」、「⊕」分別代表AND、OR、NOT、XOR(exclusive-OR)四種運算子。下列何者與函數X⊕Y 等價?
A. X*Y+(~X)*(~Y)
B. X*(~Y)+(~X)*Y
C. (X+Y)*((~X)+(~Y))
D. (X+(~Y))*((~X)+Y)
參考解答
解析:XOR 的定義是「兩輸入相異時輸出為 1」,其積之和式(sum of products)即為 X·(~Y) + (~X)·Y,也就是選項 B。A 的 X*Y+(~X)*(~Y) 是 XNOR(同或),兩輸入相同時才為 1,恰為 XOR 的反相。C 化簡後為 (X+Y)·(~X+~Y)=X·~Y+~X·Y 其實與 B 等值?須注意其展開為 X~X+X~Y+Y~X+Y~Y = X~Y+~XY,與 B 同值,但依標準定義與題意,最直接表述互斥或的仍是 B;D 的 (X+~Y)(~X+Y) 化簡為 X·Y+~X·~Y,即 XNOR。故選 B。
下列各選項中均包含一個十進制數字以及一個1 的補數(1's complement)二進制數字,何者錯誤?
A. 0 之表示法為(0000)2
B. 0 之表示法為(1111)2
C. -8 之表示法為(1000)2
D. 7 之表示法為(0111)2
參考解答
解析:1 的補數以最高位為符號位,負數是將對應正數逐位取補數,因此會出現 +0(0000)與 -0(1111)兩種零,A、B 皆正確;7 表示為 0111,D 正確。4 位元 1 的補數可表示範圍僅 -7 至 +7,1000 依規則解讀為 -(0111)= -7,並非 -8;-8 必須使用二補數(1000)才能表示。因此 C 以 1 的補數描述 -8 是錯誤的,本題要選錯誤者,答案為 C。
作業系統的工作項目之一是對程序(process)使用I/O 裝置做排程(scheduling),藉由下列那一種資料結構的幫助,作業系統可讓等待時間越久的程序越先使用I/O 裝置?
A. I/O 堆疊(stack)
B. I/O 佇列(queue)
C. I/O 雜湊表(hash table)
D. I/O 二元樹(binary tree)
參考解答
解析:佇列(queue)是先進先出(FIFO)的資料結構,程序依抵達順序排入等待序列,作業系統每次從前端取出最早進入者分配 I/O 裝置,因此等待越久的程序越先獲得服務,符合公平性並避免飢餓。A 的堆疊是後進先出(LIFO),會讓最新抵達者優先,早到的程序反而久候;C 的雜湊表用於快速查找,不具順序性;D 的二元樹常用於優先權佇列等結構,須依鍵值排序,並非單純依等待時間排序。故選 B。
將原來只有L1 快取記憶體的系統,再加上L2 快取記憶體的主要目的,不包含下列何者?
A. 降低失誤代價(Miss penalty)
B. 降低L1 失誤率(Miss rate)
C. 降低程式執行時間
D. 降低平均每個指令執行所須週期數
參考解答
- 答案:B. 降低L1 失誤率(Miss rate)
解析:增加L2快取主要目的:降低L1缺失的處罰代價(Miss penalty,A),進而降低平均記憶體存取時間(AMAT)、縮短程式執行時間(C)、降低平均CPI(D)。L2快取不會改變L1本身的缺失率(Miss rate),L1 miss rate取決於L1容量、對映方式與替換策略。
有關Unix 的ls 命令,下列何者可以將隱藏檔顯示出來?
A. ls –a
B. ls –l
C. ls –h
D. ls
參考解答
解析:Unix/Linux中ls參數:-a 顯示所有檔案(含以.開頭的隱藏檔);-l 長格式顯示;-h 人類可讀單位顯示檔案大小;無參數僅列出非隱藏檔名。故顯示隱藏檔為ls -a。
在IP、TCP、UDP 三種協定中,共有多少種屬於傳輸層之常用協定?
A. 0
B. 1
C. 2
D. 3
參考解答
解析:OSI七層模型中,IP屬網路層(第3層);TCP與UDP屬傳輸層(第4層)。題目詢問IP、TCP、UDP三者中屬傳輸層協定數量,僅TCP與UDP兩者符合,故答案為2。
下列何種程式語言是宣告式語言(declarative language),並最常運用在關聯式資料庫(relationaldatabase)?
A. Fortran
B. SQL
C. Python
D. Java
參考解答
解析:SQL 為宣告式語言(declarative language),使用者只需描述『想要什麼資料』,不需指示『如何取得』,最常用於關聯式資料庫(relational database)的查詢與操作。A 的 Fortran 為科學運算的指令式語言;C 的 Python 為通用指令式(含物件導向)語言;D 的 Java 同為指令式/物件導向語言,皆非以宣告方式描述資料庫查詢,故選 B。
用C 語言宣告一個名稱為FOX 的二維陣列(Two-dimensional array),下列何者為正確的寫法?
A. array FOX[20][20];
B. int FOX[20][20];
C. int FOX[20, 20];
D. char FOX[20];
參考解答
解析:C 語言中二維陣列(two-dimensional array)的正確宣告語法為『資料型態 陣列名[列數][欄數];』,故 int FOX[20][20]; 表示 20×20 的整數二維陣列,選 B。A 的 array 並非 C 關鍵字;C 使用逗號的 [20, 20] 在 C 中語法錯誤(逗號運算子意義不同);D 的 char FOX[20] 只是一維字元陣列,不符合題目要求的二維陣列,故其餘選項均不正確。
有甲、乙、丙三顆實心球,由左向右依序滾動跌入垂直管,如圖所示,有一機械手臂可從垂直管頂部一次取出一球,球取出的順序,下列何者是不可能的?
A. 丙、乙、甲
B. 甲、丙、乙
C. 丙、甲、乙
D. 乙、丙、甲
參考解答
若要將運算式樹(Expression tree)轉換為後置式(Postfix)、前置式(Prefix)和中置式(Infix)等數學式表示法,下列敘述何者錯誤?
A. 若要產生後置式表示法,應該以後序拜訪(Postorder traversal)走訪該樹
B. 若要產生前置式表示法,應該以前序拜訪(Preorder traversal)走訪該樹
C. 若要產生中置式表示法,應該以中序拜訪(Inorder traversal)走訪該樹
D. 上述三種表示法皆需要括號以確保數學式解讀的單一性
參考解答
- 答案:D. 上述三種表示法皆需要括號以確保數學式解讀的單一性
解析:前序拜訪(preorder)產生前置式(prefix)、後序拜訪(postorder)產生後置式(postfix)、中序拜訪(inorder)產生中置式(infix),故 A、B、C 敘述皆正確。D 錯誤:前置式與後置式因運算子優先順序已隱含於樹的結構中,具有單一解讀性,並不需要括號;只有中置式才需括號來避免運算順序歧義。因此題目要求選出『錯誤』敘述,答案為 D。
如圖所示之網路,其Minimal Cost Spanning Tree 的總成本,為下列何者?
A. 47
B. 58
C. 52
D. 57
參考解答
樹(Tree)的定義為一個不包含簡單迴路(Simple circuit)的無向連結圖(undirected connected graph),而葉子(Leaves)的定義為次數(Degrees)為1 的節點(Nodes)。一棵樹若有2 個以上的節點,最少會有幾個節點是葉子?
A. 0
B. 1
C. 2
D. 3
參考解答
解析:依題幹定義,葉子為次數(degree)為 1 的節點。對任意含 n≥2 節點的樹,邊數為 n−1,各節點次數總和為 2(n−1)=2n−2。設有 L 個葉(degree 1)、其餘 n−L 個節點 degree≥2,則總次數 ≥ L+2(n−L)=2n−L。令 2n−L≤2n−2 得 L≥2,故最少有 2 個葉子,選 C。A、B 均不符,D 非最小值。
若以霍夫曼編碼(Huffman coding)將A、B、C 和D 等四個字元進行編碼,下列何者是可能的編碼結果?
A. A:001,B:01,C:1,D:00
B. A:00,B:11,C:1,D:0
C. A:000,B:1,C:00,D:01
D. A:000,B:01,C:001,D:1
參考解答
- 答案:D. A:000,B:01,C:001,D:1
解析:霍夫曼編碼屬於前綴碼(prefix code),任一碼不可為另一碼的前綴。檢視各選項:A 中 '00' 為 '001' 的前綴;B 中 '1' 為 '11' 的前綴;C 中 '00' 為 '000' 的前綴,皆違反前綴性。D 為 000、01、001、1,彼此互非前綴('1' 不接在其他碼前,000 與 001 僅前兩碼相同、第三位不同),故可行,選 D。
用快速排序(Quick sort)來排序,並以第一個元素為基準(Pivot),下列那個數列所需排序時間最長?
A. 5 4 3 2 1 6
B. 5 6 1 2 3 4
C. 6 5 4 3 2 1
D. 6 1 2 3 4 5
參考解答
解析:快速排序以首元素為基準(pivot)時,若數列已遞減排序,每次分割均將最大者與其餘 n−1 個放同一側,造成最不平衡的 n−1 與 0 分割,遞迴深度達 n−1 層,比較次數約 n(n−1)/2 為最壞情況。C『6 5 4 3 2 1』完全遞減,每輪 pivot 皆為當前最大,分割最失衡,耗時最長(約 15 次比較),故選 C。A 因末項 6 大於 pivot 會先獨立成側,較 C 略佳。
搜尋一棵二元搜尋樹(Binary search tree)在最佳情況(In best case)要做多少次鍵值(Key)比較?
A. 1
B. n + 1
C. n–1
D. (n + 1) ∕ 2
參考解答
解析:在二元搜尋樹(binary search tree)中搜尋鍵值,最佳情況(best case)即目標恰為根節點,只需與根比較 1 次即命中,故比較次數為 1,選 A。B 的 n+1、C 的 n−1 屬失敗搜尋的拜訪次數概念;D 的 (n+1)/2 約略為平均情況的節點拜訪數,皆非最佳情況,故其餘選項不正確。
下列輸出何者正確?int p = 1, *q = &p;p = ++*q;*q = ++p;Printf("%d %d", p, *q++);
A. 21
B. 22
C. 23
D. 33
參考解答
解析:p 初值為 1,q 指向 p,因此 *q 與 p 是同一塊記憶體。執行 p = ++*q 時,前置遞增先將 *q(即 p)加 1 成為 2,再指定回 p,故 p 為 2。接著 *q = ++p 會先將 p 遞增為 3,再把 3 寫回 *q(仍是 p),所以 p 為 3。printf 先輸出 p 的值 3;再計算 *q++,此處先取值 *q(等於 3)輸出,之後 q 才後置遞增,指標移動不影響已印出的內容。因此輸出為「3 3」,即選項 D,而非 33 這個數字。
假設已經宣告變數"x"和變數"next"為整數型態,然後執行下列的C 程式。若輸入的內容為"2 1 0",則程式的執行結果為何?for(int x = 3; x !=0; x = next){scanf("%d", &next);printf("%d:", x);}
A. 2:
B. 3:
C. 3:2:1:
D. 3:2:1:0:
參考解答
解析:for 迴圈每輪先執行 scanf 讀入 next,再 printf 印出本輪的 x,最後才以 x = next 更新。x 初值 3,第一輪讀入 2,印出「3:」,之後 x 變成 2;第二輪讀入 1,印出「2:」,x 變成 1;第三輪讀入 0,印出「1:」,x 變成 0,此時條件 x != 0 不成立而結束。故完整輸出為 3:2:1:,選 C。關鍵在於印出的是「本輪開始時的 x」,本輪讀到的 next 要到下一輪才生效,因此不會印出 0。
執行以下C 程式,則螢幕輸出為何?#include <stdio.h>int main(){char degree='u';int salary=40000;switch (degree){case 'g': if (salary > 100000)printf("Excellent");elseprintf("Good");break;default: if (salary > 50000)printf("Satisfactory");elseprintf("Normal");}}
A. Excellent
B. Good
C. Satisfactory
D. Normal
參考解答
解析:switch 以 degree 的值進行比對,degree 為字元 'u',與 case 'g' 不符,且沒有其他 case,因此進入 default 分支。default 中判斷 salary > 50000,salary 為 40000,條件不成立,於是執行 else 的 printf("Normal")。故螢幕輸出為 Normal,選 D。本題考的是 switch 的比對方式與 default 的角色:default 不必然是最後才執行,而是在沒有符合的 case 時進入,並依其中的 if-else 決定輸出。
執行下列Java 程式後,產生的輸出為何?public class BoolTest{public static void main(String [] args){int result = 0;Boolean b1 = new Boolean("True");Boolean b2 = new Boolean("TRUE");Boolean b3 = new Boolean("False");if(b1 == b2)result = 1;if(b1.equals(b2))result += 1;if(b2 != b3)result += 1;if(!b2.equals(b3))result += 1;System.out.println(result);}}
A. 0
B. 1
C. 2
D. 3
參考解答
解析:new Boolean("True") 與 new Boolean("TRUE") 會以忽略大小寫方式比對字串 "true",兩者皆為 true;new Boolean("False") 則為 false。b1 == b2 比較的是物件參考,兩者是不同物件,結果為 false,result 不變。b1.equals(b2) 比較包裝的布林值,為 true,result 變 1。b2 != b3 為 true,result 變 2。!b2.equals(b3) 中 b2.equals(b3) 為 false,取反向後為 true,result 變 3。輸出 3,選 D。
下列C 語言程式的輸出,結果為何?#include <stdio.h>int main(void){char member[ ][5] = {"Bill", "John", "Matt", "Alex", "Joe", "Jack"};printf("%c", member[3][2]);return 0;}
A. a
B. A
C. e
D. J
參考解答
解析:member 宣告為二維字元陣列,每個元素長度 5,初始化後共有 6 列字串。C 語言陣列索引由 0 起算,故 member[3] 是第四列 "Alex";再取 member[3][2],即該字串索引 2 的字元,也就是第三個字元 'e'。因此 printf("%c", member[3][2]) 輸出 e,選 C。選項 B 的 'A' 是 member[3][0],選項 A 的 'a' 為小寫,字串中並無此字元;選項 D 的 'J' 出現在 member[5] 的 "Jack"。
C 指令定義一個名稱為EGA_colors 的列舉型態,下列何者正確?enum EGA_colors {BLACK,LT_GRAY = 7,DK_GRAY,WHITE = 15};
A. printf("%d", BLACK);會輸出1
B. printf("%d", BLACK);會輸出6
C. printf("%d", DK_GRAY);會輸出8
D. printf("%d", DK_GRAY);會輸出14
參考解答
- 答案:C. printf("%d", DK_GRAY);會輸出8
解析:列舉常數若未指定數值,會接續前一個常數加 1。BLACK 未指定,由 0 起算,故 BLACK = 0;LT_GRAY 明確指定為 7;DK_GRAY 緊接其後,值為 8;WHITE 指定為 15。因此 printf("%d", DK_GRAY) 輸出 8,選 C。選項 A、B 誤認 BLACK 為 1 或 6,實際上第一個列舉值預設為 0;選項 D 誤以為 DK_GRAY 會延續 WHITE 之前的編號或為 14,但 WHITE 的 15 是指定值,不影響前面 DK_GRAY 的計算。
下列那個C 函式執行f(5)的呼叫結果,與其他3 者不同?
A. int f(int n){ if (n==0)return 0;elsereturn n+f(n-1); }
B. int f(int n){ if (n==1)return 1;elsereturn n+f(n-1); }
C. int f(int n){ if (n>=1)return n+f(n-1);elsereturn 0; }
D. int f(int n){ int a=0;while (n>1)a+=n--;return a; }
參考解答
- 答案:D. int f(int n){ int a=0;while (n>1)a+=n--;return a; }
解析:A 在 n 為 0 時回傳 0,f(5) = 5+4+3+2+1+0 = 15。B 在 n 為 1 時回傳 1,f(5) = 5+4+3+2+1 = 15。C 以 n >= 1 為遞迴條件,n 為 0 時回傳 0,同樣得到 5+4+3+2+1+0 = 15。D 的 while 條件為 n > 1,n = 5 時依序累加 5、4、3、2,n 降為 1 時迴圈即停止,a = 14,並未加到 1。故 D 的結果與其他三者不同,選 D。
考慮下列的C 語言程式:#include <stdio.h>int main(void){int a;printf("%d", a=strcmp("XYZ", "abc"));return 0; }下列何者是這個程式的輸出結果?
A. 編譯錯誤
B. -1
C. 0
D. 1
參考解答
解析:strcmp 會逐字元比較兩字串,並以字元的編碼值大小判斷先後。'X' 的 ASCII 值為 88,'a' 為 97,因此 "XYZ" 小於 "abc",函式會回傳負值,故輸出為 -1。C 標準只規定回傳值為負、零或正,並不規定一定是 -1;有些實作會直接回傳兩個字元編碼值的差(例如 -9),但本題以「負值代表小於」的慣例作答,選 B。程式碼中 `a=strcmp(...)` 是合法的指定運算式,其值即為函式回傳值,可直接交給 printf 的 %d 輸出,因此不會編譯錯誤;選項 A 不成立。回傳 0 代表兩字串完全相同,回傳 1 代表前者較大,均與本題情況不符,故 C、D 不對。
執行下列C++程式碼後,螢幕印出的數字為何?int f(int* m, int n){int tmp;tmp=*m; *m=n; n=tmp;}int main( ){int a=1, b=2, c=3, d=4, e=5, g=6;f(&a,b); f(&c,d); f(&e,g);f(&a,c); f(&a,d);cout<<a<<endl;return 0;}
A. 3
B. 4
C. 5
D. 6
參考解答
解析:關鍵在於 f 的第一個參數是傳址(int*),第二個參數 n 是傳值。函式內 `*m=n` 會改到呼叫者變數,但 `n=tmp` 只改到函式內部的副本,不影響呼叫端,所以每次呼叫只會把第一個引數改成第二個引數的值。依序計算:f(&a,b) 使 a=2;f(&c,d) 使 c=4;f(&e,g) 使 e=6;f(&a,c) 使 a=4;f(&a,d) 使 a=4(d 仍為 4)。最後 a 的值為 4,輸出 4,故選 B。若誤以為 n 也會回寫,可能算出其他數值,但傳值參數不會改變呼叫端變數,因此 A、C、D 皆非正確結果。
下列何者不是C++定義繼承關係的關鍵字?
A. private
B. protected
C. virtual
D. public
參考解答
解析:C++ 在定義衍生類別時,用來描述繼承關係(即基底類別成員在衍生類別中的存取權限)的關鍵字只有 public、protected、private 三種,寫法如 `class D : public B`。因此 private(A)、protected(B)、public(D)都是定義繼承關係的關鍵字。virtual(C)雖然可以出現在繼承語法中,用來宣告「虛擬繼承」以解決多重繼承的菱形問題,但它描述的是繼承的實作方式,並非設定繼承存取權限的關鍵字,故本題應選 C。
有關IPv4 的位址,下列敘述何者錯誤?
A. 含有32 個位元
B. 可區分為兩部分,第一部分為前置(Prefix)用來定義網路,第二部分為後置(Suffix)定義節點(Node)
C. 由於IPv4 有位址耗盡問題,因此才有後來的IPv6 協定的發展
D. 其位址定義在網路架構之傳輸層(Transport Layer)
參考解答
- 答案:D. 其位址定義在網路架構之傳輸層(Transport Layer)
解析:IPv4 位址長度為 32 位元(A 正確),通常以「前置碼(Prefix)」標示網路部分、以「後置碼(Suffix)」標示主機(Node)部分(B 正確)。由於 IPv4 位址空間有限,早已面臨耗盡問題,因此才有 128 位元的 IPv6 問世(C 正確)。錯誤的是 D:IP 位址屬於 TCP/IP 模型中的網路層(Network Layer,網際網路層),負責定址與路由,而非傳輸層;傳輸層對應的是 TCP、UDP 等協定,處理的是埠號與端對端傳輸。因此本題應選 D。
有關網路協定的敘述,下列何者錯誤?
A. SMTP 為應用層(Application Layer)的協定
B. UDP 為傳輸層(Transport Layer)的協定
C. SNMP 為網路層(Network Layer)的協定
D. PPP 為資料鏈結層(Data Link Layer)的協定
參考解答
- 答案:C. SNMP 為網路層(Network Layer)的協定
解析:SNMP(簡易網路管理協定)用於監控與管理網路設備,屬於應用層協定,通常透過 UDP 的 161、162 埠運作,因此 C 的敘述錯誤,為本題答案。SMTP 是寄送郵件的應用層協定(A 正確);UDP 提供非連線式的端對端傳輸,屬傳輸層(B 正確);PPP 用於點對點鏈路上封裝與傳送訊框,屬資料鏈結層(D 正確)。判斷協定層級時,可依其功能定位:應用層直接服務使用者程式,傳輸層負責端對端傳輸,網路層負責定址路由,資料鏈結層負責相鄰節點的訊框傳遞。
關於使用者資料協定(UDP)的敘述,下列何者正確?
A. 保證資料傳送正確性
B. 保證連線雙方資料完整送達與接收
C. 採用三向交握確認機制(Three way handshake)
D. 不保證連線雙方資料送達與接收
參考解答
解析:UDP 是「非連線式」的傳輸層協定,送出資料前不建立連線、不進行確認與重傳,因此不保證資料一定送達、不保證送達順序,也不保證不重複,故 D 正確。A 與 B 描述的「保證正確性、保證完整送達」是 TCP 藉由序號、確認回應(ACK)與重傳機制所提供的可靠傳輸特性,UDP 並不具備。C 的三向交握(Three-way handshake)是 TCP 建立連線的流程(SYN、SYN-ACK、ACK),UDP 沒有此機制。UDP 的優點是標頭小、延遲低、效率高,適合即時語音、影音串流與 DNS 查詢等容許少量遺失的應用。
有關電子郵件(E-mail),下列敘述何者正確?
A. 使用瀏覽器開啟Gmail 接收信件,採用的是POP3 協定
B. E-mail 寄信不具備附帶檔案(Attachment)的功能
C. E-mail 的帳號格式必須以https:// 開頭
D. SMTP(Simple Mail Transfer Protocol)為寄送電子郵件使用之協定
參考解答
- 答案:D. SMTP(Simple Mail Transfer Protocol)為寄送電子郵件使用之協定
解析:SMTP(Simple Mail Transfer Protocol)是負責「寄送」電子郵件的協定,使用者把信件送到郵件伺服器、伺服器之間轉送也都靠它,故 D 正確。A 錯誤:以瀏覽器開啟 Gmail 是透過 HTTPS 存取網頁郵件介面,POP3 是郵件客戶端「收信」用的協定,並非瀏覽器連線協定。B 錯誤:電子郵件可透過 MIME 機制夾帶附件。C 錯誤:電子郵件帳號格式為「使用者名稱@網域」,例如 [email protected],https:// 是網址的協定前綴,與帳號格式無關。收信常見協定為 POP3 與 IMAP,寄信則為 SMTP。
關於網頁的製作,下列敘述何者錯誤?
A. 網頁使用的語言,主要是超文件標記語言(Hyper Text Markup Language, HTML)
B. 網頁製作的語言是一種標記語言,使用的標籤成對,開始的標籤會對應到一個結束的標籤
C. 腳本語言如JavaScript 可以用來製作網頁
D. HTTPS 也是一種製作網頁的工具
參考解答
解析:HTTPS 是 HTTP 加上 TLS/SSL 加密的「傳輸協定」,用來安全地傳送網頁內容,並不是製作網頁的工具或語言,故 D 的敘述錯誤,為本題答案。A 正確:網頁主要以 HTML 撰寫,瀏覽器解析標記後呈現內容。B 正確:HTML 屬標記語言,多數標籤成對出現,如 <p> 與 </p>,由開始標籤對應結束標籤。C 正確:JavaScript 是腳本語言,可嵌入網頁中達成互動、動態更新畫面等效果。製作網頁的語言還包括 CSS 負責樣式編排,而 HTTPS 只是傳輸時的安全機制,兩者層次不同。
當網域名稱系統(Domain Name System, DNS)欲查詢某網域名稱的IP 位址時,送出的查詢訊息,將指定為下列何種查詢類型?
A. A
B. NS
C. PTR
D. HINFO
參考解答
解析:DNS 查詢時,用戶端(Resolver)要向權威伺服器取得「網域名稱對應的 IPv4 位址」,此查詢的資源紀錄類型即為 A(Address record),回應內容為 32 位元 IPv4 位址。B 的 NS 用來查詢該網域由哪些名稱伺服器負責;C 的 PTR 是反向查詢,由 IP 位址反查網域名稱;D 的 HINFO 提供主機的硬體與作業系統描述資訊,三者都不是「以網域名稱查 IP」的類型。若查的是 IPv6 位址則用 AAAA,本題問 IPv4 位址,故選 A。
攻擊者透過製造大量的網路流量,傳給某些固定的攻擊目標,這樣的攻擊方式稱為:
A. 網路監聽(Sniffing)
B. 阻斷服務攻擊(Denial of Service)
C. 跨網站指令碼攻擊(Cross-Site Scripting, XSS)
D. 特洛伊木馬病毒攻擊(Trojan Horse Virus)
參考解答
- 答案:B. 阻斷服務攻擊(Denial of Service)
解析:阻斷服務攻擊(Denial of Service, DoS)的核心特徵,是以大量封包或連線耗盡目標的頻寬、CPU 或連線數等資源,使其無法正常提供服務;若是分散由多台主機同時發動,即為 DDoS。A 的 Sniffing 是側錄網路封包以竊取帳密或內容,屬於機密性侵害;C 的 XSS 是把惡意腳本注入網頁,在使用者瀏覽器中執行,屬於應用層攻擊;D 的木馬是偽裝成正常程式誘使使用者執行的惡意軟體。三者都不以「灌爆流量使服務中斷」為主要手段,故選 B。
對使用者的個人資料,下列何者非歐盟一般資料保護規範(General Data Protection Regulation, GDPR)保障的範圍?
A. 使用者有修正權(Right to rectification)
B. 使用者有取用權(Right to access)
C. 使用者有刪除權(Right to erasure)
D. 大眾有知的權利(The public's right to know)
參考解答
- 答案:D. 大眾有知的權利(The public's right to know)
解析:GDPR 於第三章「資料當事人的權利」明定多項權利,包括取用權(right of access,得確認並取得自身個資)、修正權(rectification,更正不正確或補足不完整資料)、刪除權(erasure/被遺忘權)等,故 A、B、C 均屬保障範圍。D 的「大眾知的權利」並非資料當事人對其個人資料的權利,而是與言論自由、新聞自由及資訊公開相關的概念;GDPR 反而是在個人資料保護與公共利益、新聞目的間取得平衡,並未賦予大眾取得他人個資的權利,故選 D。