高雄醫學大學 115 年 《計算機概論與程式設計》

📄 試題原卷 免費註冊後即可對照原始考卷 PDF免費註冊

第 1 題2 分

In a direct-mapped cache system with 16 cache lines, a 32-bit memory address is divided into Tag, Index, and Offset fields. Assuming a byte-addressable memory and a block size of 64 bytes, how many bits are used for the Tag field?

(A) 16 bits
(B) 20 bits
(C) 22 bits
(D) 24 bits
(E) 26 bits

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

直接對映快取(direct-mapped cache)的 32 位元記憶體位址,通常分為:

Tag∣Index∣Offset\text{Tag} \mid \text{Index} \mid \text{Offset}

三個欄位的功能如下:

  • Offset:指出資料位於一個 cache block 內的哪一個位元組。
  • Index:指出資料要放入哪一條 cache line。
  • Tag:辨識目前 cache line 中所存的記憶體區塊是否為目標區塊。

位址總位元數滿足:

Tag bits+Index bits+Offset bits=32\text{Tag bits}+\text{Index bits}+\text{Offset bits}=32

解題方法

1. 計算 Offset 位元數

題目說明記憶體為 byte-addressable,且每個 block 大小為 64 bytes。

因此,區塊內需要辨識 64 個不同的位元組位置:

Offset bits=log⁡264=6\text{Offset bits}=\log_2 64=6

2. 計算 Index 位元數

Cache 共有 16 條 cache lines。直接對映快取中,每個記憶體區塊會依照 Index 對應至其中一條 cache line。

因此:

Index bits=log⁡216=4\text{Index bits}=\log_2 16=4

3. 計算 Tag 位元數

32 位元位址扣除 Offset 與 Index:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題2 分

A system implements the Banker's Algorithm for deadlock avoidance. There are 3 resource types (A,B,C)(A,B,C). The current Available resources are (2,1,2)(2,1,2). The current Allocation and Maximum matrices are as follows:

ProcessAllocation (A,B,C)(A,B,C)Maximum (A,B,C)(A,B,C)
P0P_0(2,0,1)(2,0,1)(4,2,2)(4,2,2)
P1P_1(3,1,2)(3,1,2)(5,3,3)(5,3,3)
P2P_2(1,2,0)(1,2,0)(3,3,2)(3,3,2)

Which of the following resource requests can be safely granted?

(A) P0P_0 requests (1,1,0)(1,1,0)
(B) P1P_1 requests (2,2,1)(2,2,1)
(C) P2P_2 requests (2,1,2)(2,1,2)
(D) P0P_0 requests (2,2,1)(2,2,1)
(E) P1P_1 requests (3,1,1)(3,1,1)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考 Banker’s Algorithm(銀行家演算法) 的資源請求判定與安全性檢查。

每個行程尚需的資源量為:

Need=Maximum−AllocationNeed = Maximum - Allocation

系統接受某行程的請求,必須依序符合:

  1. 請求量不得超過該行程的尚需量:
    Requesti≤NeediRequest_i \leq Need_i
  2. 請求量不得超過目前可用資源:
    Requesti≤AvailableRequest_i \leq Available
  3. 暫時核准後,系統仍須存在一個安全序列,使所有行程都能完成。

解題方法

1. 計算各行程的 Need

ProcessAllocationMaximumNeed
P0P_0(2,0,1)(2,0,1)(4,2,2)(4,2,2)(2,2,1)(2,2,1)
P1P_1(3,1,2)(3,1,2)(5,3,3)(5,3,3)(2,2,1)(2,2,1)
P2P_2(1,2,0)(1,2,0)(3,3,2)(3,3,2)(2,1,2)(2,1,2)

目前:

Available=(2,1,2)Available=(2,1,2)

判斷請求時,先檢查請求是否小於等於 NeedNeed 與 AvailableAvailable,再進行安全性檢查。


選項分析

(A)P0P_0 requests (1,1,0)(1,1,0)

先檢查基本條件:

(1,1,0)≤Need0=(2,2,1)(1,1,0)\leq Need_0=(2,2,1)

符合;但核准後:

Available′=(2,1,2)−(1,1,0)=(1,0,2)Available'=(2,1,2)-(1,1,0)=(1,0,2) Allocation0′=(2,0,1)+(1,1,0)=(3,1,1)Allocation_0'=(2,0,1)+(1,1,0)=(3,1,1) Need0′=(4,2,2)−(3,1,1)=(1,1,1)Need_0'=(4,2,2)-(3,1,1)=(1,1,1)

進行安全性檢查,令:

Work=(1,0,2)Work=(1,0,2)

各行程的 Need 為:

  • P0P_0:(1,1,1)(1,1,1),其 BB 類資源需要 11,但 WorkB=0Work_B=0,無法完成。
  • P1P_1:(2,2,1)(2,2,1),無法完成。
  • P2P_2:(2,1,2)(2,1,2),無法完成。

沒有任何行程可以先完成,因此不存在安全序列,核准後會進入不安全狀態。

故(A)錯誤。


(B)P1P_1 requests (2,2,1)(2,2,1)

此請求雖然符合:

(2,2,1)≤Need1=(2,2,1)(2,2,1)\leq Need_1=(2,2,1)

但目前可用資源為:

Available=(2,1,2)Available=(2,1,2)

其中 BB 類資源請求 22,但目前只有 11:

2>12>1

因此系統目前無法立即提供此請求。

故(B)錯誤。


(C)P2P_2 requests (2,1,2)(2,1,2)

先檢查:

(2,1,2)≤Need2=(2,1,2)(2,1,2)\leq Need_2=(2,1,2)

且:

(2,1,2)≤Available=(2,1,2)(2,1,2)\leq Available=(2,1,2)

兩項條件皆符合。

暫時核准後:

Available′=(2,1,2)−(2,1,2)=(0,0,0)Available'=(2,1,2)-(2,1,2)=(0,0,0) Allocation2′=(1,2,0)+(2,1,2)=(3,3,2)Allocation_2'=(1,2,0)+(2,1,2)=(3,3,2)

此時:

Need2′=(3,3,2)−(3,3,2)=(0,0,0)Need_2'=(3,3,2)-(3,3,2)=(0,0,0)

令:

Work=(0,0,0)Work=(0,0,0)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題2 分

Which statement best describes a key difference between how CNNs and Transformers extract features from input data?

(A) CNNs rely on global attention mechanisms, while Transformers use fixed-size convolutional filters.
(B) CNNs and Transformers extract features in identical ways but differ only in training speed.
(C) Both CNNs and Transformers require manually designed filters for feature extraction.
(D) CNNs capture local spatial patterns using convolution, while Transformers model global relationships using self-attention.
(E) Transformers can only process sequential text data, while CNNs can only process images.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 CNN(Convolutional Neural Network,卷積神經網路)與 Transformer 在「輸入特徵擷取方式」上的差異。

  • CNN 使用卷積運算,以固定大小的卷積核在輸入資料上滑動,擷取鄰近位置的局部特徵,例如影像中的邊緣、紋理與形狀。
  • Transformer 使用 Self-Attention(自注意力機制),計算輸入中不同位置彼此的關聯,因此能直接建模較長距離甚至全域性的關係。

CNN 的核心特色是「局部性」與「權重共享」;Transformer 的核心特色是「位置間的關聯建模」。

解題方法

判斷關鍵在於辨識兩種模型的主要特徵擷取機制:

  1. 題目提到「convolution」與「local spatial patterns」時,對應 CNN。
  2. 題目提到「self-attention」與「global relationships」時,對應 Transformer。
  3. 再排除將兩者說成完全相同、需要人工設計濾波器,或限制其只能處理單一資料類型的錯誤敘述。

因此,符合正確差異的敘述是「CNN 擷取局部空間模式,而 Transformer 透過自注意力建模全域關係」。

選項分析

(A) CNNs rely on global attention mechanisms, while Transformers use fixed-size convolutional filters.

錯誤。敘述將兩者的機制對調。

  • CNN 主要使用固定大小的卷積核擷取局部特徵,並非依賴全域注意力。
  • Transformer 主要使用 Self-Attention,並非以固定大小的卷積濾波器作為核心特徵擷取方式。

(B) CNNs and Transformers extract features in identical ways but differ only in training speed.

錯誤。CNN 與 Transformer 的特徵擷取方式並不相同。

  • CNN 透過卷積運算處理局部鄰域。
  • Transformer 透過自注意力計算不同位置之間的依賴關係。

兩者除了訓練速度外,在模型結構、資訊互動範圍與特徵擷取方式上都有重要差異。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題2 分

In Internet of Things (IoT) systems, which characteristic best describes the MQTT protocol?

(A) It is a high-bandwidth protocol designed for video streaming.
(B) It is mainly used for peer-to-peer file sharing.
(C) It provides reliable communication by using a heavy connection setup.
(D) It is optimized for low-bandwidth, low-power communication using a publish/subscribe model.
(E) It replaces TCP/IP as the underlying network protocol.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查物聯網(Internet of Things, IoT)常用通訊協定 MQTT(Message Queuing Telemetry Transport)的設計特色。

MQTT 的核心特點包括:

  • 採用 發布/訂閱(publish/subscribe)模型。
  • 透過 **訊息代理伺服器(broker)**轉送訊息。
  • 適合頻寬有限、裝置運算能力弱、電力受限的環境。
  • 訊息封包標頭小、通訊負擔低。
  • 通常建立在 TCP/IP 之上,並可透過 QoS(Quality of Service)機制提供不同程度的傳遞可靠性。

MQTT 的基本架構如下:

  1. 發布者(publisher)將訊息發布至某個主題(topic)。
  2. 訂閱者(subscriber)訂閱感興趣的主題。
  3. Broker 接收訊息,再轉送給所有符合訂閱條件的訂閱者。

例如,溫度感測器可以發布:

topic: home/room1/temperature
message: 26.5

空調控制器只要訂閱該主題,就能接收溫度資料,而不需要直接知道感測器的位置或網路位址。


解題方法

判斷 MQTT 的關鍵,可從三個方向切入:

  1. 是否適合 IoT 裝置的低頻寬、低功耗環境?
  2. 是否採用發布/訂閱架構?
  3. 是否屬於應用層通訊協定,而非取代 TCP/IP 的底層網路協定?

只要選項同時符合「低頻寬、低功耗」與「publish/subscribe」,即符合 MQTT 的典型特徵。

因此正確敘述為:

It is optimized for low-bandwidth, low-power communication using a publish/subscribe model.


選項分析

(A) It is a high-bandwidth protocol designed for video streaming.

錯誤。

MQTT 並非為高頻寬影音串流設計。它的設計目標是讓感測器、嵌入式裝置等資源受限設備,以較小的通訊負擔傳送資料。

影音串流通常需要高頻寬、低延遲與持續大量資料傳輸,常見技術包括串流媒體協定與影音編碼機制,這不是 MQTT 的主要用途。


(B) It is mainly used for peer-to-peer file sharing.

錯誤。

MQTT 採用的是發布/訂閱模型,並透過 Broker 集中管理訊息,不是點對點(peer-to-peer)的檔案分享協定。

在 MQTT 中:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 5 題2 分

About IPv4 header, which of the following is INCORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 IPv4 標頭的格式、欄位功能、TTL(Time To Live)、標頭檢查碼,以及 IPv4 位址空間。

判斷重點如下:

  • IPv4 標頭長度以 32 位元(4 bytes)為單位。
  • DSCP 用於差異化服務與封包優先權分類。
  • TTL 用來限制資料報可經過的路由器數量。
  • IPv4 標頭檢查碼只驗證「標頭」,不能用來重組分割後的完整封包。
  • IPv4 位址欄位長度為 32 位元,因此理論位址數為 2322^{32}。

解題方法

本題是單選題,直接逐一核對各敘述是否符合 IPv4 標頭定義即可。

其中最關鍵的是分辨:

  1. IPv4 fragmentation 使用哪些欄位重組封包。
  2. Header Checksum 的驗證範圍。
  3. TTL 是「時間」概念,還是可用來限制封包通過的路由器數量。

選項分析

(A) IPv4 header is 4-byte aligned.

正確。

IPv4 標頭的基本長度為 20 bytes,若包含 Options,標頭長度必須以 32 位元為單位增加。標頭長度欄位 IHL(Internet Header Length)表示的是 32-bit words 數量:

Header Length=IHL×4 bytes\text{Header Length}=\text{IHL}\times 4\text{ bytes}

因此 IPv4 標頭長度必定是 4 bytes 的整數倍,例如:

  • IHL = 5:5×4=205\times4=20 bytes
  • IHL = 6:6×4=246\times4=24 bytes
  • IHL = 15:15×4=6015\times4=60 bytes

所以「IPv4 標頭為 4-byte aligned」正確。


(B) Differentiated Services Code Point (DSCP) is used for specifying differentiated services.

正確。

DSCP 位於 IPv4 標頭原本的 ToS(Type of Service)欄位,現稱 DS Field。DSCP 佔 6 bits,用來標示封包應接受的差異化服務,例如:

  • 優先轉送
  • 流量分類
  • 延遲、可靠度或頻寬需求
  • QoS(Quality of Service)處理方式

因此 DSCP 確實用於指定差異化服務。


(C) The IPv4 TTL is an upper bound of routers that an IP datagram can pass.

正確。

TTL 欄位的主要目的,是防止封包因路由迴圈而在網路中無限循環。每經過一個路由器,TTL 至少會減少 1;當 TTL 減至 0 時,路由器會丟棄該封包。

若初始 TTL 為 T0T_0,封包經過 nn 個路由器後,通常可表示為:

Tfinal=T0−nT_{\text{final}}=T_0-n

要能繼續轉送,必須滿足:

Tfinal>0T_{\text{final}}>0

因此可通過的路由器數量受到初始 TTL 的上限限制,通常可視為:

n≤T0n\leq T_0

校方釋疑指出,TTL 是「封包可通過之路由器數量的上界」;即使處理延遲造成 TTL 一次減少超過 1,最後的 TTL 仍會小於初始 TTL,不會使封包通過的路由器數超過初始 TTL 所形成的上限。因此依官方說明,(C) 應判定為正確。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 6 題2 分

Which of the following statements describing a time-complexity difference between a singly linked list and an array is CORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題比較「單向鏈結串列(singly linked list)」與「陣列(array)」在不同操作下的時間複雜度。

1. 單向鏈結串列

每個節點通常包含資料與下一個節點的指標:

[node data | next] -> [node data | next] -> ...

若已經知道欲處理的節點位置,修改其 next 指標只需固定次數的操作,因此可達到 O(1)O(1)。

2. 陣列

陣列元素儲存在連續記憶體中。若在中間刪除一個元素,後方元素必須向前搬移,以維持連續排列,因此通常需要移動 O(n)O(n) 個元素。

3. 複雜度中的 nn

nn 表示資料結構中元素的數量。時間複雜度描述的是資料規模增大時,操作所需時間如何成長。


解題方法

逐一判斷各選項所描述的操作:

  1. 是否需要走訪節點尋找位置?
  2. 是否需要搬移大量元素?
  3. 是否只需修改少數指標?
  4. 題目是否使用了「always」等絕對字眼?

本題關鍵在於:

  • 單向鏈結串列的中間節點若已知,刪除可局部完成,為 O(1)O(1)。
  • 陣列刪除中間元素後,後方元素必須搬移,為 O(n)O(n)。

選項分析

(A) 正確

Deleting an element from the middle of a linked list, when the node is already known, takes O(1)O(1), while deleting from the middle of an array takes O(n)O(n).

此敘述符合本題設定,故正確。

單向鏈結串列

假設欲刪除的節點為 p,且 p 位於中間,因此一定存在下一個節點。依照 CLRS 所採用的單向鏈結串列操作概念,可將後繼節點的資料複製到目前節點,再讓目前節點跳過後繼節點:

p->data = p->next->data;
p->next = p->next->next;

逐步分析:

  1. 讀取 p->next->data:O(1)O(1)
  2. 將資料寫入 p->data:O(1)O(1)
  3. 修改 p->next:O(1)O(1)

總操作次數為固定數量,因此:

T(n)=O(1)T(n)=O(1)

這種作法的重點是「邏輯刪除」。節點 p 的記憶體位置仍存在,但其內容被後繼節點取代,後繼節點則從鏈結關係中移除。若實作語言需要手動釋放記憶體,釋放被跳過的節點仍是固定時間操作,不影響 O(1)O(1) 的時間複雜度。

校方釋疑公告亦明確指出,題目特別限定「middle」,排除了尾節點的例外情形;在節點已知且位於中間的前提下,透過複製後繼節點資料並調整指標,即可完成 O(1)O(1) 的邏輯刪除。

陣列

假設陣列如下:

[10, 20, 30, 40, 50, 60]

刪除中間元素 30 後,必須將後方元素往前搬移:

[10, 20, 40, 50, 60]

至少需要搬移:

40 -> 30 的位置
50 -> 40 的位置
60 -> 50 的位置

若刪除位置靠近前方,可能需要搬移接近 nn 個元素,因此最壞時間複雜度為:

T(n)=O(n)T(n)=O(n)

所以 (A) 正確。


(B) 錯誤

Inserting an element at the beginning of a linked list takes O(n)O(n), while inserting at the beginning of an array takes O(1)O(1).

實際情況正好相反。

單向鏈結串列開頭插入

只需讓新節點指向原本的第一個節點,再更新頭指標:

newNode->next = head;
head = newNode;

只涉及固定次數的指標操作,因此:

T(n)=O(1)T(n)=O(1)

陣列開頭插入

為了騰出第一個位置,原有元素必須全部向後移動:

原陣列:[10, 20, 30, 40]
插入 5:[5, 10, 20, 30, 40]

最多需要移動 nn 個元素,因此:

T(n)=O(n)T(n)=O(n)

故 (B) 將兩者複雜度完全顛倒,錯誤。


(C) 錯誤

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 7 題2 分

Which of the following best describes the concept of kk-anonymity in the context of data privacy protection?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查資料隱私保護中的 kk-anonymity(kk-匿名性)。

kk-匿名性的核心要求是:在資料集公開前,針對能辨識個人的特徵,例如年齡、性別、郵遞區號、職業等「準識別資訊」(quasi-identifiers)進行概括化或抑制,使每筆資料至少能與其他 k−1k-1 筆資料具有相同的準識別資訊組合。

因此,每一個由準識別資訊形成的等價類別(equivalence class)至少包含 kk 筆紀錄。對外部觀察者而言,該筆紀錄最多只能被縮小到 kk 個候選人,難以直接判定其對應的真實個人。

例如,若資料表經處理後,某一組資料如下:

年齡區間性別郵遞區號疾病
20–29男800A
20–29男800B
20–29男800C

這三筆紀錄的準識別資訊完全相同,形成大小為 33 的等價類別,因此符合 33-anonymity。

解題方法

判斷本題的關鍵,是找出選項中是否描述「每筆紀錄至少與 k−1k-1 筆其他紀錄無法區分」。

kk-匿名性的定義可表示為:

每個等價類別的大小≥k\text{每個等價類別的大小} \geq k

也就是每筆紀錄必須至少和另外 k−1k-1 筆紀錄,在指定的識別屬性上相同或不可區分。符合此定義的敘述為選項 (B)。

選項分析

(A) Encrypting sensitive data using strong cryptographic algorithms

錯誤。此選項描述的是資料加密(encryption),利用密碼學演算法將資料轉換成未授權者無法直接理解的形式。加密主要保護資料在儲存或傳輸過程中的機密性;kk-匿名性則是透過降低資料的可辨識程度,使多筆紀錄在準識別資訊上無法區分,兩者是不同的隱私保護方法。

(B) Ensuring each record is indistinguishable from at least k−1k-1 other records based on certain identifying attributes

正確。此選項完整描述 kk-匿名性的定義:每筆紀錄根據特定識別屬性,至少要與其他 k−1k-1 筆紀錄不可區分,形成至少包含 kk 筆資料的等價類別。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 8 題2 分

In data mining, consider a transactional database with 1,000,000 transactions. An itemset XX appears in 12,000 transactions, and an itemset YY appears in 15,000 transactions. The combined itemset X∪YX\cup Y appears in 9,000 transactions. Which of the following statements is CORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查關聯規則(association rule)的四個常用衡量指標:

  • Support(支持度)
  • Confidence(信賴度)
  • Lift(提升度)
  • Conviction(確信度)

已知:

  • 交易總數:1,000,0001{,}000{,}000
  • XX 出現於 12,00012{,}000 筆交易
  • YY 出現於 15,00015{,}000 筆交易
  • X∪YX\cup Y 同時出現於 9,0009{,}000 筆交易

先換算支持度:

support⁡(X)=12,0001,000,000=0.012\operatorname{support}(X)=\frac{12{,}000}{1{,}000{,}000}=0.012 support⁡(Y)=15,0001,000,000=0.015\operatorname{support}(Y)=\frac{15{,}000}{1{,}000{,}000}=0.015 support⁡(X∪Y)=9,0001,000,000=0.009\operatorname{support}(X\cup Y)=\frac{9{,}000}{1{,}000{,}000}=0.009

解題方法

對規則 X→YX\to Y:

1. Confidence

信賴度表示:在已出現 XX 的交易中,同時出現 YY 的比例。

confidence⁡(X→Y)=support⁡(X∪Y)support⁡(X)\operatorname{confidence}(X\to Y) = \frac{\operatorname{support}(X\cup Y)} {\operatorname{support}(X)}

代入數值:

confidence⁡(X→Y)=0.0090.012=9,00012,000=0.75\operatorname{confidence}(X\to Y) = \frac{0.009}{0.012} = \frac{9{,}000}{12{,}000} = 0.75

因此選項(A)正確。

2. Lift

提升度用來衡量 XX 與 YY 是否具有關聯:

lift⁡(X→Y)=confidence⁡(X→Y)support⁡(Y)\operatorname{lift}(X\to Y) = \frac{\operatorname{confidence}(X\to Y)} {\operatorname{support}(Y)} lift⁡(X→Y)=0.750.015=50\operatorname{lift}(X\to Y) = \frac{0.75}{0.015} = 50

因為 50>150>1,表示同時出現 XX 與 YY 的情況,遠高於兩者獨立時的預期。

3. Conviction

確信度定義為:

conviction⁡(X→Y)=1−support⁡(Y)1−confidence⁡(X→Y)\operatorname{conviction}(X\to Y) = \frac{1-\operatorname{support}(Y)} {1-\operatorname{confidence}(X\to Y)} conviction⁡(X→Y)=1−0.0151−0.75=0.9850.25=3.94\operatorname{conviction}(X\to Y) = \frac{1-0.015}{1-0.75} = \frac{0.985}{0.25} = 3.94

因此 conviction 大於 11。


選項分析

(A)The confidence of the rule X→YX\to Y is 0.75.

正確。

confidence⁡(X→Y)=9,00012,000=0.75\operatorname{confidence}(X\to Y) = \frac{9{,}000}{12{,}000} = 0.75
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 9 題2 分

A processor uses a pipelined architecture with multiple stages. Which situation most directly causes a control hazard?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查管線化處理器(pipelined processor)中的三類危障(hazard):

  1. 結構危障(structural hazard):多個指令同時需要同一項硬體資源。
  2. 資料危障(data hazard):目前指令需要使用前一指令尚未完成產生的資料。
  3. 控制危障(control hazard):處理器尚未確定程式的下一個執行位址,常發生於分支或跳躍指令。

控制危障的核心原因是:分支指令的執行結果會決定下一條要擷取的指令,但管線必須提前進行 instruction fetch,因此可能擷取到錯誤路徑上的指令。


解題方法

判斷各選項所描述的問題類型,再與 control hazard 的定義比對。

若處理器遇到條件分支,例如:

if (x == 0)
 goto L1;
else
 goto L2;

在分支條件尚未計算完成前,處理器不知道下一步應該:

  • 擷取 L1 的指令;
  • 擷取 L2 的指令;
  • 繼續執行分支指令後方的順序指令。

此時管線可能先擷取錯誤路徑的指令。待分支結果確定後,錯誤擷取的指令必須被清除(flush),並改從正確位址重新擷取,造成管線停頓與效能損失。這就是控制危障。

因此,最直接造成 control hazard 的情況是:

處理器遇到結果尚未確定的分支指令。


選項分析

(A) Two instructions require the same hardware resource at the same time.

兩個指令在同一時間需要相同硬體資源,例如:

  • 兩個指令同時需要唯一的記憶體存取單元;
  • 兩個指令同時需要同一個算術邏輯單元;
  • 同一個暫存器檔案寫入埠不足。

這會造成結構危障(structural hazard),而非控制危障。

因此,(A) 錯誤。


(B) An instruction depends on the result of a previous instruction.

目前指令依賴前一指令尚未完成的結果,例如:

ADD R1, R2, R3
SUB R4, R1, R5

SUB 必須使用 ADD 寫入 R1 的結果。若 ADD 尚未完成,SUB 便可能讀不到正確資料。

這屬於資料危障(data hazard),常見形式包括:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 10 題2 分

In an operating system, various synchronization mechanisms are used to coordinate concurrent processes. Which of the following statements about mutex locks and semaphores is CORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查作業系統中的同步機制,重點是區分:

  • Mutex lock(互斥鎖):確保同一時間最多只有一個執行緒或行程進入臨界區(critical section)。
  • Binary semaphore(二元信號量):信號量值通常為 00 或 11,可用於互斥,但不一定具備互斥鎖的所有語意。
  • Counting semaphore(計數型信號量):初始值代表同時可使用共享資源的數量上限。

信號量通常透過兩個不可分割的原子操作管理:

  • wait、P:嘗試取得資源,信號量減 11;若資源不足,行程阻塞。
  • signal、V:釋放資源,信號量加 11,並喚醒等待中的行程。

若計數型信號量初始值為 NN,在正確執行 wait 與 signal 的前提下,最多允許 NN 個行程同時取得資源。


解題方法

判斷各選項時,依序檢查下列三個關鍵性質:

  1. Mutex 是否保證「同一時間只能有一個」執行者進入臨界區。
  2. Counting semaphore 的初始值是否代表可同時使用的資源數量。
  3. Mutex 或 semaphore 是否本身保證避免死結(deadlock)與公平排程(fairness)。

其中,只有描述「計數型信號量可依初始值限制並行存取數量」的選項符合定義。


選項分析

(A) A mutex allows multiple processes to enter a critical section simultaneously as long as they release the lock quickly.

錯誤。

Mutex 的核心功能就是互斥。當某一行程持有 mutex 時,其他行程必須等待,即使持有者很快釋放鎖,也不會允許多個行程同時進入臨界區。

「很快釋放」只會影響等待時間,不會改變 mutex 的互斥性質。正確敘述應為:

Mutex 同一時間最多允許一個行程進入臨界區。


(B) A counting semaphore can allow a limited number of processes to access a shared resource concurrently, based on its initial value.

正確。

計數型信號量的初始值可代表可用資源的數量。若設定:

S=NS=N

則最多允許 NN 個行程同時取得資源。

每個行程進入資源區前執行一次 wait(S):

S←S−1S \leftarrow S-1

離開後執行一次 signal(S):

S←S+1S \leftarrow S+1
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 11 題2 分

Standard Recurrent Neural Networks (RNNs) often suffer from the vanishing gradient problem. Which of the following architectural modifications is most effective at addressing this issue?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查循環神經網路(Recurrent Neural Network, RNN)的「梯度消失」(vanishing gradient)及其典型改良架構。

標準 RNN 在時間步 tt 的隱藏狀態通常表示為:

ht=ϕ(Whhht−1+Wxhxt+b)\mathbf{h}_t=\phi\left(\mathbf{W}_{hh}\mathbf{h}_{t-1}+\mathbf{W}_{xh}\mathbf{x}_t+\mathbf{b}\right)

訓練時使用時間序列反向傳播(Backpropagation Through Time, BPTT)。若要將較後面時間點的誤差傳回較早時間點,梯度會連續乘上許多項:

∂L∂hk=∂L∂hT∏t=k+1T∂ht∂ht−1\frac{\partial \mathcal{L}}{\partial \mathbf{h}_k} = \frac{\partial \mathcal{L}}{\partial \mathbf{h}_T} \prod_{t=k+1}^{T} \frac{\partial \mathbf{h}_t}{\partial \mathbf{h}_{t-1}}

其中每一項大致包含遞迴權重矩陣 Whh\mathbf{W}_{hh} 與啟動函數導數。當這些乘積的大小長期小於 11,梯度會隨時間步數增加而快速趨近於 00,形成梯度消失;若乘積大於 11,則會形成梯度爆炸。


解題方法

判斷本題的關鍵,是找出「能從架構上改善長期梯度傳遞」的選項。

LSTM(Long Short-Term Memory)在標準 RNN 上加入:

  • 遺忘閘(forget gate)
  • 輸入閘(input gate)
  • 輸出閘(output gate)
  • 細胞狀態(cell state)

LSTM 的細胞狀態更新式為:

ct=ft⊙ct−1+it⊙c~t\mathbf{c}_t = \mathbf{f}_t\odot\mathbf{c}_{t-1} + \mathbf{i}_t\odot\widetilde{\mathbf{c}}_t

其中 ⊙\odot 表示逐元素相乘。細胞狀態具有「加法式」資訊傳遞路徑,因此梯度可以沿著細胞狀態較穩定地傳遞;遺忘閘也能學習保留或捨棄資訊,降低長期依賴所造成的梯度消失。

因此,LSTM 是針對標準 RNN 梯度消失問題所設計的典型架構改良。


選項分析

(A) Increasing the learning rate

提高學習率只會改變參數更新的步幅:

θ←θ−η∇θL\theta \leftarrow \theta-\eta\nabla_\theta\mathcal{L}
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 12 題2 分

What is the primary function of Network Function Virtualization (NFV) in modern networking architecture?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Network Function Virtualization(NFV,網路功能虛擬化)的定義與主要目的。

傳統網路服務通常由專用硬體設備提供,例如:

  • 防火牆(Firewall)
  • 入侵偵測系統(IDS)
  • 負載平衡器(Load Balancer)
  • 網路位址轉換器(NAT)
  • 虛擬私人網路閘道器(VPN Gateway)

NFV 的核心作法,是將這些原本依賴專用硬體的網路功能,改以軟體形式執行在一般伺服器、虛擬機器或容器上。這些虛擬化的網路功能稱為 Virtual Network Functions(VNFs)。

因此,NFV 可降低對專用硬體的依賴,提升部署彈性,也能依據流量需求動態增加或減少資源。

解題方法

判斷 NFV 的關鍵,在於掌握「虛擬化網路功能」這個核心詞組:

專用硬體網路設備功能⟶軟體化、虛擬化的網路服務\text{專用硬體網路設備功能} \quad\longrightarrow\quad \text{軟體化、虛擬化的網路服務}

題目問的是 NFV 的 primary function,應選擇直接描述上述轉換的選項。

選項(B)指出 NFV 將傳統上運行於專用硬體設備的網路服務虛擬化,完整符合 NFV 的定義。

選項分析

(A)It centralizes routing decisions into a single hardware controller.

錯誤。

此敘述較接近對集中式控制架構或 Software-Defined Networking(SDN)的片面描述。SDN 著重於將控制平面與資料平面分離,並可由集中式或邏輯集中式控制器管理網路設備。

NFV 的重點不是把路由決策集中到單一硬體控制器,也不限定使用硬體控制器。NFV 著重的是將網路服務功能軟體化與虛擬化。

(B)It virtualizes network services that traditionally run on dedicated hardware devices.

正確。

NFV 將防火牆、負載平衡、NAT、VPN 等傳統專用硬體功能,轉換為可在一般運算平台上執行的軟體網路功能。

其主要效益包括:

  • 降低專用硬體設備的採購與維護成本
  • 加快網路服務部署速度
  • 依需求彈性擴充或縮減資源
  • 讓網路功能能以軟體方式升級與管理

這正是 NFV 的主要功能。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 13 題2 分

Consider the following adjacency matrix representing a weighted graph:

0123004∞21403∞2∞30132∞10\begin{array}{c|cccc} & 0 & 1 & 2 & 3\\ \hline 0 & 0 & 4 & \infty & 2\\ 1 & 4 & 0 & 3 & \infty\\ 2 & \infty & 3 & 0 & 1\\ 3 & 2 & \infty & 1 & 0 \end{array}

Using Dijkstra's algorithm to find the shortest path from node 0 to node 2, what is the shortest distance?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查加權圖的最短路徑,以及 Dijkstra’s algorithm 的操作流程。

  • adjacency matrix 中的數值代表兩個節點間的邊權重。
  • ∞\infty 表示兩節點間沒有直接連線。
  • 矩陣上下三角對稱,表示本題為無向圖。
  • Dijkstra 演算法適用於所有邊權重皆為非負數的圖。
  • 每次選取目前「尚未確定、暫定距離最小」的節點,將其視為已確定,並更新相鄰節點的暫定距離。

要求的是從節點 00 到節點 22 的最短距離。


解題方法與逐步追蹤

初始設定:

d(0)=0,d(1)=d(2)=d(3)=∞d(0)=0,\qquad d(1)=d(2)=d(3)=\infty

其中 d(x)d(x) 表示目前已知從節點 00 到節點 xx 的最短暫定距離。

Dijkstra 的核心更新公式為:

d(v)←min⁡(d(v),d(u)+w(u,v))d(v)\leftarrow \min\bigl(d(v),d(u)+w(u,v)\bigr)

其中 uu 是目前選出的節點,w(u,v)w(u,v) 是邊 (u,v)(u,v) 的權重。

第一步:選取節點 00

節點 00 是起點,距離為 00。由節點 00 出發:

  • 到節點 11:0+4=40+4=4
  • 到節點 33:0+2=20+2=2
  • 到節點 22:沒有直接邊,仍為 ∞\infty

更新後:

d(0)=0,d(1)=4,d(2)=∞,d(3)=2d(0)=0,\quad d(1)=4,\quad d(2)=\infty,\quad d(3)=2

此時確定節點 00。

第二步:選取節點 33

尚未確定的節點中,暫定距離最小的是節點 33,其距離為 22。

由節點 33 出發,節點 33 與節點 22 的邊權重為 11:

d(2)=min⁡(∞,d(3)+1)=min⁡(∞,2+1)=3d(2)=\min(\infty,d(3)+1) =\min(\infty,2+1) =3

更新後:

d(0)=0,d(1)=4,d(2)=3,d(3)=2d(0)=0,\quad d(1)=4,\quad d(2)=3,\quad d(3)=2

此時確定節點 33。

第三步:選取節點 22

剩餘節點中,節點 22 的暫定距離為 33,小於節點 11 的 44,因此確定節點 22。

一旦目的節點 22 被確定,其最短距離即為:

3\boxed{3}

對應的最短路徑為:

0→3→20\rightarrow 3\rightarrow 2

路徑總權重:

w(0,3)+w(3,2)=2+1=3w(0,3)+w(3,2)=2+1=3

關鍵伪程式碼

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 14 題2 分

You are given a Python function that is supposed to calculate the sum of all integers from 1 to nn using recursion. However, there is a mistake in the code. Identify the mistake and provide the corrected version of the code.

def sum_to_n(n):
    if n == 1:  # base case
        return 1
    else:
        return n + sum_to_n(n)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查遞迴(recursion)的兩個必要組成:

  1. 基底條件(base case):停止遞迴的條件。
  2. 遞迴呼叫(recursive call):將問題縮小,逐步接近基底條件。

計算 11 到 nn 的總和可表示為:

S(n)={1,n=1n+S(n−1),n>1S(n)= \begin{cases} 1, & n=1\\ n+S(n-1), & n>1 \end{cases}

因此,每次遞迴都必須把參數由 nn 減少為 n−1n-1。


原程式的錯誤

原程式如下:

def sum_to_n(n):
 if n == 1: # base case
 return 1
 else:
 return n + sum_to_n(n)

錯誤位於:

sum_to_n(n)

遞迴呼叫時參數仍然是 nn,沒有逐步減少。

例如執行 sum_to_n(3):

sum_to_n(3)
= 3 + sum_to_n(3)
= 3 + 3 + sum_to_n(3)
= 3 + 3 + 3 + sum_to_n(3)
...

由於參數永遠是 33,永遠不會達到 n == 1,最後會造成無限遞迴,並引發 Python 的 RecursionError。


解題方法與正確程式碼

當目前要計算 11 到 nn 的總和時,可以先取出 nn,再加上 11 到 n−1n-1 的總和:

S(n)=n+S(n−1)S(n)=n+S(n-1)

所以應將遞迴呼叫改為 sum_to_n(n-1):

def sum_to_n(n):
 if n == 1: # base case
 return 1
 else:
 return n + sum_to_n(n - 1)

逐步追蹤(Trace)

以 sum_to_n(4) 為例:

sum_to_n(4)
= 4 + sum_to_n(3)
= 4 + 3 + sum_to_n(2)
= 4 + 3 + 2 + sum_to_n(1)
= 4 + 3 + 2 + 1
= 10

函式返回的順序如下:

sum_to_n(1) = 1
sum_to_n(2) = 2 + 1 = 3
sum_to_n(3) = 3 + 3 = 6
sum_to_n(4) = 4 + 6 = 10

因此,程式正確計算出:

1+2+3+4=101+2+3+4=10

選項分析

(A) Change sum_to_n(n) to sum_to_n(n-1) in the recursive call

正確。

改成:

return n + sum_to_n(n - 1)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 15 題2 分

Which statement best explains why hashing is not suitable for encrypting data that needs to be recovered later?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查「雜湊(hashing)」與「加密(encryption)」的用途差異。

雜湊函數會將任意長度的輸入資料,經由固定的計算程序轉換成摘要值(hash value 或 digest)。其主要特性包括:

  • 單向性(one-way):由原文計算雜湊值容易,但無法有效率地由雜湊值還原原文。
  • 固定長度輸出:多數密碼學雜湊函數會產生固定長度的摘要,例如 SHA-256 產生 256256 位元的輸出。
  • 不需要共享密鑰:一般雜湊函數本身不使用密鑰。
  • 可處理各種形式的資料:不只限於文字,也可以處理圖片、檔案、程式或任意位元資料。

相對地,資料加密的目的是讓資料在需要時能夠由合法持有者解密還原,因此加密演算法必須具有可逆性,通常搭配金鑰使用:

明文→加密密文→解密明文\text{明文} \xrightarrow{\text{加密}} \text{密文} \xrightarrow{\text{解密}} \text{明文}

雜湊則是:

資料→雜湊摘要值\text{資料} \xrightarrow{\text{雜湊}} \text{摘要值}

摘要值的設計目的不是還原原始資料,而是用來進行完整性驗證、密碼儲存或資料指紋比對。

解題方法

題幹問:「為什麼 hashing 不適合用來加密日後需要恢復的資料?」

關鍵在於辨認「需要恢復」代表必須能從處理後的結果取得原始資料。因此,適合此用途的技術應該是可逆的加密;而雜湊函數具有單向性,無法有效反推輸入。

因此,直接選擇描述「雜湊不可逆」的選項:

Hash functions are one-way functions and cannot be reversed.\boxed{\text{Hash functions are one-way functions and cannot be reversed.}}

選項分析

(A) Hash functions are computationally expensive to compute.

錯誤。

雜湊函數通常設計成可以快速計算。雖然不同雜湊演算法的計算成本可能不同,但「計算昂貴」不是雜湊不適合資料恢復的根本原因。

真正的問題是:即使已經快速算出雜湊值,也不能由雜湊值有效還原原始資料。


(B) Hash functions generate variable-length outputs.

錯誤。

密碼學雜湊函數通常會產生固定長度的輸出。例如:

  • SHA-256:輸出 256256 位元
  • SHA-512:輸出 512512 位元
  • MD5:輸出 128128 位元
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 16 題2 分

Which of the following statements about major data mining algorithms is CORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查四類常見資料探勘與機器學習演算法:

  • Apriori:關聯規則探勘,利用支持度的反單調性質篩選頻繁項目集。
  • kk-means:分群演算法,透過反覆更新群中心與分配群組來最小化群內平方誤差。
  • 決策樹:利用資訊增益、增益率等不純度指標選擇切割屬性。
  • DBSCAN:以密度為基礎的分群方法,不需事先指定群數。
  • PCA:非監督式降維方法,尋找能保留最大變異的方向。

解題方法

判斷這類敘述時,應逐一核對:

  1. 演算法的學習類型:監督式或非監督式。
  2. 演算法的核心目標函數或評估指標。
  3. 是否需要事先指定群數或其他參數。
  4. 演算法的搜尋策略與保證性質。
  5. 演算法適用的資料型態與群集形狀。

其中,若選項同時混合正確與錯誤的演算法特徵,通常關鍵錯誤會出現在「搜尋策略」、「最佳化保證」、「是否需要指定參數」或「監督/非監督」等字眼。


選項分析

(A) Apriori 使用深度優先搜尋,並以資訊增益刪除候選項目集

此敘述錯誤。

Apriori 採用的是逐層、廣度優先的候選項目集生成方式,而非深度優先搜尋。其流程大致如下:

  1. 找出頻繁 11-項目集 L1L_1。
  2. 由 LkL_k 產生候選 (k+1)(k+1)-項目集 Ck+1C_{k+1}。
  3. 計算候選項目集的支持度。
  4. 刪除支持度低於門檻的候選項目集。
  5. 重複上述步驟。

Apriori 的核心依據是頻繁項目集的反單調性質:

若某個項目集不是頻繁項目集,則包含它的任何超集合也不會是頻繁項目集。

其形式為:

X∉Frequent⇒∀Y⊇X,  Y∉FrequentX \notin \text{Frequent} \Rightarrow \forall Y \supseteq X,\; Y \notin \text{Frequent}

因此,Apriori 是根據**支持度(support)**進行剪枝,而非使用資訊增益(information gain)。資訊增益主要用於決策樹的屬性選擇。

Apriori 的候選項目集數量在最壞情況下可能呈指數成長,若共有 mm 個不同項目,所有非空項目集最多有:

2m−12^m-1

因此其時間複雜度通常具有指數級最壞情況,空間複雜度也可能因候選集數量龐大而快速增加。


(B) kk-means 因每次降低群內變異數,所以保證收斂至全域最佳解

此敘述錯誤。

kk-means 的目標是最小化群內平方誤差,通常稱為 within-cluster sum of squares:

J=∑i=1k∑x∈Ci∥x−μi∥2J=\sum_{i=1}^{k}\sum_{x\in C_i}\|x-\mu_i\|^2

其中:

  • CiC_i 為第 ii 個群集;
  • μi\mu_i 為第 ii 個群集的中心;
  • kk 為群集數量。

每次迭代通常包含兩個步驟:

  1. 分配步驟:將每筆資料分配給距離最近的群中心。
  2. 更新步驟:重新計算每個群集的平均值作為新的群中心。

這兩個步驟會使目標函數不增加,因此演算法通常會收斂。然而,這只能保證收斂至某個局部最佳解或固定點,不能保證為全域最佳解。

結果高度依賴:

  • 初始群中心;
  • 群集數 kk;
  • 資料尺度;
  • 距離函數。

因此實務上常使用 kk-means++ 選擇較佳初始中心,或重複執行多次後選擇目標函數最小的結果。

若資料筆數為 nn、群集數為 kk、維度為 dd、迭代次數為 tt,常見時間複雜度約為:

O(nkdt)O(nkdt)

空間複雜度約為:

O(n+kd)O(n+kd)

其中 O(n)O(n) 用於儲存資料的群組標籤,O(kd)O(kd) 用於儲存群中心。


(C) ID3 與 C4.5 使用不純度指標選擇屬性,並遞迴切割資料空間

此敘述正確。

決策樹演算法會在每個節點選擇適合的屬性進行切割,讓切割後的子節點更加純粹,並以遞迴方式建立樹狀模型。

1. ID3 與資訊增益

ID3 常使用熵(entropy)衡量資料的不純度:

H(S)=−∑cpclog⁡2pcH(S)=-\sum_{c}p_c\log_2p_c

其中 pcp_c 是資料集中屬於類別 cc 的比例。

若以屬性 AA 切割資料,資訊增益為:

IG(S,A)=H(S)−∑v∈Values(A)∣Sv∣∣S∣H(Sv)IG(S,A) = H(S) - \sum_{v\in Values(A)} \frac{|S_v|}{|S|}H(S_v)

其中:

  • SS 為目前資料集;
  • SvS_v 為屬性 AA 取值為 vv 的子集合;
  • H(S)H(S) 為切割前熵;
  • 切割後加權熵越小,資訊增益越大。

ID3 通常選擇資訊增益最大的屬性作為下一個切割屬性。

2. C4.5 與增益率

C4.5 改進 ID3,常使用增益率(gain ratio):

GainRatio(S,A)=IG(S,A)SplitInfo(S,A)GainRatio(S,A) = \frac{IG(S,A)}{SplitInfo(S,A)}

其中:

SplitInfo(S,A)=−∑v∣Sv∣∣S∣log⁡2∣Sv∣∣S∣SplitInfo(S,A) = -\sum_{v} \frac{|S_v|}{|S|} \log_2 \frac{|S_v|}{|S|}

增益率可以降低資訊增益偏好「具有大量不同取值的屬性」之問題。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 17 題2 分

Which of the following has the same in-order traversal sequence as its post-order traversal sequence?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查二元樹的三種走訪順序:

  • In-order traversal(中序走訪):左子樹 →\rightarrow 根節點 →\rightarrow 右子樹
  • Post-order traversal(後序走訪):左子樹 →\rightarrow 右子樹 →\rightarrow 根節點

若要使中序與後序序列完全相同,關鍵在於:

  1. 節點不能出現在根節點之後的額外位置。
  2. 每個節點的右子樹必須為空。
  3. 樹的結構必須一路向左延伸,也就是 Left skewed binary tree(左斜二元樹)。

解題方法

以一棵左斜樹為例:

 A
 /
 B
 /
C

其中:

  • AA 是根節點
  • BB 是 AA 的左子節點
  • CC 是 BB 的左子節點

中序走訪:

C→B→AC \rightarrow B \rightarrow A

後序走訪:

C→B→AC \rightarrow B \rightarrow A

因此,中序與後序序列完全相同。

一般而言,左斜樹的每個節點都沒有右子樹。對於每個節點而言,中序與後序都會先處理左子樹,最後處理根節點,因此兩種走訪順序一致。


選項分析

(A) Left skewed binary tree:正確

左斜樹的每個節點最多只有左子節點,沒有右子樹。

例如:

 A
 /
 B
 /
C

中序與後序皆為:

C→B→AC \rightarrow B \rightarrow A

所以此選項符合題意。


(B) Right skewed binary tree:錯誤

右斜樹的每個節點最多只有右子節點,例如:

A
 \
 B
 \
 C

中序走訪為:

A→B→CA \rightarrow B \rightarrow C

後序走訪為:

C→B→AC \rightarrow B \rightarrow A

兩者順序相反,因此不符合題意。


(C) Complete binary tree:錯誤

Complete binary tree(完全二元樹)要求除了最後一層外,各層皆填滿,且最後一層的節點由左至右排列。

以最典型的三節點完全二元樹為例:

 A
 / \
 B C

中序走訪為:

B→A→CB \rightarrow A \rightarrow C

後序走訪為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 18 題2 分

Which of the following best explains the concept of a page fault in a virtual memory system?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查虛擬記憶體(virtual memory)中的「頁面錯誤」(page fault)定義與處理機制。

作業系統會將行程的虛擬位址空間切分成固定大小的頁面(page),而實體記憶體則切分成頁框(page frame)。頁表(page table)記錄虛擬頁面目前是否位於實體記憶體中,以及其對應的實體頁框位置。

當處理器存取某個虛擬頁面時:

  • 若該頁面已在實體記憶體中,便可直接完成位址轉換。
  • 若該頁面不在實體記憶體中,處理器會觸發 page fault,由作業系統將該頁面從磁碟或其他後備儲存裝置載入實體記憶體,再重新執行被中斷的指令。

因此,page fault 的核心條件是:

行程存取的頁面不在目前的實體記憶體中\text{行程存取的頁面不在目前的實體記憶體中}

解題方法

判斷本題的關鍵,是辨認 page fault 的標準定義:

A page fault occurs when a process tries to access a page that is not currently in physical memory.

也就是「行程嘗試存取目前不在實體記憶體中的頁面」。

符合此定義的選項為 (B)。

典型處理流程如下:

  1. 行程產生虛擬位址。
  2. 處理器查詢頁表。
  3. 頁表中的 present bit 或 valid bit 顯示該頁面不在實體記憶體。
  4. 硬體觸發 page fault trap。
  5. 作業系統找到該頁面在磁碟上的位置。
  6. 找到可用頁框;若沒有可用頁框,先選擇頁面置換對象。
  7. 將所需頁面載入實體記憶體。
  8. 更新頁表。
  9. 重新執行原本失敗的記憶體存取指令。

選項分析

(A) A page fault occurs when a page is modified but not written back to disk.

錯誤。

頁面被修改但尚未寫回磁碟,稱為「髒頁」(dirty page)。當作業系統要將髒頁置換出去時,必須先將其內容寫回磁碟,以免資料遺失。

「頁面被修改但尚未寫回磁碟」本身不代表 page fault。只有在行程存取的頁面不在實體記憶體時,才會發生 page fault。

(B) A page fault occurs when a process tries to access a page that is not currently in physical memory.

正確。

這正是 page fault 的標準定義。虛擬記憶體允許行程使用大於實體記憶體容量的位址空間,因此某些頁面可能暫時存放在磁碟中,而不在實體記憶體內。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 19 題2 分

Which of the following best describes the role of edge computing in AI-powered systems?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Edge Computing(邊緣運算) 在 AI 系統中的角色。

邊緣運算是指:將資料處理、AI 推論或部分模型運算,放在接近資料產生位置的設備或節點上,例如:

  • 感測器
  • 智慧攝影機
  • 手機
  • 車載系統
  • 工業閘道器
  • 工廠內部伺服器

傳統雲端運算通常將資料傳送至遠端大型資料中心處理;邊緣運算則讓資料在靠近來源處先行處理,因此可以:

  1. 降低資料往返雲端所需的延遲時間(latency)。
  2. 提升即時 AI 推論的反應速度。
  3. 減少大量原始資料上傳所造成的網路頻寬負擔。
  4. 在網路不穩定時維持部分系統功能。
  5. 增加資料隱私與安全性,因為部分原始資料不必離開現場。

邊緣運算並不代表完全取消雲端。實際 AI 系統常採用雲端與邊緣協同架構:雲端負責大型模型訓練、集中管理與長期分析,邊緣端負責即時資料處理與推論。

解題方法

判斷本題的關鍵,在於掌握 Edge Computing 的核心定義:

將運算工作移近資料產生的位置,以降低延遲並提升即時處理能力。

題目問的是 edge computing 在 AI-powered systems 中的「角色」。因此應尋找同時符合下列條件的選項:

  • 資料在靠近來源的位置處理。
  • 目的包含降低延遲。
  • 有助於即時 AI 推論或反應。

只有選項 (E) 完整符合這三項條件。

選項分析

(A) Processing all AI workloads only in large centralized cloud data centers

將所有 AI 工作負載只放在大型集中式雲端資料中心,描述的是集中式雲端運算,而非邊緣運算。

邊緣運算的重點正是把部分運算移至靠近資料來源的位置。雲端仍可負責模型訓練與大量資料分析,但「all」與「only」表示所有工作都只能在雲端完成,與邊緣運算的概念相反。

因此 (A) 錯誤。

(B) Improving AI accuracy by training all models exclusively on historical datasets

此選項討論的是模型訓練資料與 AI 準確度,並非邊緣運算的核心功能。

邊緣運算主要改善的是:

  • 推論延遲
  • 即時反應速度
  • 網路頻寬使用
  • 資料傳輸需求

模型是否使用歷史資料訓練,與運算位置沒有直接等同關係。AI 模型也可使用即時資料、增量資料或其他訓練資料進行更新;「exclusive」表示只能使用歷史資料,過度絕對。

因此 (B) 錯誤。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 20 題2 分

Which of the following statements about TCP Reno is INCORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 TCP Reno 的壅塞控制機制,重點包括:

  • Slow Start
  • Congestion Avoidance
  • 三次重複 ACK
  • Fast Recovery
  • Timeout
  • cwndcwnd 與 ssthreshssthresh 的調整方式

TCP Reno 主要依據壅塞事件採取不同反應:

壅塞事件Reno 的主要處理
建立連線初期Slow Start,cwndcwnd 指數成長
cwndcwnd 達到 ssthreshssthresh進入 Congestion Avoidance
收到三個 Duplicate ACKFast Retransmit + Fast Recovery
發生 Timeoutcwndcwnd 降至一個 Segment,重新 Slow Start

解題方法

判斷本題的關鍵,是區分兩種封包遺失偵測方式:

  1. 三次重複 ACK:代表網路仍能持續傳送封包與回覆 ACK,通常視為較輕微的壅塞,TCP Reno 使用 Fast Recovery。
  2. Timeout:代表可能有較嚴重的壅塞,TCP Reno 將 cwndcwnd 大幅降至 11 個 Segment,重新進入 Slow Start。

TCP Reno 收到三次重複 ACK 時,典型處理為:

ssthresh=cwnd2ssthresh=\frac{cwnd}{2}

進入 Fast Recovery 後,cwndcwnd 會暫時膨脹以反映重複 ACK;當收到新的 ACK、確認遺失封包已成功重傳時:

cwnd=ssthreshcwnd=ssthresh

接著進入 Congestion Avoidance,以線性方式增加 cwndcwnd。

因此,「Fast Recovery 後將 cwndcwnd 降至一個 Segment」描述的是 Timeout 所採用的處理方式,並非 Reno 的標準 Fast Recovery 結束動作。


選項分析

(A) TCP Reno uses Slow Start to exponentially increase the congestion window at the beginning of a connection.

正確。

TCP Reno 在連線開始時通常先使用 Slow Start。每收到一個新的 ACK,cwndcwnd 增加約一個 MSS,因此一個 RTT 內,cwndcwnd 約會加倍,呈現指數成長:

1, 2, 4, 8, 16,…1,\ 2,\ 4,\ 8,\ 16,\ldots

當 cwndcwnd 達到 ssthreshssthresh 後,才轉入 Congestion Avoidance。


(B) TCP Reno switches to Congestion Avoidance once the congestion window (cwndcwnd) reaches the slow-start threshold (ssthreshssthresh).

正確。

ssthreshssthresh 是 Slow Start 與 Congestion Avoidance 的分界點:

  • cwnd<ssthreshcwnd < ssthresh:使用 Slow Start。
  • cwnd≥ssthreshcwnd \geq ssthresh:進入 Congestion Avoidance。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 21 題2 分

In a classic 5-stage CPU pipeline (IF, ID, EX, MEM, WB), what is the main effect of pipelining on program execution?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查經典五級 CPU pipeline:

  1. IF(Instruction Fetch):取出指令
  2. ID(Instruction Decode):指令解碼與讀取暫存器
  3. EX(Execute):執行運算或計算位址
  4. MEM(Memory Access):存取記憶體
  5. WB(Write Back):將結果寫回暫存器

Pipelining 的核心概念,是把一條指令的執行拆成多個階段,讓不同指令在同一時間分別處於不同階段。

例如:

時脈週期指令 1指令 2指令 3
1IF
2IDIF
3EXIDIF
4MEMEXID
5WBMEMEX
6WBMEM
7WB

因此,pipeline 的主要效果是提升整體指令完成率,也就是 throughput,而非把單一指令的執行時間縮短到一個時脈週期以下。


解題方法

判斷 pipeline 題目時,先區分兩個概念:

  • Latency:單一指令從開始到完成所需的時間。
  • Throughput:單位時間內完成多少指令。

五級 pipeline 在理想情況下,第一條指令仍須經過約五個時脈週期才能完成;但 pipeline 填滿後,理想上每個時脈週期可完成一條指令。

若有 nn 條指令、每條指令均順利通過五級 pipeline,理想完成時間為:

5+(n−1)=n+45+(n-1)=n+4

但實際執行可能遇到:

  • Structural hazard:硬體資源衝突
  • Data hazard:指令間資料相依
  • Control hazard:分支、跳躍造成的控制流程不確定

此時可能需要插入 stall,也可能利用 forwarding 降低等待時間。因此,最完整且正確的敘述是「提升整體 throughput,但 hazard 仍可能造成停頓,或需要 forwarding 處理」。


選項分析

(A) It reduces the latency of each individual instruction to less than one clock cycle.

錯誤。

Pipelining 主要提升的是整體 throughput,不會使單一指令的 latency 降到小於一個時脈週期。五級 pipeline 中,一條指令仍須依序通過 IF、ID、EX、MEM、WB 等階段,通常需要多個時脈週期才能完成。


(B) It increases the CPU clock frequency without any need for hazard handling.

錯誤。

將指令切分成多個階段,確實有助於縮短每個 pipeline stage 的組合邏輯延遲,因而可能提高 CPU clock frequency。然而,pipeline 仍會產生資料、結構與控制 hazard,必須透過 stall、forwarding、branch prediction 等機制處理。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 22 題2 分

The arithmetic of Galois Field GF(28)\mathrm{GF}(2^8) can be implemented using polynomial multiplication modulo an irreducible polynomial. Assume the irreducible polynomial is m(x)=x8+x+1m(x)=x^8+x+1. Compute the multiplication of the two byte values: 0x13\texttt{0x13} and 0x04\texttt{0x04} in GF(28)\mathrm{GF}(2^8).

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查有限體 GF(28)\mathrm{GF}(2^8) 中的多項式乘法。

在 GF(2)\mathrm{GF}(2) 中,係數只有 00 與 11,且加法等同於 XOR:

1+1=01+1=0

每個 8 位元組可表示為一個最高次不超過 77 的二元多項式。位元位置 ii 對應 xix^i:

0x13=000100112=x4+x+1\texttt{0x13}=00010011_2=x^4+x+1 0x04=000001002=x2\texttt{0x04}=00000100_2=x^2

有限體中的乘法規則為:

a(x)b(x) mod m(x)a(x)b(x)\bmod m(x)

其中

m(x)=x8+x+1m(x)=x^8+x+1

是不可約多項式。


解題方法

將兩個 byte 轉為多項式:

0x13⋅0x04=(x4+x+1)x2\texttt{0x13}\cdot\texttt{0x04} =(x^4+x+1)x^2

逐項相乘:

=x6+x3+x2=x^6+x^3+x^2

此結果的最高次為 66,小於 88,因此不需要使用

x8=x+1x^8=x+1

進行模除約化。

再將

x6+x3+x2x^6+x^3+x^2

轉回 8 位元表示:

  • x6x^6:0x40\texttt{0x40}
  • x3x^3:0x08\texttt{0x08}
  • x2x^2:0x04\texttt{0x04}

因此:

0x40⊕0x08⊕0x04=0x4C\texttt{0x40}\oplus\texttt{0x08}\oplus\texttt{0x04} =\texttt{0x4C}

所以:

0x13⊗0x04=0x4C\boxed{\texttt{0x13}\otimes\texttt{0x04}=\texttt{0x4C}}

以程式演算法追蹤

常見的 GF(2^8) 乘法會使用 Russian Peasant Multiplication,並以 xtime 完成乘以 xx 的操作:

unsigned char xtime(unsigned char a) {
 if (a & 0x80)
 return (a << 1) ^ 0x03; // m(x) = x^8 + x + 1
 else
 return a << 1;
}

原因是:

x8+x+1=0x^8+x+1=0

在 GF(2)\mathrm{GF}(2) 中,減法與加法相同,因此:

x8=x+1x^8=x+1

當最高位為 11 時,左移產生 x8x^8,需 XOR 0x03\texttt{0x03},因為:

x+1=0x03x+1=\texttt{0x03}

乘法追蹤如下:

迭代abb & 1p
初始0x130x04—0x00
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 23 題2 分

In supervised learning, what is the primary purpose of using a validation dataset?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

在 supervised learning(監督式學習)中,資料通常分為:

  • Training dataset(訓練集):用來學習模型參數,例如神經網路的權重。
  • Validation dataset(驗證集):用來調整模型的 hyperparameters(超參數),並監測模型是否 overfitting(過度擬合)。
  • Test dataset(測試集):在模型與超參數都確定後,用來評估模型對未見資料的最終表現。

模型參數與超參數的差異如下:

  • 模型參數(parameters):由訓練資料自動學得,例如線性回歸的係數、神經網路的權重。
  • 超參數(hyperparameters):由使用者或模型選擇流程設定,例如 learning rate、樹的最大深度、正則化強度、神經網路層數。

驗證集的主要功能,是比較不同超參數設定下的模型表現,選出泛化能力較佳的模型,並觀察模型是否開始過度適應訓練資料。

例如,若模型在訓練集上的準確率持續上升,但驗證集上的準確率開始下降,表示模型可能正在 overfitting。

解題方法

判斷本題可依照資料集的用途切入:

  1. 找出「調整模型設定」與「偵測過度擬合」相關的選項。
  2. 區分 validation dataset 與 test dataset:
  • Validation dataset 用於模型選擇與超參數調整。
  • Test dataset 用於最後一次、較客觀的性能評估。
  1. 因此,最符合驗證集主要用途的選項是:
Tune model hyperparameters and detect overfitting\boxed{\text{Tune model hyperparameters and detect overfitting}}

選項分析

(A) To increase the size of the training data.

錯誤。

驗證集不是用來增加訓練資料大小。資料被分成訓練集與驗證集後,驗證集通常不直接參與模型參數的學習。

若將驗證集重新併入訓練集,確實可以增加最終訓練資料量,但這是模型選擇完成後可能採取的額外策略,不是建立驗證集的主要目的。

(B) To evaluate the final performance of the model.

錯誤。

評估模型最終性能主要是 test dataset 的用途。測試集必須在模型架構、超參數與訓練流程確定後使用,才能提供較客觀的泛化能力估計。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 24 題2 分

Consider the following relation:

Enrollment(StudentID,StudentName,CourseID,CourseName,InstructorName)Enrollment(StudentID, StudentName, CourseID, CourseName, InstructorName)

Assume:

  1. Each student has only one StudentName.
  2. Each course has only one CourseName.
  3. Each course is taught by only one InstructorName.
  4. A student can enroll in multiple courses.

Which of the following decompositions correctly converts the relation into Third Normal Form (3NF)?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查關聯式資料庫的函數相依(Functional Dependency)與第三正規化(Third Normal Form, 3NF)。

原始關係為:

Enrollment(StudentID,StudentName,CourseID,CourseName,InstructorName)Enrollment(StudentID, StudentName, CourseID, CourseName, InstructorName)

根據題目條件,可得到下列函數相依:

  1. 每位學生只有一個姓名:
StudentID→StudentNameStudentID \rightarrow StudentName
  1. 每門課程只有一個課名:
CourseID→CourseNameCourseID \rightarrow CourseName
  1. 每門課程只有一位授課教師:
CourseID→InstructorNameCourseID \rightarrow InstructorName
  1. 一位學生可以修讀多門課,因此一筆選課紀錄必須由學生與課程共同決定。候選鍵為:
(StudentID,CourseID)(StudentID, CourseID)

因為只有同時知道學生與課程,才能唯一識別一筆選課資料。


解題方法

原始關係的候選鍵是 (StudentID,CourseID)(StudentID, CourseID),但存在以下部分函數相依:

StudentID→StudentNameStudentID \rightarrow StudentName CourseID→CourseName,InstructorNameCourseID \rightarrow CourseName, InstructorName

也就是說:

  • StudentNameStudentName 只依賴 StudentIDStudentID,不需要知道 CourseIDCourseID。
  • CourseNameCourseName 與 InstructorNameInstructorName 只依賴 CourseIDCourseID,不需要知道 StudentIDStudentID。

這些都是非主屬性對複合鍵一部分的相依,會造成資料重複與更新異常,因此原始關係甚至未達第二正規化(2NF),當然也未達 3NF。

正規化時,應依照各個決定因素拆分:

學生資料:

Student(StudentID,StudentName)Student(StudentID, StudentName)

課程資料:

Course(CourseID,CourseName,InstructorName)Course(CourseID, CourseName, InstructorName)

學生與課程的多對多選課關係:

Enrollment(StudentID,CourseID)Enrollment(StudentID, CourseID)

在這三個關係中:

  • StudentIDStudentID 是 StudentStudent 的主鍵。
  • CourseIDCourseID 是 CourseCourse 的主鍵。
  • (StudentID,CourseID)(StudentID, CourseID) 是 EnrollmentEnrollment 的複合主鍵。

每個關係中的非主屬性都完全依賴其主鍵,且沒有非鍵屬性經由其他非鍵屬性傳遞決定,因此符合 3NF。


選項分析

(A) Enrollment(StudentID,CourseID)Enrollment(StudentID, CourseID)

錯誤。

此選項只保留學生與課程的選課關係,雖然它是正確的關聯表,但遺失了:

  • StudentNameStudentName
  • CourseNameCourseName
  • InstructorNameInstructorName

因此無法完整表示原始關係的資料,不是完整且無損的 3NF 分解。


(B) Enrollment(StudentID,StudentName,CourseID)Enrollment(StudentID, StudentName, CourseID),Course(CourseID,InstructorName)Course(CourseID, InstructorName)

錯誤。

此選項有兩個主要問題:

第一,完全遺失 CourseNameCourseName,無法保留原始關係的所有資訊。

第二,第一個關係仍存在:

StudentID→StudentNameStudentID \rightarrow StudentName

其候選鍵為 (StudentID,CourseID)(StudentID, CourseID),但 StudentNameStudentName 只依賴複合鍵的一部分 StudentIDStudentID,因此仍有部分函數相依,未達 2NF,更不可能達到 3NF。


(C) Student(StudentID,StudentName,CourseID)Student(StudentID, StudentName, CourseID),Course(CourseID,CourseName,InstructorName)Course(CourseID, CourseName, InstructorName)

錯誤。

雖然課程關係:

Course(CourseID,CourseName,InstructorName)Course(CourseID, CourseName, InstructorName)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 25 題2 分

Consider the following processes with their arrival times and CPU burst times, in milliseconds:

ProcessArrival TimeBurst Time
P1P_106
P2P_228
P3P_347
P4P_453

Using non-preemptive Shortest Job First (SJF) scheduling, what is the Average Waiting Time (AWT)?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查非搶先式最短工作優先排程(non-preemptive Shortest Job First, SJF)。

  • 非搶先式:處理程序一旦開始執行,必須完成整個 CPU burst,不能被新到達且更短的程序中斷。
  • SJF:CPU 每次閒置時,從「目前已到達且尚未執行」的程序中,選擇 Burst Time 最短者。
  • 等待時間(Waiting Time):
Waiting Time=開始執行時間−到達時間\text{Waiting Time} = \text{開始執行時間} - \text{到達時間}
  • 平均等待時間(Average Waiting Time, AWT):
AWT=∑各程序等待時間程序總數\text{AWT} = \frac{\sum \text{各程序等待時間}}{\text{程序總數}}

解題方法

依照時間順序追蹤 CPU 的執行狀況。

1. 時間 00:選擇 P1P_1

時間 00 時只有 P1P_1 已到達,因此先執行 P1P_1。

P1:0∼6P_1: 0 \sim 6

執行期間:

  • P2P_2 於時間 22 到達
  • P3P_3 於時間 44 到達
  • P4P_4 於時間 55 到達

由於是非搶先式 SJF,P1P_1 不會被中斷。

2. 時間 66:從已到達程序選最短者

時間 66 時,尚未執行且已到達的程序為:

ProcessBurst Time
P2P_28
P3P_37
P4P_43

最短的是 P4P_4,因此執行:

P4:6∼9P_4: 6 \sim 9

3. 時間 99:選擇下一個最短者

剩下:

  • P2P_2:Burst Time 88
  • P3P_3:Burst Time 77

因此選擇 P3P_3:

P3:9∼16P_3: 9 \sim 16

4. 時間 1616:執行最後的 P2P_2

最後執行 P2P_2:

P2:16∼24P_2: 16 \sim 24

完整執行順序為:

P1→P4→P3→P2P_1 \rightarrow P_4 \rightarrow P_3 \rightarrow P_2

等待時間計算

ProcessArrival Time開始時間Waiting Time
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 26 題2 分

Natural Language Processing (NLP) is one of the most popular AI applications. What is the purpose of NLP tokenization?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查自然語言處理(Natural Language Processing, NLP)中的 tokenization(分詞/詞元化)。

電腦無法直接以人類閱讀句子的方式理解原始文字,因此必須先將文字切割成較小、可供模型處理的單位,稱為 token(詞元)。Token 的形式可能包括:

  • 完整單字:computer
  • 子詞(subword):comput、er
  • 字元:A、I
  • 標點符號:,、.

例如,句子:

I love programming.

經過 tokenization 後,可能被切分為:

[I, love, programming, .][\text{I},\ \text{love},\ \text{programming},\ \text{.}]

現代大型語言模型常使用子詞 tokenization,使模型能處理罕見字、複合字及未曾完整看過的單字。

解題方法

判斷 tokenization 的關鍵是掌握其定義:

將原始文字轉換成較小的文字單位,以便後續模型進行編碼、分析與運算。

因此,選項中只要符合「將文字切成 words 或 subword tokens,供模型處理」的敘述,就是正確答案。

本題的選項(E)完整描述了此目的:

To convert raw text into smaller units such as words or subword tokens for model processing.

所以答案為 E。

選項分析

(A)錯誤

To store text in a compressed binary format.

此選項描述的是文字壓縮或二進位儲存,例如將文字轉換成較節省空間的資料格式。這屬於資料儲存與編碼問題,不是 NLP 的 tokenization。

Tokenization 的重點是「切分文字單位」,並非「壓縮文字」。

(B)錯誤

To translate text into another language.

此選項描述的是機器翻譯(machine translation),例如將英文翻譯成中文。Tokenization 可以作為機器翻譯的前處理步驟,但本身不負責將一種語言翻譯成另一種語言。

例如:

I like apples.→[I,like,apples,.]\text{I like apples.} \rightarrow [\text{I},\text{like},\text{apples},\text{.}]

這是分詞,不是翻譯。

(C)錯誤

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 27 題2 分

You are given a Python function that is supposed to implement the merge sort algorithm to sort a list in ascending order. However, there is a mistake in the code. Identify the mistake and provide the corrected version of the code.

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr)
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result

Which of the following options correctly fixes the error?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Merge Sort(合併排序) 的分割與合併機制。

Merge Sort 的基本流程如下:

  1. 將陣列從中間切成左右兩半。
  2. 分別對左右兩半遞迴排序。
  3. 將兩個已排序的子陣列合併成一個有序陣列。

關鍵是中點 mid 必須位於陣列中間,因此應使用:

mid=⌊len(arr)2⌋\text{mid}=\left\lfloor\frac{\text{len(arr)}}{2}\right\rfloor

在 Python 中即為:

mid = len(arr) // 2

解題方法

原程式為:

def merge_sort(arr):
 if len(arr) <= 1:
 return arr
 mid = len(arr)
 left = merge_sort(arr[:mid])
 right = merge_sort(arr[mid:])
 return merge(left, right)

錯誤位於:

mid = len(arr)

若陣列長度為 nn,則:

arr[:mid] # arr[:n],等於整個 arr
arr[mid:] # arr[n:],等於空陣列

因此遞迴會變成:

left = merge_sort(arr)
right = merge_sort([])

其中 merge_sort(arr) 再次接收到原本相同的陣列,長度沒有變小,無法達到遞迴終止條件 len(arr) <= 1,最後會造成無限遞迴。

正確做法是將陣列切成前半段與後半段:

mid = len(arr) // 2

正確程式碼

def merge_sort(arr):
 if len(arr) <= 1:
 return arr

 mid = len(arr) // 2
 left = merge_sort(arr[:mid])
 right = merge_sort(arr[mid:])
 return merge(left, right)

def merge(left, right):
 result = []
 i = j = 0

 while i < len(left) and j < len(right):
 if left[i] < right[j]:
 result.append(left[i])
 i += 1
 else:
 result.append(right[j])
 j += 1

 result.extend(left[i:])
 result.extend(right[j:])
 return result

逐步追蹤 Trace

以:

merge_sort([4, 1, 3, 2])

為例。

第一次分割

陣列長度為 44:

mid = 4 // 2 = 2

分割為:

left = [4, 1]
right = [3, 2]

左半部排序

merge_sort([4, 1])

此時:

mid = 2 // 2 = 1

分割為:

[4] 和 [1]

兩個子陣列長度皆為 11,直接返回。

合併:

merge([4], [1])

比較 44 與 11:

1 < 4

因此結果為:

[1, 4]

右半部排序

merge_sort([3, 2])

分割為:

[3] 和 [2]

合併:

merge([3], [2])

比較 33 與 22,先放入 22,再接上剩餘的 33:

[2, 3]

最後合併

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 28 題2 分

Which of the following statements is CORRECT regarding NP-complete problems?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查複雜度理論中的三個概念:

  1. P:可在多項式時間內求解的問題。
  2. NP:給定一組候選解後,可在多項式時間內驗證其正確性的問題。
  3. NP-complete:同時滿足以下兩項的問題:
  • 屬於 NP。
  • NP-hard,也就是每一個 NP 問題都能在多項式時間內歸約至此問題。

若某一個 NP-complete 問題能以多項式時間解決,則所有 NP 問題也都能以多項式時間解決,因此得到:

P=NPP=NP

這正是選項 (A) 所描述的內容。


解題方法

判斷本題的關鍵,是逐一比對各選項與 NP-complete 的正式定義及其推論。

NP-complete 問題可表示為:

NP-complete=NP∩NP-hard\text{NP-complete}=\text{NP}\cap\text{NP-hard}

設 CC 是任一個 NP-complete 問題。由於 CC 是 NP-hard,對所有 L∈NPL\in NP,都有:

L≤pCL\leq_p C

其中 ≤p\leq_p 表示「可在多項式時間內歸約」。

若又已知 CC 存在多項式時間演算法,則對任意 NP 問題 LL:

  1. 先以多項式時間將 LL 的輸入轉換成 CC 的輸入。
  2. 再以 CC 的多項式時間演算法求解。
  3. 多項式時間的組合仍是多項式時間。

因此所有 L∈NPL\in NP 都可在多項式時間內解決,故:

P=NPP=NP

所以 (A) 正確。


選項分析

(A) If a polynomial-time algorithm is found for any NP-complete problem, then all problems in NP can be solved in polynomial time.

正確。

NP-complete 問題具備 NP-hard 性質。依 NP-hard 的定義,任意 NP 問題都可以在多項式時間內歸約至該 NP-complete 問題。

若其中一個 NP-complete 問題具有多項式時間演算法,則任意 NP 問題都能透過「多項式時間歸約 + 該問題的多項式時間演算法」完成求解。

因此:

某個 NP-complete 問題∈P⟹NP⊆P\text{某個 NP-complete 問題}\in P \Longrightarrow NP\subseteq P

又因為本來就有:

P⊆NPP\subseteq NP

所以可得:

P=NPP=NP

故選項 (A) 正確。


(B) Every NP-complete problem has a polynomial-time algorithm that approximates the optimal solution within a constant factor.

錯誤。

此敘述有兩個問題。

第一,許多典型 NP-complete 問題是決策問題,其答案只有「是」或「否」,沒有「最佳解」或「近似最佳解」的概念。例如 SAT 的問題形式是判斷是否存在滿足所有限制的變數配置,不是直接求一個帶有數值的最適化目標。

第二,即使將 NP-complete 問題轉換成對應的最佳化問題,也不能斷言每一個問題都有多項式時間的常數因子近似演算法。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 29 題2 分

Please calculate the value of 22026 mod 132^{2026}\bmod 13. Which of the following is CORRECT?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查「模運算」與「費馬小定理」。

對於質數 pp,若 aa 與 pp 互質,則:

ap−1≡1(modp)a^{p-1}\equiv 1\pmod p

因為 1313 是質數,且 gcd⁡(2,13)=1\gcd(2,13)=1,所以:

212≡1(mod13)2^{12}\equiv 1\pmod{13}

因此,22 的次方在模 1313 下具有週期性,可將指數 20262026 對 1212 取餘數。

解題方法

先計算:

2026=12×168+102026=12\times168+10

所以:

2026≡10(mod12)2026\equiv 10\pmod{12}

由 212≡1(mod13)2^{12}\equiv1\pmod{13},可得:

22026=212×168+10=(212)168⋅2102^{2026} =2^{12\times168+10} =(2^{12})^{168}\cdot2^{10}

因此:

22026≡1168⋅210(mod13)2^{2026}\equiv 1^{168}\cdot2^{10}\pmod{13}

計算 2102^{10}:

210=10242^{10}=1024

再將 10241024 除以 1313:

1024=13×78+101024=13\times78+10

所以:

22026≡10(mod13)2^{2026}\equiv 10\pmod{13}

選項分析

  • (A) 0:錯誤。
    22 與 1313 互質,220262^{2026} 不會被 1313 整除,因此餘數不可能是 00。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 30 題2 分

In a decision tree for classification, which measure is commonly used to determine the best attribute to split on at each node?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

決策樹(Decision Tree)進行分類時,每個節點都必須選擇一個屬性進行切分,使切分後的子節點具有更高的純度,也就是類別分布更集中。

常見的評估方法是資訊增益(Information Gain),其核心是比較切分前後的熵(Entropy):

H(S)=−∑i=1kpilog⁡2piH(S)=-\sum_{i=1}^{k}p_i\log_2 p_i

其中,pip_i 表示資料集中第 ii 類所占的比例。

以屬性 AA 切分後,條件熵為:

H(S∣A)=∑v∈Values(A)∣Sv∣∣S∣H(Sv)H(S\mid A)=\sum_{v\in Values(A)} \frac{|S_v|}{|S|}H(S_v)

因此資訊增益為:

IG(S,A)=H(S)−H(S∣A)IG(S,A)=H(S)-H(S\mid A)

資訊增益越大,表示切分後不確定性下降越多,該屬性越適合作為目前節點的切分屬性。

解題方法

題目問的是:

在分類決策樹中,通常使用哪一種衡量方式,決定每個節點要選哪個屬性進行切分?

判斷關鍵在於「決定最佳切分屬性」。傳統的 ID3 演算法即使用資訊增益選擇屬性;C4.5 進一步使用資訊增益率(Gain Ratio),本質上仍建立在熵與資訊量的概念上。

例如,若某節點切分前的熵為:

H(S)=1H(S)=1

切分後的加權熵為:

H(S∣A)=0.4H(S\mid A)=0.4

則:

IG(S,A)=1−0.4=0.6IG(S,A)=1-0.4=0.6

若另一屬性的資訊增益為 0.20.2,則前者能更有效降低分類不確定性,會被優先選用。

選項分析

(A) Euclidean Distance

歐幾里得距離常用於衡量兩個資料點在幾何空間中的直線距離:

d(x,y)=∑i=1n(xi−yi)2d(\mathbf{x},\mathbf{y}) = \sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}

它常見於 kk-NN、分群與相似度分析,並非傳統決策樹選擇切分屬性的主要標準,因此錯誤。

(B) Cosine Similarity

餘弦相似度衡量兩個向量夾角的相似程度:

cos⁡(θ)=x⋅y∥x∥∥y∥\cos(\theta) = \frac{\mathbf{x}\cdot\mathbf{y}} {\|\mathbf{x}\|\|\mathbf{y}\|}

它常用於文字文件、向量資料與文件相似度比較,重點是向量方向,而不是切分後的類別純度,因此錯誤。

(C) Information Gain (Entropy Reduction)

資訊增益衡量切分前後熵的下降量:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 1 題10 分

A medical research team is building a classifier to predict disease presence (Positive/Negative) based on patient data. After testing on 200 patients, they obtain the following confusion matrix:

Predicted PositivePredicted Negative
Actual Positive7218
Actual Negative1298

(1) (5%) Calculate the following metrics and explain what each represents. Show the result with percentage; e.g., 0.78256 should be stated as 78.26%.

a. Accuracy
b. Precision
c. Recall (Sensitivity)
d. F1-Score
e. Specificity

(2) (5%) The team wants to adjust the classification threshold to reduce false negatives (missed diseases), even if it increases false positives. Explain which metric should be prioritized and why this trade-off is important in medical diagnosis.

校方公布看官方參考答案 ▾
官方參考答案C校方公布

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查二元分類(binary classification)的混淆矩陣(confusion matrix)與分類評估指標。

先定義四種結果:

  • TP(True Positive)真陽性:實際患病,預測為 Positive
  • FN(False Negative)假陰性:實際患病,預測為 Negative,代表漏診
  • FP(False Positive)假陽性:實際未患病,預測為 Positive,代表誤診
  • TN(True Negative)真陰性:實際未患病,預測為 Negative

由題目可得:

TP=72,FN=18,FP=12,TN=98TP=72,\quad FN=18,\quad FP=12,\quad TN=98

總樣本數為:

72+18+12+98=20072+18+12+98=200

(1)各項分類指標

a. Accuracy(準確率)

Accuracy 表示所有預測結果中,判斷正確的比例:

Accuracy=TP+TNTP+TN+FP+FNAccuracy=\frac{TP+TN}{TP+TN+FP+FN}

代入數值:

Accuracy=72+98200=170200=0.85Accuracy=\frac{72+98}{200} =\frac{170}{200} =0.85

因此:

Accuracy=85.00%\boxed{Accuracy=85.00\%}

意義:
整體而言,200 位病患中有 85% 的預測結果正確。


b. Precision(精確率)

Precision 表示所有被預測為 Positive 的個案中,實際為 Positive 的比例:

Precision=TPTP+FPPrecision=\frac{TP}{TP+FP}

代入數值:

Precision=7272+12=7284≈0.85714Precision=\frac{72}{72+12} =\frac{72}{84} \approx0.85714

因此:

Precision≈85.71%\boxed{Precision\approx85.71\%}

意義:
被分類器判定為患病的人之中,約有 85.71% 確實患病。

Precision 越低,表示誤把健康者判定為患病的情形越多。


c. Recall(Sensitivity,敏感度)

Recall 又稱 Sensitivity,表示所有實際患病者中,被正確找出的比例:

Recall=TPTP+FNRecall=\frac{TP}{TP+FN}

代入數值:

Recall=7272+18=7290=0.8Recall=\frac{72}{72+18} =\frac{72}{90} =0.8

因此:

Recall=80.00%\boxed{Recall=80.00\%}

意義:
實際患病的 90 人中,分類器成功辨識出 72 人,因此敏感度為 80%。

其餘 18 人屬於 FN,也就是漏診個案。


d. F1-Score

F1-Score 是 Precision 與 Recall 的調和平均,用於同時衡量精確率與敏感度:

F1=2×Precision×RecallPrecision+RecallF1=2\times\frac{Precision\times Recall}{Precision+Recall}

也可直接利用混淆矩陣計算:

F1=2TP2TP+FP+FNF1=\frac{2TP}{2TP+FP+FN}

代入數值:

F1=2(72)2(72)+12+18=144174≈0.827586F1=\frac{2(72)}{2(72)+12+18} =\frac{144}{174} \approx0.827586

因此:

F1-Score≈82.76%\boxed{F1\text{-}Score\approx82.76\%}

意義:
F1-Score 同時考慮「預測為陽性時是否準確」與「實際陽性是否有被找出」,適合在 Precision 與 Recall 都重要時使用。


e. Specificity(特異度)

Specificity 表示所有實際未患病者中,被正確判斷為 Negative 的比例:

Specificity=TNTN+FPSpecificity=\frac{TN}{TN+FP}

代入數值:

Specificity=9898+12=98110≈0.89091Specificity=\frac{98}{98+12} =\frac{98}{110} \approx0.89091

因此:

Specificity≈89.09%\boxed{Specificity\approx89.09\%}

意義:
實際未患病的 110 人中,有 98 人被正確判定為未患病。

Specificity 越低,表示將健康者誤判為患病的 FP 越多。


(2)降低漏診時應優先考慮的指標

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題10 分

Consider the following Hidden Markov Model:

States: S={H,C}S=\{H,C\}, where H=H= Hot and C=C= Cold
Observations: O={1,2}O=\{1,2\}
Initial probabilities: p0(H)=0.5p_0(H)=0.5, p0(C)=0.5p_0(C)=0.5

Transition probabilities:

P(H→H)=0.6P(H\to H)=0.6, P(H→C)=0.4P(H\to C)=0.4
P(C→H)=0.5P(C\to H)=0.5, P(C→C)=0.5P(C\to C)=0.5

Emission probabilities:

P(1∣H)=0.8P(1\mid H)=0.8, P(2∣H)=0.2P(2\mid H)=0.2
P(1∣C)=0.3P(1\mid C)=0.3, P(2∣C)=0.7P(2\mid C)=0.7

Observed sequence:

O=(1,2)O=(1,2)

(1) (4%) Fill in the Viterbi table.

State \ Timet=0t=0t=1t=1 (O=1O=1)t=2t=2 (O=2O=2)
Hot (HH)0.5
Cold (CC)0.5

(2) (3%) Determine the most likely hidden state sequence.

(3) (3%) Why is Viterbi more efficient than checking all possible state sequences?

校方公布看官方參考答案 ▾
官方參考答案C校方公布

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查 Hidden Markov Model(HMM)與 Viterbi algorithm(維特比演算法)。

HMM 包含:

  • 隱藏狀態:HH(Hot)、CC(Cold)
  • 觀察值:1、21、2
  • 初始機率:p0(H)=p0(C)=0.5p_0(H)=p_0(C)=0.5
  • 轉移機率:P(st∣st−1)P(s_t\mid s_{t-1})
  • 發射機率:P(ot∣st)P(o_t\mid s_t)

Viterbi 演算法的目標,是找出「給定觀察序列後,機率最高的隱藏狀態序列」。

定義:

δt(s)=max⁡所有可能路徑P(截至 t 的觀察與狀態路徑,且目前狀態為 s)\delta_t(s)= \max_{\text{所有可能路徑}} P(\text{截至 }t\text{ 的觀察與狀態路徑,且目前狀態為 }s)

遞迴公式為:

δt(s)=max⁡s′∈S[δt−1(s′)P(s∣s′)]P(ot∣s)\delta_t(s) = \max_{s'\in S} \left[\delta_{t-1}(s')P(s\mid s')\right] P(o_t\mid s)

本題表格的 t=0t=0 已給初始機率,因此 t=1t=1 對應觀察值 11,t=2t=2 對應觀察值 22。


解題方法與 Viterbi 表格

t=1t=1,觀察值為 11

到達 HH 的兩種可能:

由 HH 到 HH:

0.5×0.6×0.8=0.240.5\times 0.6\times 0.8=0.24

由 CC 到 HH:

0.5×0.5×0.8=0.200.5\times 0.5\times 0.8=0.20

因此:

δ1(H)=max⁡(0.24,0.20)=0.24\delta_1(H)=\max(0.24,0.20)=0.24

到達 CC 的兩種可能:

由 HH 到 CC:

0.5×0.4×0.3=0.060.5\times 0.4\times 0.3=0.06

由 CC 到 CC:

0.5×0.5×0.3=0.0750.5\times 0.5\times 0.3=0.075

因此:

δ1(C)=max⁡(0.06,0.075)=0.075\delta_1(C)=\max(0.06,0.075)=0.075

t=2t=2,觀察值為 22

到達 HH 的兩種可能:

由 HH 到 HH:

0.24×0.6×0.2=0.02880.24\times 0.6\times 0.2=0.0288

由 CC 到 HH:

0.075×0.5×0.2=0.00750.075\times 0.5\times 0.2=0.0075

因此:

δ2(H)=max⁡(0.0288,0.0075)=0.0288\delta_2(H)=\max(0.0288,0.0075)=0.0288

到達 CC 的兩種可能:

由 HH 到 CC:

0.24×0.4×0.7=0.06720.24\times 0.4\times 0.7=0.0672

由 CC 到 CC:

0.075×0.5×0.7=0.026250.075\times 0.5\times 0.7=0.02625

因此:

δ2(C)=max⁡(0.0672,0.02625)=0.0672\delta_2(C)=\max(0.0672,0.02625)=0.0672

Viterbi 表格如下:

State \ Timet=0t=0t=1t=1(O=1O=1)t=2t=2(O=2O=2)
Hot(HH)0.50.50.240.240.02880.0288
Cold(CC)0.50.50.0750.0750.06720.0672

最可能的隱藏狀態序列

在 t=2t=2 比較兩個終點:

δ2(H)=0.0288\delta_2(H)=0.0288 δ2(C)=0.0672\delta_2(C)=0.0672

因為:

0.0672>0.02880.0672>0.0288

所以最後狀態為 CC。

再利用回溯:

  • t=2t=2 到達 CC 時,來自 HH 的機率為 0.06720.0672
  • 來自 CC 的機率為 0.026250.02625

因此 t=1t=1 為 HH。

在 t=1t=1 到達 HH 時:

  • 來自 HH:0.240.24
  • 來自 CC:0.200.20

因此 t=0t=0 的狀態為 HH。

最可能的狀態序列為:

H→H→C\boxed{H\rightarrow H\rightarrow C}

其聯合機率為:

0.5×0.6×0.8×0.4×0.7=0.06720.5\times 0.6\times 0.8\times 0.4\times 0.7 =0.0672

因此,依官方答案,選項 C 所代表的 H→H→CH\rightarrow H\rightarrow C 為正確答案。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題10 分

A processor has the following specifications:

  • Base CPI = 1.2
  • Clock rate = 2.5 GHz
  • Instruction mix: 40% ALU, 30% Load, 20% Store, 10% Branch
  • Cache specifications:
    • L1 I-Cache: 95% hit rate, 2-cycle miss penalty
    • L1 D-Cache: 90% hit rate, 8-cycle miss penalty
    • L2 Cache (unified): 98% hit rate, 50-cycle miss penalty

(1) (6%) Calculate the effective CPI considering cache misses for load/store instructions. Assume all cache misses go to L2, and L2 misses go to main memory.

(2) (4%) If a program executes 2 billion instructions, what is the total execution time?

校方公布看官方參考答案 ▾
官方參考答案D校方公布

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查處理器效能分析中的有效 CPI(effective CPI),以及 Cache miss 對執行時間的影響。

基本公式為:

CPU Time=Instruction Count×CPIClock Rate\text{CPU Time} = \frac{\text{Instruction Count}\times \text{CPI}} {\text{Clock Rate}}

Cache 造成的額外 CPI 可表示為:

Memory Stall CPI=每條指令的存取比例×Miss Rate×Miss Penalty\text{Memory Stall CPI} = \text{每條指令的存取比例} \times \text{Miss Rate} \times \text{Miss Penalty}

本題特別要求考慮 load/store 指令,因此主要計算 L1 D-Cache 的 miss 所造成的成本。


解題方法

(1)計算有效 CPI

Load 與 Store 所占比例為:

30%+20%=50%30\%+20\%=50\%

因此,每條指令平均有 0.50.5 次資料 Cache 存取。

L1 D-Cache hit rate 為 90%90\%,所以 miss rate 為:

1−0.90=0.101-0.90=0.10

L2 Cache hit rate 為 98%98\%,因此 L2 miss rate 為:

1−0.98=0.021-0.98=0.02

L1 D-Cache 發生 miss 時,基本 miss penalty 為 88 cycles;其中有 2%2\% 會繼續造成 L2 miss,額外付出 5050 cycles。因此,L1 D-Cache 的有效 miss penalty 為:

8+0.02×50=9 cycles8+0.02\times 50=9\text{ cycles}

資料 Cache 造成的額外 CPI 為:

0.5×0.10×9=0.450.5\times 0.10\times 9=0.45

加入 Base CPI:

Effective CPI=1.2+0.45=1.65\text{Effective CPI} = 1.2+0.45 = 1.65

因此:

Effective CPI=1.65\boxed{\text{Effective CPI}=1.65}

(2)計算總執行時間

指令數為 22 billion:

Instruction Count=2×109\text{Instruction Count}=2\times 10^9

Clock rate 為 2.52.5 GHz:

Clock Rate=2.5×109 cycles/sec\text{Clock Rate}=2.5\times 10^9\text{ cycles/sec}

總 CPU cycles:

2×109×1.65=3.3×109 cycles2\times 10^9\times 1.65 = 3.3\times 10^9\text{ cycles}

執行時間:

CPU Time=3.3×1092.5×109=1.32 seconds\text{CPU Time} = \frac{3.3\times 10^9} {2.5\times 10^9} = 1.32\text{ seconds}

所以:

Total Execution Time=1.32 seconds\boxed{\text{Total Execution Time}=1.32\text{ seconds}}

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題10 分

A company deploys a web server behind a stateful firewall and NAT (Network Address Translation) device. The internal web server IP address is 192.168.1.10192.168.1.10. The NAT device has a public IP address 140.113.10.5140.113.10.5. The firewall is configured with DNAT (Destination NAT), forwarding traffic aimed at 140.113.10.5:8080140.113.10.5:8080 to the internal server at Port 80.

(1) (2%) Explain the role of the NAT table.

(2) (4%) An external client, IP: 8.8.8.88.8.8.8, on the Internet accesses the website using a browser. The client's OS assigns a random source port of 55000. Please fill in the packet header information after it has been processed by the NAT device as it enters the internal network, and as the response from the server passes through the firewall back to the Internet. Fill in the following table, e.g., 127.0.0.1:80127.0.0.1:80.

Direction (after NAT)Source IP:PortDestination IP:Port
Client →\to server
Server →\to client

(3) Assume the web server uses HTTP. Explain how a Man-in-the-Middle attacker located on the same LAN as the server could intercept and modify HTTP traffic. Your answer should include:

a. (2%) One specific attack technique.
b. (2%) Why NAT does not prevent this attack?

校方公布看官方參考答案 ▾
官方參考答案D校方公布

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查三個重點:

  1. NAT 表(NAT table):記錄內外部連線的位址與埠號轉換關係。
  2. DNAT 與反向 NAT:外部連線進入時,將公有 IP 與埠號轉換成內部伺服器位址;回應封包通過時,再將內部位址轉回公有位址。
  3. HTTP 與中間人攻擊(Man-in-the-Middle Attack, MITM):HTTP 內容未加密,同一區域網路中的攻擊者可攔截並修改資料。

題目未列出 A~D 的個別選項內容,因此無法逐一對照每個選項文字分析。以下依官方公布答案 D 所代表的正確觀念,完整說明各小題。


(1) NAT 表的角色

NAT 表用來記錄封包在公有網路與私有網路之間進行位址、埠號轉換的對應關係。

本題的連線可表示為:

8.8.8.8:55000⟶140.113.10.5:80808.8.8.8:55000 \longrightarrow 140.113.10.5:8080

進入內部網路後,目的位址被 DNAT 成:

8.8.8.8:55000⟶192.168.1.10:808.8.8.8:55000 \longrightarrow 192.168.1.10:80

NAT 表會保存這組連線狀態,使防火牆知道:

  • 外部哪一個用戶端正在連線;
  • 公有 IP 的哪一個埠號對應到哪一台內部主機;
  • 伺服器回應封包應轉換成哪個公有來源位址與埠號;
  • 只有符合既有連線狀態的回應封包可以通過。

因此,NAT 表不只是單純記錄 IP,通常也會記錄通訊協定、來源埠號、目的埠號與連線狀態。


(2) 封包標頭轉換

解題方法

先處理用戶端送出的封包:

  • 用戶端來源:8.8.8.8:550008.8.8.8:55000
  • 用戶端連線目標:140.113.10.5:8080140.113.10.5:8080
  • DNAT 規則:140.113.10.5:8080→192.168.1.10:80140.113.10.5:8080 \rightarrow 192.168.1.10:80

DNAT 主要改變的是「目的 IP 與目的埠號」,因此進入內部網路後:

Source=8.8.8.8:55000\text{Source}=8.8.8.8:55000 Destination=192.168.1.10:80\text{Destination}=192.168.1.10:80

伺服器回應時,原始封包為:

192.168.1.10:80⟶8.8.8.8:55000192.168.1.10:80 \longrightarrow 8.8.8.8:55000

防火牆依 NAT 表進行反向轉換,將伺服器的內部來源位址改回對外服務的公有位址與埠號:

140.113.10.5:8080⟶8.8.8.8:55000140.113.10.5:8080 \longrightarrow 8.8.8.8:55000

填表答案

Direction (after NAT)Source IP:PortDestination IP:Port
Client →\to server8.8.8.8:550008.8.8.8:55000192.168.1.10:80192.168.1.10:80
Server →\to client140.113.10.5:8080140.113.10.5:80808.8.8.8:550008.8.8.8:55000

封包流程

完整流程如下:

8.8.8.8:55000→140.113.10.5:80808.8.8.8:55000 \rightarrow 140.113.10.5:8080

經 DNAT:

8.8.8.8:55000→192.168.1.10:808.8.8.8:55000 \rightarrow 192.168.1.10:80

伺服器回應:

192.168.1.10:80→8.8.8.8:55000192.168.1.10:80 \rightarrow 8.8.8.8:55000

經反向 NAT:

140.113.10.5:8080→8.8.8.8:55000140.113.10.5:8080 \rightarrow 8.8.8.8:55000

(3) 同一 LAN 上的中間人攻擊

a. 一種具體攻擊技術:ARP Spoofing

攻擊者可使用 ARP Spoofing(ARP 欺騙):

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

115 年高雄醫學大學的其他科目

高雄醫學大學《計算機概論與程式設計》其他年度

其他學校的《計算機概論與程式設計》