某處理器具有32-bit 記憶位址,該處理器上具有一32K Byte 大小的4-way set associative cache,每個cache block 為16 byte。該cache 的address tag 寬度為何?
A. 17
B. 18
C. 19
D. 20
參考解答
解析:先算 block 數量:32KB ÷ 16B = 2048 個 block。4-way set associative 表示每個 set 有 4 個 block,因此 set 數 = 2048 ÷ 4 = 512 = 2^9,index 需 9 位元。block offset 為 log2(16) = 4 位元。位址共 32 位元,扣掉 index 與 offset 即為 tag 寬度:32 − 9 − 4 = 19 位元,故選 C。若誤把 2048 當成 set 數(8 位元)會得 20;若漏算 offset 會得 23 或 24,皆不在選項中。
將十進制數字105 轉換成二進制表示,答案為:
A. 0100_1101
B. 0110_1001
C. 1100_1011
D. 1101_1101
參考解答
解析:以 2 的冪次分解 105:105 = 64 + 32 + 8 + 1 = 2⁶ + 2⁵ + 2³ + 2⁰,故其二進位為 0110_1001,答案 B。驗算:0×128 + 1×64 + 1×32 + 0×16 + 1×8 + 0×4 + 0×2 + 1×1 = 105。A 的 0100_1101 為 77;C 的 1100_1011 為 203;D 的 1101_1101 為 221,皆不等於 105。轉換時可由高位往低位依序除以 2 取餘數,或直接以 2 的冪次相加檢驗。
使用多個處理器,在同一時間可以在各自處理器上運行程序這種作法稱為:
A. Multiprocessing
B. Multiprogramming
C. Multitasking
D. Multithreading
參考解答
解析:Multiprocessing 指使用多個處理器同時運行程序;Multiprogramming 是單一處理器交替執行多程式;Multitasking 是任務切換;Multithreading 是單一程序多執行緒。
下列何者不屬於馮紐曼(von Neumann)模型定義下的子系統?
A. 主機版(Motherboard)
B. 算術邏輯單元(Arithmetic Logic Unit, ALU)
C. 記憶體(Memory)
D. 控制單元(Control)
參考解答
解析:馮紐曼模型將電腦區分為五大子系統:算術邏輯單元(ALU)、控制單元、記憶體、輸入裝置與輸出裝置,其中 ALU 與控制單元合稱中央處理器。主機板只是承載 CPU、記憶體與各項介面卡的電路板與匯流排平台,屬於硬體實現的載體,並非馮紐曼模型所定義的功能性子系統,故選 A。B、C、D 皆為模型明定的組成部分。
某一多工器(multiplexer)有4 條選擇控制線,對此多工器敘述,下列何者正確?
A. 該多工器有1 個輸入通道、(至多)4 個輸出通道
B. 該多工器有1 個輸入通道、(至多)16 個輸出通道
C. 該多工器有(至多)4 個輸入通道、1 個輸出通道
D. 該多工器有(至多)16 個輸入通道、1 個輸出通道ABCDEADDBXYclockABCDDABCE
參考解答
- 答案:D. 該多工器有(至多)16 個輸入通道、1 個輸出通道ABCDEADDBXYclockABCDDABCE
解析:多工器(multiplexer)的功能是從多個輸入中擇一送到單一輸出,屬於「多對一」的資料選擇器。選擇控制線有 4 條時,可產生 2 的 4 次方等於 16 種組合,因此最多可連接 16 個輸入通道,輸出通道則為 1 個,故選 D。A、B 把多工器誤認為一對多的分配器(demultiplexer);C 只對應 2 條選擇線(4 個輸入)的情形,與 4 條控制線不符。
假設整數以二補數表示法儲存為8 個位元(8-bit memory location),整數「-72」的二補數表示法,為下列何者?
A. 01001000
B. 11001000
C. 10110111
D. 10111000
參考解答
解析:二補數(two's complement)求負數的步驟為:先寫出正數的二進位,再逐位取補數(0 與 1 互換)後加 1。72 = 64 + 8,故 8 位元表示為 01001000。取補數得 10110111,再加 1 得 10111000,即 -72。檢查:10111000 的最高位為 1,代表負數;其數值為 -(取補數加 1) = -(01000111 + 1) = -(01001000) = -72,正確。選項 A 是 +72 本身;選項 C 的 10110111 只是取補數、尚未加 1,實際代表 -73;選項 B 的 11001000 代表 -56。因此答案為 D。
有關虛擬記憶體的敘述,下列何者錯誤?
A. 使用Page Table 可以將虛擬記憶體位址的頁碼(page number)轉換成實體位址的頁框碼(framenumber)
B. Page Table 的內容(或部分內容)可以放在主記憶體
C. 即便某一程式的機械碼大小(code size)超過實體記憶體的總容量,藉由虛擬記憶體的機制,該程式仍可被CPU 執行
D. 藉由虛擬記憶體的機制,可讓電腦裝更多的DRAM
參考解答
- 答案:D. 藉由虛擬記憶體的機制,可讓電腦裝更多的DRAM
解析:虛擬記憶體是作業系統提供的位址抽象機制,讓每個程式都以為自己擁有連續且夠大的位址空間;實際上,它靠的是分頁(paging)與置換(swap)機制,只把目前用得到的頁載入主記憶體,其餘暫存在磁碟。因此 A(以 page table 把虛擬頁碼對應到實體頁框碼)、B(page table 可全部或部分放在主記憶體,必要時再以 TLB 快取)、C(程式碼大於實體記憶體仍可執行,採 demand paging)皆正確。D 錯誤:DRAM 的容量由硬體插槽與模組決定,虛擬記憶體不會讓電腦「裝更多 DRAM」,它只是讓有限的實體記憶體被更有效率地使用。
下列何者不是虛擬機器軟體佈建的好處?
A. 加快網路點擊服務的反應時間
B. 提升單機的相容性
C. 節省伺服器的數量
D. 方便的軟體測試環境
參考解答
解析:虛擬機器是在實體硬體上以 hypervisor 建立隔離的執行環境,其主要效益在於:一台實體機可同時跑多個 VM,提高資源利用率並減少伺服器數量(C);VM 可模擬不同硬體或舊版 OS 環境,提升單機相容性(B);快照與複製讓測試環境可快速建立、回復(D)。反觀 A,虛擬化多了一層 hypervisor 與虛擬網路、虛擬 I/O 的轉譯,通常會帶來額外負擔(overhead),不會加快網路服務的反應時間;反應時間主要取決於應用程式、網路頻寬與伺服器負載。故選 A。
資料壓縮可能造成資料損耗,下列何者屬於損耗壓縮(loss compression)?
A. Run-length encoding
B. MPEG encoding
C. Huffman coding
D. Lempel Ziv (LZ) encoding
參考解答
解析:損耗壓縮(lossy compression)會捨棄部分資料,解壓後無法完全還原原始內容;MPEG 影片編碼利用畫面間相似度、離散餘弦轉換與量化,量化過程丟棄人眼較不敏感的細節,屬於損耗壓縮,故選 B。A 的 Run-length encoding 以「值+連續次數」表示重複資料,C 的 Huffman coding 依出現頻率建立不等長編碼,D 的 Lempel-Ziv 以字典比對重複字串,三者皆為可無損還原的壓縮方式。
關聯式資料庫中,原本已有一個關聯(relation)表Employee,其屬性(attributes)包括id、name、gender、address。屬性gender 記錄員工的性別,男性員工的gender 欄位標記為male,女性員工的gender欄位標記為female。對關聯表Employee 使用下列那一個關聯運算,可以產生只包含男性員工元組(tuples)的資料表?
A. select
B. intersection
C. join
D. update
參考解答
解析:select(選擇)是關聯式代數的一元運算,以條件式篩選出符合的元組(tuples),寫法如 σ(gender='male')(Employee),只保留男性員工且屬性結構不變,正符合題意。B 的 intersection 需兩個屬性集合相容的關聯,取共同元組,無法單獨對一個關聯做性別篩選;C 的 join 是依共同屬性合併兩個關聯;D 的 update 屬於資料異動操作,會修改原有資料而非產生篩選後的新表。
在關聯式資料庫(relational database)中,下列何種操作,從兩個關係結合成新關係時,其原關係屬性集合不需一致?
A. difference
B. intersection
C. join
D. union
參考解答
解析:join 是依兩關聯間的共同屬性(或任意指定條件)做組合,例如以 Employee.id 對應 Department.eid,兩邊的屬性集合本來就可以不同,結果的屬性為兩者聯集,故選 C。相對地,union、intersection、difference 都屬於集合運算,要求兩個關聯為 union-compatible:屬性個數相同、對應屬性領域(domain)相容,否則運算無意義,因此 A、B、D 都必須屬性集合一致。
若三維陣列A[0:5, 3:10, 1:5]中每個元素的儲存必須耗費4 個位元組(Bytes)的記憶體,儲存此陣列,總共需要多少記憶體空間?
A. 240 個位元組
B. 250 個位元組
C. 960 個位元組
D. 1000 個位元組
參考解答
解析:三維陣列的維度長度分別為:第一維 0:5 共 6 個、第二維 3:10 共 8 個、第三維 1:5 共 5 個,元素總數 = 6 × 8 × 5 = 240 個。每個元素佔 4 個位元組,總空間 = 240 × 4 = 960 個位元組,故選 C。常見錯誤是把上界直接當長度(5 × 7 × 4 = 140 個元素)或只乘部分維度,都會得到與選項不符的數值;A、B 則是漏乘每元素 4 位元組的結果。
若i = 5, j = 6,且k = 8,下列那個後置式(Postfix)數學式的運算結果,能得到最大的數值?
A. ij+k*
B. ijk*+
C. ij*k+
D. ijk+*
參考解答
解析:後置式由左而右讀取,遇到運算子即取前兩個運算元計算。A:5 6 + 8 * = 11 × 8 = 88。B:5 6 8 * + = 5 + 48 = 53。C:5 6 * 8 + = 30 + 8 = 38。D:5 6 8 + * = 5 × 14 = 70。四者中以 A 的 88 最大。關鍵在於 A 先把 i、j 相加再乘 k,等於 (i+j)×k,是唯一讓較大的乘積結構成立的式子,其餘皆為 i+(j×k)、i×j+k、i×(j+k)。
若以鏈結串列(Linked list)實作佇列(Queue)資料結構,則要在那裡插入一個新元素?
A. 在鏈結串列的開頭
B. 在鏈結串列的末尾
C. 在鏈結串列的中心位置
D. 依元素的值決定在鏈結串列的位置
參考解答
解析:佇列是先進先出(FIFO),入列(enqueue)發生在尾端(rear)、出列(dequeue)發生在前端(front)。以鏈結串列實作時,若只在開頭插入,則開頭同時是插入與刪除端,會變成後進先出而成為堆疊;因此新元素應插在鏈結串列的末尾,並維護 tail 指標使插入為 O(1),故選 B。C、D 需要走訪尋找位置,不符合佇列 O(1) 入列的要求。
給定下列有向圖(Directed graph),若自節點A 出發進行優先走訪(Breadth-first search),則下列何者是可能的走訪順序?
A. ABCDEFG
B. ABDGCEF
C. AGFDECB
D. ABCDEGFABCDEFG
參考解答
解析:廣度優先走訪(BFS)以起點 A 為第 0 層,先走訪 A 的所有相鄰節點(第 1 層),再依序走訪第 1 層各節點尚未拜訪的鄰居(第 2 層),層層向外擴展,且同一層節點不會被更遠層的節點插隊。B 的 A→B→D→G→C→E→F 呈現 A 之後先清完第一層、再進入下一層的次序,符合 BFS 特性。C 呈反向且近似深度優先的次序;A、D 則讓較遠的節點提前出現,違反逐層擴展原則。
下列圖示中,左圖是一般樹而右圖是左子右兄弟樹(Left child-right sibling)的資料結構舉例。若此兩種資料結構中所有父子之間的連結和兄弟之間的連結均以雙向指標來實作,下列敘述何者錯誤?
A. 在一般樹的資料結構中,若使用固定個數的欄位儲存指標,則容易造成空間的浪費
B. 在計算節點與根節點(Root)的距離時,使用左子右兄弟樹不會比使用一般樹走訪(Traverse)更少的指標
C. 用左子右兄弟樹的資料結構來確認兩節點之間的父子關係在最差情況下需要檢查超過一個以上的指標
D. 用左子右兄弟樹的資料結構來確認兩節點之間的父子關係較一般樹的資料結構更有效率
參考解答
- 答案:D. 用左子右兄弟樹的資料結構來確認兩節點之間的父子關係較一般樹的資料結構更有效率
關於無向圖(Undirected graph)頂點的分支度(Degree),下列敘述何者正確?
A. 具有奇數分支度的頂點個數是奇數
B. 所有頂點的分支度的總和是偶數
C. 具有偶數分支度的頂點個數是奇數
D. 偶數分支度的頂點個數多於奇數分支度的頂點個數
參考解答
解析:無向圖中每條邊會對其兩個端點的度數各貢獻 1,因此所有頂點分支度(degree)的總和必等於邊數的兩倍(握手定理:Σdeg(v)=2|E|),必為偶數,故 B 正確。由此推論,分支度為奇數的頂點個數必為偶數(成對出現),所以 A 說「奇數個」錯誤。C 把偶數分支度的頂點個數說成奇數,並無此必然性。D 則混淆了兩類頂點的數量關係,例如一個三角形三頂點度數皆為 2,並無奇數分支度的頂點,可見兩者多寡無固定關係。
以二元搜尋法(Binary search)在100 筆已經排序好的資料中搜尋某筆資料,最差的狀況下會進行x次比較,下列何者正確?
A. x<10
B. 10<= x<50
C. 50<= x<99
D. x = 99
參考解答
解析:二元搜尋每比較一次就把搜尋範圍縮小為一半,最差情況的比較次數為 ⌈log₂n⌉(或 ⌈log₂(n+1)⌉)。以 n=100 計算,2⁶=64、2⁷=128,故最多約需 7 次比較即可確定結果,遠小於 10。因此 x<10,答案為 A。B、C、D 所描述的 10 次以上甚至 99 次,是循序搜尋(linear search)最差需比對全部 n 筆的情況,並非二元搜尋的特性;二分法之所以高效,正是因為每步都能捨棄一半資料。
下列何種排序演算法,最適合對尚未完整蒐集的資料進行排序,例如:可能來自網路一次送來一個資料?
A. Insertion sort
B. Quick sort
C. Merge sort
D. Selection sort
參考解答
解析:Insertion sort(插入排序)具有「線上(online)」特性:每次讀入一筆新資料,就將其插入已排序序列的適當位置,前面已排好的部分不必重做,非常適合資料尚未完整蒐集、一次送來一筆的情境,故選 A。Quick sort 需要先取得整體資料才能選基準點分割;Merge sort 雖可合併已排序串列,但通常須等資料分批到齊後再合併,實作上仍需完整資料;Selection sort 每回合都要在全部未排序資料中找最小值,同樣須先掌握完整資料集。
若採循序搜尋(Sequential search),從n 個未排序的數字中進行搜尋,平均要進行幾次數字比較,才能成功搜尋到特定的數字?
A. n
B. (n+1)/2
C. (n+1)*n/2
D. n/2
參考解答
解析:循序搜尋從第一筆開始逐筆比對,若目標在第 1 筆需比較 1 次、在第 2 筆需 2 次,依此類推,在第 n 筆需 n 次。假設每筆被搜尋到的機率相等,平均比較次數為 (1+2+…+n)/n = [n(n+1)/2]/n = (n+1)/2,故選 B。A 的 n 是最差情況(目標在最後一筆或不存在);C 的 (n+1)n/2 是全部情況的比較次數總和,未除以 n;D 的 n/2 則忽略了起算與端點,數值上不正確。
關於C 指令中的&、|、以及^等運算式,下列那一個不會改變x 的值?int x = 100;
A. x&0
B. x|1
C. x^0
D. x^18158915931526
參考解答
解析:位元運算中,任何整數與 0 做 XOR(互斥或)會保留原值,因為 x^0 的每一位元與 0 相同時為 0、相異時為 1,結果仍等於 x,故 x^0 不改變 x,答案 C。A 的 x&0 會把每個位元清零,結果為 0;B 的 x|1 會把最低位設為 1,本題 x=100(二進位 1100100)會變成 101,值已改變;D 的 x^18158915931526 是與一個非零的大數做 XOR,結果一般不會等於原值。
下列的C++程式中,未使用下列何種技術?#include <iostream>using namespace std;class A{private:int x;public:int y;int get(void) {return x;}};class B : A{public:int get(void) {return y+2;}};int main(){}
A. inheritance
B. encapsulation
C. overriding
D. template
參考解答
解析:程式中 class B : A 表示 B 繼承 A,使用了 inheritance(繼承);類別以 private 成員 x 搭配 public 介面 get() 存取,屬 encapsulation(封裝);B 重新定義與 A 同名的 get(),屬於 overriding(覆寫)。整份程式沒有任何 template<class T> 或泛型樣板宣告,故未使用 template,答案 D。判讀時可依關鍵語法:冒號加基類名代表繼承、存取修飾子代表封裝、同名同參數函式代表覆寫。
下列C 程式迴圈執行完畢後,變數count 的值為何?#include<stdio.h>int i;int count=1;int main(){for (i=1; i <= 10; i++){if(i%5 == 0) break;count *= (i+1);printf("%d\n", count);}printf("%d", count);return 0;}
A. 120
B. 39916800
C. 3628800
D. 24
參考解答
解析:追蹤迴圈:count 初值 1。i=1 時 count=1×2=2;i=2 時 count=2×3=6;i=3 時 count=6×4=24;i=4 時 count=24×5=120;i=5 時 i%5==0 成立,執行 break 跳出迴圈,故 count 最終為 120,答案 A。B 的 39916800 是 11!,C 的 3628800 是 10!,皆為未在中途 break 的階乘結果;D 的 24 只累乘到 i=3,漏算了 i=4 這一輪。
下列C/C++語言程式碼片段,執行後應顯示為何?int a=2;switch(a){ case 1: printf("1#");case 2: printf("2#");case 3: printf("3#");default: printf("0#");}
A. 2#
B. 2#3#
C. 2#0#
D. 2#3#0#
參考解答
假設某筆資料只包含A、B、C、D 四種符號,且A、B、C、D 在資料中出現的頻率為7、12、30、6,若對此筆資料做霍夫曼編碼(Huffman coding),那一個符號的編碼(code)長度最短?
A. A
B. B
C. C
D. D
參考解答
解析:霍夫曼編碼每次合併頻率最小的兩個節點:先將D(6)與A(7)合併為13,再將B(12)與13合併為25,最後將25與C(30)合併為根節點。頻率愈高者愈晚被合併,離根節點愈近、編碼愈短。C之頻率30最高,位於根節點下一層,編碼長度為1,最短;B長度為2;A、D頻率最低,編碼長度最長(3),故選C。
考慮下列的C 語言函數宣告,然後呼叫f(4),函數的回傳值為何?int f (int x){if (x <=1) return 1;else return (x * f(x-1));}
A. 1
B. 4
C. 10
D. 24
參考解答
解析:此函數為遞迴定義的階乘函數:當x小於等於1時回傳1,否則回傳x乘以f(x-1)。呼叫f(4)時依序展開為4×f(3)=4×3×f(2)=4×3×2×f(1)=4×3×2×1=24,故回傳值為24,選D。A為終止條件f(1)之回傳值,B為f(2)之部分結果,C並非任何中介計算結果,均非f(4)之值。
下列C 語言之遞迴函式,若呼叫執行f(4),將會輸出?void f(int n){if (n != 0){f(n/2);putchar('0'+n%2);}}
A. 1000
B. 100
C. 10
D. 1
參考解答
解析:f 為「先遞迴、後輸出」的函式,因此輸出順序由最深層往回。f(4)→f(2)→f(1)→f(0),f(0) 因 n==0 直接返回,不輸出。回到 f(1) 時 putchar('0'+1%2) 印出 1;回到 f(2) 印出 0(2%2=0);回到 f(4) 亦印出 0(4%2=0)。故輸出字串為 100,即 4 的二進位表示。選項 A 多印一位、C 與 D 位數不足,皆與遞迴深度不符。
執行下列Python 程式後,產生的輸出為何?def unknown(input, p1, p2):input[p1], input[p2] = input[p2], input[p1]return inputinput = [10, 20, 30]print(unknown(input, 0, 1))
A. 10 20
B. 20 30
C. [10, 20, 30]
D. [20, 10, 30]
參考解答
解析:Python 的 a, b = b, a 會先建立右邊的元組 (input[1], input[0]) 再依序指派,因此是「同時交換」而非先後覆寫。input 初始為 [10,20,30],交換索引 0 與 1 後變成 [20,10,30],函式回傳同一串列物件,print 印出串列格式(含中括號與逗號)。選項 A、B 是省略括號的錯誤格式,C 則是誤以為函式內操作不影響外部;實際上串列為可變物件,會就地修改。
執行以下C++程式,螢幕上的輸出為何?#include <iostream>using namespace std;class A {public: float FA (int input) {return input/3;}};class B: public A {public: float FB (int input) {return input/4;}};int main(){B object1;cout << object1.FB(12) << "#" << object1.FA(12);}
A. 4#3
B. 3#4
C. 12#12
D. FB(12)#FA(12)
參考解答
C++程式語言,類別class FUN 含有一個資料成員int me 和公用方法int getMe( ) {int me = 5;this->me = 10;return me;}如果f 是class FUN 的物件變數,則f.getMe()的回傳值為何?
A. 0
B. 1
C. 5
D. 10
參考解答
解析:getMe() 內宣告了區域變數 int me = 5,此宣告會遮蔽(shadow)同名的資料成員。敘述 this->me = 10 透過 this 指標指定的是物件成員,只把成員 me 改成 10,並不影響區域變數。return me 取用的是區域變數,其值仍為 5,故回傳 5。選項 D 混淆了成員與區域變數;A、B 與程式內容無關。
下列何種網路設備,可以讓網際網路中多個節點共用一個IP 位址?
A. VPN(Virtual private network)伺服器
B. 路由器(Router)
C. 網路位址轉換器(Network address translator)
D. DHCP(Dynamic host configuration protocol)伺服器
參考解答
- 答案:C. 網路位址轉換器(Network address translator)
解析:NAT(網路位址轉換器)讓私有IP網路中的多個節點共用一個公有IP位址存取網際網路。VPN提供加密通道,Router負責路由轉發,DHCP伺服器負責動態分配IP位址。
下列網路的那一層(OSI 模型),係關於網路的位址敘述,以及決定網路的路由(Routing)?
A. 傳輸層(Transport Layer)
B. 資料連結層(Data Link Layer)
C. 網路層(Network Layer)
D. 應用層(Application Layer)
參考解答
解析:OSI 模型中,網路層(Network Layer,第 3 層)負責邏輯位址(如 IP 位址)的定址,以及依路由表決定封包由來源到目的地的路徑,即路由(routing),常見協定有 IP、ICMP。資料連結層處理的是實體(MAC)位址與訊框傳遞;傳輸層提供端點對端點的連線與流量控制(TCP/UDP);應用層則直接服務使用者程式。
在電腦教室常看到的雙絞線(Twisted-Pair),下列敘述何者錯誤?
A. 適合長距離傳輸,因此通常為網路骨幹線路使用
B. 由兩條包覆的銅線相互纏繞之通訊傳輸媒介
C. 可搭配集線器(Hub)或交換器(Switch)架構出星狀拓樸(Star Topology)網路
D. 透過兩線互相纏繞可以減少磁場之干擾
參考解答
- 答案:A. 適合長距離傳輸,因此通常為網路骨幹線路使用
解析:雙絞線由兩條絕緣銅線相互纏繞而成,纏繞的目的在於讓兩線感應的磁場相互抵消,以降低電磁干擾與串音,因此 B、D 的敘述正確。雙絞線也可搭配集線器或交換器,接成以集線器為中心的星狀拓樸,C 亦正確。真正錯誤的是 A:雙絞線訊號衰減較快,屬於短距離、低成本的終端接取媒介,一般佈線距離約在 100 公尺等級;長距離傳輸與網路骨幹通常採用光纖,必要時才用同軸電纜,故選 A。
有關OSI 模型的網路層(Network Layer)所提供的服務,下列敘述何者正確?
A. 網路層定義了有線區域網路,如乙太網路(Ethernet)的相關規格
B. 網路層的技術可以保證傳輸封包其抵達目的地的順序會與傳送的順序相同
C. 網路層封包傳送,是一種不可靠的傳送(Unreliable Delivery),中間過程可能會損壞或遺失
D. 其提供的服務包括像是UDP(User Datagram Protocol)協定便是一種不可靠的傳輸協定
參考解答
- 答案:C. 網路層封包傳送,是一種不可靠的傳送(Unreliable Delivery),中間過程可能會損壞或遺失
解析:OSI 網路層(如 IP)提供的是盡力而為(best-effort)服務,屬於不可靠傳送,封包在途中可能遺失、重複、損壞或延遲,可靠度須由上層 TCP 等協定補足,故 C 正確。A 錯在乙太網路屬於資料鏈結層與實體層的規格,並非網路層。B 錯在網路層不保證封包抵達順序,各封包可能走不同路徑。D 錯在 UDP 是傳輸層協定,不是網路層所提供的服務。
針對無類別域間路由(Classless Inter-Domain Routing, CIDR)而言,下列那個IP 位址,不在123.32.226.14/22 網域下?
A. 123.32.228.14
B. 123.32.224.233
C. 123.32.225.12
D. 123.32.227.12
參考解答
解析:CIDR 的 /22 表示前 22 位元為網路前綴,相當於子網路遮罩 255.255.252.0。將第三個位元組 226 與 252 做位元 AND:226 = 11100010、252 = 11111100,結果為 11100000 = 224,故網域為 123.32.224.0/22,可用範圍是 123.32.224.0 至 123.32.227.255。B 的 224.233、C 的 225.12、D 的 227.12 都落在範圍內;A 的第三位元組為 228,已超出 227,屬於下一個網段 123.32.228.0/22,故選 A。
有關網際網路應用,下列何者錯誤?
A. 網路影音平台,如YouTube,透過串流技術(Streaming),使得播放影片不需要等到下載完整檔案就能開始播放,提升播放流暢度
B. Facebook、Twitter 是一種社群網站平台
C. tcpdump 工具用來探詢主機所開啟的連接埠及服務種類
D. nslookup 工具可透過DNS 伺服器查詢網域名稱與IP 位址之對應
參考解答
- 答案:C. tcpdump 工具用來探詢主機所開啟的連接埠及服務種類
解析:tcpdump 是封包擷取與分析工具,用來監聽網路介面上的封包內容,並不負責探測主機開啟了哪些連接埠;掃描連接埠與服務種類通常使用 nmap 之類的工具,故 C 的敘述錯誤。A 所述的串流技術讓影音邊下載邊播放,可縮短等待時間。B 的 Facebook、Twitter 屬於社群網站平台。D 的 nslookup 會向 DNS 伺服器查詢網域名稱與 IP 位址的對應,包含正向與反向查詢,皆為正確敘述。
傳輸層安全性協定(Transport Layer Security, TLS)仰賴使用數位憑證(Digital Certificate),關於數位憑證的敘述,下列何者正確?
A. 自簽憑證(Self-signed Certificate)和憑證頒發機構(Certificate Authority, CA)所頒發的憑證有相同的安全性
B. 一個網域的憑證中,包含其公鑰和私鑰的值
C. 憑證頒發機構可撤銷其頒發的憑證
D. 若瀏覽器跳出憑證錯誤的警告,只要略過即可,不會影響安全性
參考解答
解析:憑證頒發機構(CA)在憑證有效期間內,若發生私鑰外洩、網域變更等情形,可透過憑證撤銷清單(CRL)或線上憑證狀態協定(OCSP)撤銷其所簽發的憑證,故 C 正確。A 錯在自簽憑證沒有受信任的第三方背書,瀏覽器預設不信任,安全性與 CA 憑證不同。B 錯在憑證內含主體的公鑰與 CA 的簽章,私鑰由持有者自行保管,絕不會放入憑證。D 錯在略過憑證警告可能遭遇中間人攻擊,會危及連線安全。
有關密碼學的雜湊函數(Hash Function),下列敘述何者正確?
A. 安全的雜湊函數具有單向函數(One-way Function)特性,且能抵抗碰撞攻擊(Collision Resistance)
B. AES 與SHA 都是密碼學上的安全雜湊函數,而AES 安全度更高
C. 是具有金鑰(Key)的一種密碼元件
D. 是一種能夠具備驗證資料來源能力的密碼技術
參考解答
- 答案:A. 安全的雜湊函數具有單向函數(One-way Function)特性,且能抵抗碰撞攻擊(Collision Resistance)
解析:安全雜湊函數須具備單向性(由摘要難以回推原文)與抗碰撞性(難以找到兩份不同訊息產生相同摘要),另需具備雪崩效應與固定長度輸出,故 A 正確。B 錯在 AES 是對稱式區塊加密演算法,並非雜湊函數,兩者用途不同,不能直接比較安全度。C 錯在雜湊函數不需要金鑰,屬無金鑰的密碼元件,帶金鑰者為 MAC。D 錯在雜湊僅能檢驗完整性,驗證資料來源須搭配金鑰或數位簽章。