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

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

第 1 題2 分

A software engineer is optimizing a real-time embedded system. The processor being used follows the RISC architecture. Which of the following optimizations is best suited for this processor?

(A) Minimizing pipeline stalls by keeping instruction execution times uniform
(B) Using highly optimized microcode for complex instructions
(C) Utilizing variable-length instructions to reduce code size
(D) Optimizing for micro-op fusion to minimize instruction count
(E) Relying on Instruction-Level Parallelism (ILP) to reduce execution cycles

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

這一題的完整詳解

核心觀念

本題考查 **RISC(Reduced Instruction Set Computer,精簡指令集電腦)**的設計特色,以及這些特色對處理器最佳化策略的影響。

RISC 的主要特徵包括:

  • 指令種類較少,格式簡單。
  • 多數指令長度固定。
  • 指令執行時間較規律,常以單一或少數幾個 clock cycle 完成。
  • 採用 load/store 架構,只有載入與儲存指令存取記憶體。
  • 適合深度 pipeline 與硬體平行化。
  • 將複雜工作拆成多個簡單指令,降低控制硬體複雜度。

在 pipeline 中,若不同指令的執行時間差異過大,容易造成後續階段等待,形成 pipeline stall(管線停滯)。因此,讓指令執行時間保持規律,有助於提高管線使用率與吞吐量。


解題方法

判斷本題的切入點是:先辨識各選項代表的處理器設計特徵,再與 RISC 的核心理念比較。

RISC 強調「簡單、固定、規律」的指令設計。這種設計最直接的優勢,就是能讓處理器更容易進行 pipeline,並減少因指令執行時間不一致所造成的停滯。

因此,最符合 RISC 架構特性的最佳化方式是:

保持指令執行時間規律⇒減少 pipeline stalls⇒提升整體吞吐量\text{保持指令執行時間規律} \Rightarrow \text{減少 pipeline stalls} \Rightarrow \text{提升整體吞吐量}

所以正確選項為 (A)。


選項分析

(A) Minimizing pipeline stalls by keeping instruction execution times uniform

正確。

RISC 指令通常格式簡單、長度固定,且執行時間較一致,適合採用 pipeline。當每個 pipeline stage 的工作量較均衡時,下一條指令能穩定地進入管線,減少等待與停頓。

此選項直接利用 RISC 的核心特性:

uniform execution time⇒predictable pipeline behavior⇒fewer stalls\text{uniform execution time} \Rightarrow \text{predictable pipeline behavior} \Rightarrow \text{fewer stalls}

對即時嵌入式系統而言,降低 pipeline stall 不僅能提升效能,也有助於維持較穩定、可預測的執行時間。

(B) Using highly optimized microcode for complex instructions

錯誤。

Microcode(微碼)通常用來實作複雜指令,將一條複雜機器指令轉換成多個內部微指令。這種作法較常見於 CISC(Complex Instruction Set Computer,複雜指令集電腦)。

RISC 的設計方向是讓指令本身簡單,盡量以硬體直接執行,而不是依賴高度複雜的微碼來處理複雜指令。因此,這不是最符合 RISC 的最佳化方式。

🔒

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

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

免費註冊

第 2 題2 分

Which of the following is the goal of a page replacement algorithm?

(A) Decrease disk access time
(B) Increase CPU utilization
(C) Reduce page faults
(D) Reduce the number of processes
(E) Increase memory fragmentation

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

這一題的完整詳解

核心觀念

本題考的是作業系統中的「虛擬記憶體」與「頁面置換(page replacement)」。

當程式存取的頁面不在主記憶體中時,會發生 page fault(頁面錯誤)。作業系統必須:

  1. 從磁碟將所需頁面載入主記憶體。
  2. 若主記憶體已無可用頁框,選擇一個既有頁面移出。
  3. 將新的頁面載入被釋出的頁框。

頁面置換演算法的核心目標,是選擇適當的頁面移出,使未來發生的 page fault 次數盡量少。

頁面錯誤率可表示為:

Page fault rate=Page faults 次數記憶體參照總次數\text{Page fault rate} = \frac{\text{Page faults 次數}}{\text{記憶體參照總次數}}

頁面錯誤通常需要磁碟存取,速度遠慢於主記憶體。因此,降低 page faults 通常也能改善整體效能。

解題方法

判斷題目問的是「page replacement algorithm 的 goal」,直接抓住定義:

頁面置換演算法是為了在記憶體不足時,選出最適合被移出的頁面,以降低未來的 page faults。

因此正確選項必須直接描述「減少頁面錯誤」的目的。

選項分析

(A) Decrease disk access time

錯誤。

頁面置換演算法不會直接縮短磁碟硬體的存取時間。磁碟的存取時間主要取決於硬體特性、快取、I/O 排程等因素。

好的頁面置換策略能減少磁碟存取發生的次數,因而降低平均存取成本,但這是間接效果,不是頁面置換演算法的直接目標。

(B) Increase CPU utilization

錯誤。

降低 page faults 可以減少 CPU 因等待磁碟 I/O 而閒置的時間,進而可能提高 CPU utilization。然而,增加 CPU 使用率是改善記憶體管理後的可能結果,不是頁面置換演算法的核心目標。

(C) Reduce page faults

正確。

🔒

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

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

免費註冊

第 3 題2 分

Suppose you are using the MNIST dataset to train a neural network model to recognize handwritten digits. Which of the following settings is practical?

(A) To accelerate convergence, you can set the learning rate to 256 initially.
(B) To make the model more generalized, you can randomly apply image mirroring with a probability of 1/21/2.
(C) To avoid gradient explosion, you can limit the gradient size to 2.
(D) To avoid difficulty in training the model, the order of the images should be fixed during training.
(E) Since the goal of training is to classify digits from 0 to 9, which is a regression problem, you should set the number of output nodes to 1 and use mean square error as the loss function.

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

這一題的完整詳解

核心觀念

本題考查神經網路訓練中的超參數設定與基本機制:

  • Learning rate(學習率):控制每次參數更新的步幅。
  • Data augmentation(資料增強):透過翻轉、旋轉等方式增加訓練資料變化,以提升泛化能力。
  • Gradient clipping(梯度裁剪):限制梯度大小,避免梯度爆炸。
  • Data shuffling(資料洗牌):打亂每個 epoch 中樣本的呈現順序,避免模型受到固定順序影響。
  • Classification(分類)與 regression(迴歸):數字辨識是多類別分類問題,不是迴歸問題。

解題方法

逐一檢查每個設定是否符合神經網路訓練的基本原則:

  1. 學習率是否在合理範圍。
  2. 資料增強是否維持原本標籤。
  3. 是否能有效抑制梯度爆炸。
  4. 訓練資料是否應固定順序。
  5. 輸出層與損失函數是否符合分類任務。

選項分析

(A) To accelerate convergence, you can set the learning rate to 256 initially.

錯誤。

學習率過大時,參數更新量會非常大。以梯度下降為例:

θt+1=θt−η∇θL\theta_{t+1}=\theta_t-\eta\nabla_\theta L

其中 η\eta 是 learning rate。當 η=256\eta=256 時,即使梯度數值不大,更新幅度也可能遠超過合理範圍,使 loss 在最佳值附近來回震盪,甚至直接發散。

實務上,神經網路常見的初始學習率約為 10−410^{-4} 至 10−110^{-1},實際數值依 optimizer、網路架構與資料而定;256256 對一般 MNIST 神經網路而言明顯不合理。


(B) To make the model more generalized, you can randomly apply image mirroring with a probability of 1/21/2.

正確。

Random mirroring 屬於資料增強。若水平鏡像後仍保留原本的數字標籤,則可增加訓練資料的變化,使模型不過度依賴特定筆畫位置與影像外觀,進而提升泛化能力。

以機率 1/21/2 進行鏡像,可表示為:

x′={Mirror⁡(x),機率 12x,機率 12x'= \begin{cases} \operatorname{Mirror}(x), & \text{機率 } \frac{1}{2}\\ x, & \text{機率 } \frac{1}{2} \end{cases}

此處須建立在鏡像不改變分類標籤的前提下。對本題所採用的 MNIST 設定,這是合理的資料增強方法。


(C) To avoid gradient explosion, you can limit the gradient size to 2.

正確。

Gradient clipping 會限制梯度的大小,使參數更新不至於過大。若使用梯度範數裁剪,當梯度範數超過 22 時,可令:

🔒

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

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

免費註冊

第 4 題2 分

In supervised learning, what is the purpose of a grid search?

(A) To shift the decision boundary or regression line.
(B) To split the data into training and testing sets.
(C) To select the best features for a model.
(D) To prevent overfitting.
(E) To search for the best combination of hyperparameters for a given model.

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

這一題的完整詳解

核心觀念

本題考查監督式學習中的 Grid Search(網格搜尋)。

在監督式學習中,模型通常包含兩類設定:

  • 模型參數(parameters):由訓練資料學習而得,例如線性迴歸的係數、神經網路的權重。
  • 超參數(hyperparameters):在訓練前由使用者設定,例如決策樹深度、kk-NN 的 kk 值、SVM 的懲罰參數 CC、隨機森林的樹數量等。

Grid Search 的做法是:

  1. 先為各個超參數指定候選值。
  2. 列出所有候選值的組合。
  3. 逐一訓練模型並評估表現。
  4. 選出評估指標最佳的超參數組合。

因此,Grid Search 的目的就是搜尋模型的最佳超參數組合。


解題方法

直接抓住題幹中的關鍵詞:

“the best combination of hyperparameters”

這正是 Grid Search 的定義。

例如,有一個支援向量機模型,其超參數候選值為:

  • C∈{0.1,1,10}C \in \{0.1, 1, 10\}
  • γ∈{0.01,0.1}\gamma \in \{0.01, 0.1\}

Grid Search 會測試下列 3×2=63 \times 2 = 6 種組合:

(0.1,0.01), (0.1,0.1), (1,0.01), (1,0.1), (10,0.01), (10,0.1)(0.1,0.01),\ (0.1,0.1),\ (1,0.01),\ (1,0.1),\ (10,0.01),\ (10,0.1)

每一組參數可搭配交叉驗證計算平均準確率,最後選出表現最佳的組合。

概念上的程式碼如下:

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

model = SVC

param_grid = {
 "C": [0.1, 1, 10],
 "gamma": [0.01, 0.1]
}

grid_search = GridSearchCV(
 estimator=model,
 param_grid=param_grid,
 cv=5,
 scoring="accuracy"
)

grid_search.fit(X_train, y_train)

best_model = grid_search.best_estimator_
best_params = grid_search.best_params_

其中:

  • param_grid:設定超參數候選值。
  • cv=5:使用五折交叉驗證。
  • best_params_:最佳超參數組合。
  • best_estimator_:使用最佳超參數重新建立的模型。

Grid Search 的基本搜尋次數為:

搜尋次數=∏i=1mni\text{搜尋次數} = \prod_{i=1}^{m} n_i

其中 mm 是超參數的數量,nin_i 是第 ii 個超參數的候選值數量。

若有 mm 個超參數,每個超參數各有 nn 個候選值,則組合數為:

nmn^m

若搭配 kk 折交叉驗證,模型訓練次數約為:

k×∏i=1mnik \times \prod_{i=1}^{m} n_i

因此,Grid Search 的優點是搜尋完整、容易理解;缺點是超參數很多時,計算成本會快速增加。


選項分析

(A) To shift the decision boundary or regression line.

錯誤。

「移動決策邊界或迴歸線」是調整模型參數、特徵、資料權重或模型結構後可能產生的結果,不是 Grid Search 的主要目的。

🔒

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

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

免費註冊

第 5 題2 分

A program has a one-dimensional array of integers AA. Each element of the array is a four-byte integer. The array is stored in contiguous memory space. If the memory address of A[100]A[100] is 2000, then which of the following is the address of A[50]A[50]?

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

這一題的完整詳解

核心觀念

本題考查一維陣列在連續記憶體中的位址計算。

一維陣列的每個元素大小相同,且依序連續儲存。因此,相鄰元素的記憶體位址差距,等於一個元素所占的位元組數。本題每個整數占 44 bytes,所以:

相鄰元素位址差=4\text{相鄰元素位址差} = 4

陣列元素位址公式為:

Address(A[i])=Address(A[j])+(i−j)×元素大小\text{Address}(A[i]) = \text{Address}(A[j])+(i-j)\times \text{元素大小}

解題方法

已知:

  • A[100]A[100] 的位址為 20002000
  • 每個元素占 44 bytes
  • 求 A[50]A[50] 的位址

從 A[100]A[100] 往前移動到 A[50]A[50],索引差為:

100−50=50100-50=50

共往前移動 5050 個陣列元素,每個元素占 44 bytes,因此位址減少:

50×4=20050\times 4=200

所以:

Address(A[50])=2000−200=1800\text{Address}(A[50])=2000-200=1800

因此正確答案為:

1800\boxed{1800}

選項分析

(A) 1000

錯誤。若位址為 10001000,代表從 20002000 往前移動了:

2000−1000=1000 bytes2000-1000=1000\text{ bytes}

換算成元素數量:

1000÷4=2501000\div 4=250

這相當於往前移動 250250 個元素,不是從索引 100100 移動到索引 5050 所需的 5050 個元素。

(B) 1800

正確。A[50]A[50] 比 A[100]A[100] 小 5050 個索引,每個元素占 44 bytes:

🔒

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

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

免費註冊

第 6 題2 分

Huffman coding is an efficient method of compressing data without losing information. Symbols that appear more often will be encoded as a shorter bit string, while symbols that are not used much will be encoded with longer strings. If Huffman coding is used to compress a sequence with 5 different codewords, which of the following probability distributions will lead to the WORST compression ratio?

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

這一題的完整詳解

核心觀念

Huffman coding 是依照符號出現機率建立最佳前綴碼(prefix code)的演算法:

  1. 每次選取機率最小的兩個節點合併。
  2. 重複合併,直到形成一棵二元樹。
  3. 符號在樹中的深度,就是其編碼長度。
  4. 平均編碼長度為
L=∑i=1npiℓiL=\sum_{i=1}^{n}p_i\ell_i

其中 pip_i 為第 ii 個符號的機率,ℓi\ell_i 為其 Huffman code 長度。

平均編碼長度越大,代表每個符號平均使用越多 bit,壓縮效果越差。因此,本題要找的是 Huffman 編碼後平均長度最大的機率分布。

5 種符號若使用固定長度編碼,需要:

⌈log⁡25⌉=3 bits/symbol\lceil \log_2 5\rceil=3\text{ bits/symbol}

Huffman coding 則依機率分配不同長度。


解題方法

逐一對各選項進行 Huffman 合併,求出各符號的編碼長度,再計算平均編碼長度 LL。

平均長度越大,壓縮率越差。


選項分析

(A) 0.2,0.2,0.2,0.2,0.20.2,0.2,0.2,0.2,0.2

所有符號機率相同,因此 Huffman tree 會盡量平均:

  • 合併 0.2+0.2=0.40.2+0.2=0.4
  • 合併 0.2+0.2=0.40.2+0.2=0.4
  • 再合併 0.2+0.4=0.60.2+0.4=0.6
  • 最後合併 0.4+0.6=1.00.4+0.6=1.0

形成的編碼長度可為:

2,2,2,3,32,2,2,3,3

因此平均編碼長度為:

LA=2+2+2+3+35=2.4L_A=\frac{2+2+2+3+3}{5}=2.4

此分布中沒有特別高機率的符號可使用短碼,大多數符號都必須使用接近 2 至 3 bit 的長度,因此壓縮效果最差。


(B) 0.02,0.02,0.03,0.03,0.90.02,0.02,0.03,0.03,0.9

Huffman 合併順序:

0.02+0.02=0.040.02+0.02=0.04 0.03+0.03=0.060.03+0.03=0.06 0.04+0.06=0.100.04+0.06=0.10 0.10+0.90=1.000.10+0.90=1.00

機率為 0.90.9 的符號只需 1 bit,其餘 4 個低機率符號使用 3 bits:

LB=0.9(1)+0.1(3)=1.2L_B=0.9(1)+0.1(3)=1.2

平均長度只有 1.21.2 bits,遠小於選項 (A),因此壓縮效果較好。


(C) 0.1,0.1,0.2,0.3,0.30.1,0.1,0.2,0.3,0.3

Huffman 合併順序:

0.1+0.1=0.20.1+0.1=0.2 0.2+0.2=0.40.2+0.2=0.4 0.3+0.3=0.60.3+0.3=0.6 0.4+0.6=1.00.4+0.6=1.0

可得到下列編碼長度:

  • 兩個機率 0.30.3 的符號:各 2 bits
  • 機率 0.20.2 的符號:2 bits
  • 兩個機率 0.10.1 的符號:各 3 bits

因此:

🔒

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

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

免費註冊

第 7 題2 分

A Distributed Denial of Service (DDoS) attack attempts to consume the target’s resources so that it cannot provide service. What is a DDoS attack and how does it work?

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

這一題的完整詳解

核心觀念

本題考查拒絕服務攻擊(Denial of Service, DoS)與分散式拒絕服務攻擊(Distributed Denial of Service, DDoS)的定義與運作方式。

DDoS 的主要目的不是竊取資料或取得系統權限,而是大量消耗目標系統的資源,使正常使用者無法取得服務。攻擊者通常先控制大量電腦、伺服器或物聯網裝置,組成殭屍網路(botnet),再由這些分散於不同來源的裝置同時向目標發送大量封包或服務請求。

目標可能被消耗的資源包括:

  • 網路頻寬
  • 伺服器 CPU 與記憶體
  • 連線數量
  • 應用程式處理能力
  • 防火牆、負載平衡器等網路設備的容量

當正常請求無法被及時處理時,網站或網路服務便會變慢、逾時,甚至完全無法使用。

解題方法

判斷本題的關鍵是掌握題幹中的兩個線索:

  1. 「consume the target’s resources」:消耗目標資源。
  2. 「from multiple sources」:流量來自多個來源。

DoS 是由單一來源或少數來源發動大量請求;DDoS 則是由多個分散來源同時發動攻擊。因此,DDoS 的完整特徵是:

多個來源的大量流量⟶耗盡目標資源⟶正常服務中斷\text{多個來源的大量流量} \longrightarrow \text{耗盡目標資源} \longrightarrow \text{正常服務中斷}

符合這項描述的是選項(C)。

選項分析

(A)錯誤

「A type of malware that infects multiple machines and spreads through a network.」

此選項描述的是一種會感染多台電腦並透過網路擴散的惡意軟體,較接近電腦蠕蟲(computer worm)的特徵。

殭屍網路中的惡意程式可能是發動 DDoS 的工具,但惡意軟體本身不等於 DDoS 攻擊。DDoS 是一種攻擊行為與攻擊方式,重點在於以多個來源產生大量流量,使目標無法提供服務。

(B)錯誤

「A type of cyber attack that targets an individual user's personal information.」

此選項描述的是以竊取個人資料為目的的網路攻擊,例如網路釣魚(phishing)、身分竊取(identity theft)或資料外洩。

DDoS 的主要目標是服務可用性(availability),使網站或系統無法正常服務;竊取個人資訊則主要涉及機密性(confidentiality),兩者攻擊目的不同。

(C)正確

🔒

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

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

免費註冊

第 8 題2 分

Which of the following statements is CORRECT about decision trees in data mining?

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

這一題的完整詳解

核心觀念

決策樹(Decision Tree)是資料探勘與機器學習中的監督式學習模型,透過一連串的條件判斷將資料逐步分割,最後在葉節點(leaf node)輸出分類結果或數值預測。

常見用途包括:

  • 分類(classification):預測資料屬於哪一個類別。
  • 迴歸(regression):預測連續數值。

決策樹會依據特徵選擇切割條件,常見評估指標包括:

  • 資訊增益(Information Gain)
  • 熵(Entropy)
  • 基尼不純度(Gini Impurity)
  • 均方誤差(Mean Squared Error)

樹的深度越深,模型通常越能貼合訓練資料,但也更容易將訓練資料中的雜訊一併學習,造成過度擬合(overfitting)。因此,可透過**剪枝(pruning)**降低模型複雜度,提升泛化能力。


解題方法

本題詢問關於決策樹的正確敘述。判斷重點有三個:

  1. 決策樹是否能處理類別型資料。
  2. 樹的深度與模型效能是否必然呈正相關。
  3. 剪枝的功能是否為降低過度擬合。

逐項檢查後,只有選項(E)正確。


選項分析

(A)Decision trees cannot handle categorical data.

錯誤。

決策樹可以處理類別型資料(categorical data)。例如,根據「性別」、「職業」、「是否吸菸」等欄位進行分支:

  • 性別 = 男
  • 性別 = 女

部分實作會先將類別轉換成數值形式,但這是特定演算法或軟體的資料前處理要求,並不代表決策樹本身無法處理類別資料。

因此,「決策樹不能處理類別型資料」是錯誤敘述。


(B)A deeper decision tree always improves model performance.

錯誤。

較深的決策樹具有較高的模型複雜度,能更細緻地切割訓練資料。然而,樹過深時容易產生過度擬合:

  • 訓練資料準確率可能很高。
  • 未看過的測試資料表現可能下降。
  • 模型可能學到雜訊與特殊例外,而非一般規則。

模型深度與效能並非永遠正相關。適當深度必須依據驗證資料、交叉驗證或剪枝方法決定。

題目中的 always 是關鍵字;只要存在過度擬合的情況,「一定改善效能」便不成立。


(C)Decision trees do not support ensemble learning.

錯誤。

決策樹可以作為集成學習(ensemble learning)的基礎模型。常見方法包括:

🔒

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

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

免費註冊

第 9 題2 分

As computer systems evolve, greater performance can be achieved by taking advantage of improvements in technology, such as faster circuitry. Which of the following is a method used in computer organization to increase the performance of a CPU by allowing multiple instructions to be executed simultaneously?

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

這一題的完整詳解

核心觀念

本題考查 CPU 的 指令管線化(Pipelining)。

一條指令通常需經過數個階段,例如:

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

Pipelining 將指令執行切分成多個階段,使不同指令能在同一時間分別處於不同階段。例如:

時間指令 1指令 2指令 3
第 1 週期IF
第 2 週期IDIF
第 3 週期EXIDIF
第 4 週期MEMEXID
第 5 週期WBMEMEX

因此,Pipelining 的重點是「重疊執行不同指令的不同階段」,提高 CPU 的指令吞吐量。


解題方法

題幹的關鍵描述是:

allowing multiple instructions to be executed simultaneously

也就是「讓多個指令能同時執行」。

在計算機組織中,若 CPU 將指令分成多個處理階段,並讓多個指令重疊進行,這種提高效能的方法就是 Pipelining。

假設一條指令需分成 kk 個階段,每個階段耗時約為一個時脈週期。未使用管線時,執行 nn 條指令約需:

nknk

使用理想管線後,第一條指令完成需要 kk 個週期,後續每個週期可完成一條指令,因此約需:

k+n−1k+n-1

當 nn 很大時,理想加速比接近:

nkk+n−1≈k\frac{nk}{k+n-1}\approx k

這表示 Pipelining 主要提升的是 吞吐量(throughput),不一定縮短單一指令從開始到完成的延遲時間。

【答案:C】Pipelining


選項分析

(A) Multithreading

Multithreading(多執行緒)是讓一個程式分成多個執行緒,由 CPU 交替或同時處理,以提高資源使用率與整體效能。

它描述的是「執行緒層級」的並行處理,並非本題所指的將單一指令分成多個階段、使指令彼此重疊執行。因此不是最精確的答案。

(B) Multiprocessing

🔒

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

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

免費註冊

第 10 題2 分

Which operating system scheduling algorithm may lead to starvation?

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

這一題的完整詳解

核心觀念

本題考的是作業系統的 CPU 排程(CPU Scheduling),以及「飢餓(starvation)」的定義。

飢餓是指:某個行程長時間處於 ready queue,持續等待 CPU 資源,其他行程卻不斷獲得服務,使它幾乎沒有機會執行。

常見原因是排程演算法持續偏好某一類行程,例如:

  • 持續偏好執行時間較短的工作
  • 持續偏好較高優先權的行程
  • 低優先權佇列長期無法取得 CPU

本題官方答案指定為 B,因此應從各演算法是否會因「偏好短工作」而使長工作長期等待來判斷。

解題方法

觀察每個排程演算法的服務順序:

  • FCFS、FIFO:依到達順序服務
  • SJF:優先執行 CPU burst time 較短的工作
  • Round Robin:每個行程輪流取得固定時間片
  • Multilevel Queue:依佇列優先權及佇列間政策服務

其中,SJF 會優先選擇執行時間較短的工作。若長工作等待期間,不斷有新的短工作到達,排程器會反覆執行新到達的短工作,使長工作持續無法獲得 CPU,因而產生 starvation。

例如:

時間到達的工作
t=0t=0長工作 PLP_L,CPU burst 為 20
t=1t=1短工作 P1P_1,CPU burst 為 1
t=2t=2短工作 P2P_2,CPU burst 為 1
t=3t=3短工作 P3P_3,CPU burst 為 1
⋯\cdots持續有短工作到達

SJF 會持續優先執行短工作;只要短工作不斷到達,PLP_L 的等待時間便可能無限延長。

因此本題答案為 SJF。

選項分析

(A) First-Come, First-Served(FCFS)

FCFS 按照行程抵達 ready queue 的先後順序執行,先到者先服務。

只要行程最後會輪到 CPU,便不會因為有新行程持續到達而被永久插隊。因此,在一般假設下,FCFS 不會造成 starvation。

FCFS 的主要缺點是 convoy effect:一個執行時間很長的行程位於佇列前端時,後方許多短行程都必須等待,造成平均等待時間增加,但這屬於效能問題,不是飢餓。

所以 (A) 錯誤。

(B) Shortest Job First(SJF)

SJF 優先執行 CPU burst time 最短的行程。

當長工作等待時,若持續有更短的工作到達,長工作會一次又一次被排在後面,等待時間可能無限延長,形成 starvation。

在非搶先式 SJF 中,長工作一旦開始執行便會完成;但在它開始執行前,可能因大量短工作持續插入而長期等待。

🔒

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

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

免費註冊

第 11 題2 分

Which of the following statements about machine learning is CORRECT?

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

這一題的完整詳解

核心觀念

本題考查機器學習中的:

  • Feature engineering(特徵工程)
  • Support vector(支援向量)
  • Neural network training loss 與 validation loss
  • kk-NN 分類中的 kk 值選擇
  • Overfitting(過度擬合)的判斷

判斷這類題目的關鍵,是辨認各選項對專有名詞與訓練現象的描述是否符合正式定義。

解題方法

逐一比對各選項的敘述與機器學習基本定義:

  1. 特徵工程可以由原始特徵產生新特徵。
  2. 支援向量是與分類決策邊界相關的資料點,不是資料點向量的配對集合。
  3. 訓練損失不保證每一步都下降。
  4. kk-NN 應重視鄰近資料點,kk 不宜直接設為整個資料集大小。
  5. 過度擬合通常表現為訓練集表現很好,但測試集表現較差。

因此正確選項為 A。

選項分析

(A) 正確

We can generate new features by linearly or non-linearly combining the original features, which is a method of feature engineering.

特徵工程是利用原始資料建立更適合模型使用的新特徵,包含:

  • 特徵選擇:從既有特徵中挑選重要特徵。
  • 特徵轉換:例如標準化、對數轉換。
  • 特徵建構:將原始特徵組合成新特徵。

若原始特徵為 x1,x2x_1,x_2,可建立線性組合:

z=x1+2x2z=x_1+2x_2

也可建立非線性特徵:

z=x12,z=x1x2,z=log⁡(x1)z=x_1^2,\qquad z=x_1x_2,\qquad z=\log(x_1)

這些新特徵可能使資料更容易被分類或預測,因此屬於 feature engineering。故 A 正確。

(B) 錯誤

In a dataset, all pairwise combinations of data point vectors are called the support vectors of the dataset.

Support vectors 是支援向量機(SVM)中,最接近分類決策邊界、對最大間隔超平面具有關鍵影響的訓練資料點。

在二元分類中,SVM 尋找決策邊界:

wTx+b=0w^Tx+b=0

支援向量通常位於兩側的 margin 邊界附近,會決定分類超平面的位置。它們是原始資料點的子集合,不是所有資料點向量的兩兩組合。

「pairwise combinations」可能涉及資料點配對、特徵交互作用或核方法中的運算,但不等於 support vectors。故 B 錯誤。

(C) 錯誤

During the training process of a neural network, the validation loss typically fluctuates, but the training loss will always decrease.

訓練損失通常會隨訓練進行而整體下降,但不代表每一次參數更新後都必然下降。

🔒

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

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

免費註冊

第 12 題2 分

Which of the following statements about TCP technology in the internet is CORRECT?

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

這一題的完整詳解

核心觀念

本題考查 TCP(Transmission Control Protocol,傳輸控制協定)的基本特性,包括:

  • 連線建立方式
  • 流量控制(flow control)
  • TCP 與 UDP 的封包標頭差異
  • TCP、UDP 的典型應用
  • TCP 名稱的全稱

TCP 位於 OSI 模型的傳輸層,主要特色是:

  1. 連線導向(connection-oriented)
  2. 可靠傳輸
  3. 具有流量控制
  4. 具有壅塞控制
  5. 透過序號、確認訊息與重傳機制維持資料正確性

解題方法

逐一檢查各選項是否符合 TCP 的正式定義與常見技術特性即可。

其中最關鍵的判斷是:

  • TCP 建立連線使用 三向交握(three-way handshake)
  • TCP 具有 流量控制(flow control)
  • TCP 全名是 Transmission Control Protocol

因此,符合題意的選項為 (B)。

選項分析

(A) It uses a two-way handshake to establish a connection.

錯誤。

TCP 建立連線使用三向交握,流程如下:

  1. 用戶端傳送 SYN
  2. 伺服器回覆 SYN + ACK
  3. 用戶端回覆 ACK

可表示為:

SYN→SYN+ACK→ACK\text{SYN} \rightarrow \text{SYN+ACK} \rightarrow \text{ACK}

三向交握的目的,是讓雙方確認:

  • 對方確實可以接收資料
  • 雙方的初始序號已同步
  • 雙方已準備好建立雙向傳輸

因此,TCP 並非使用 two-way handshake,而是使用 three-way handshake。

(B) It has flow control functionality.

正確。

TCP 具有流量控制功能,用來避免發送端傳送速度過快,導致接收端的緩衝區溢位。

TCP 通常透過滑動視窗(sliding window)與接收視窗(receive window, rwnd)實現流量控制。接收端會在 TCP 標頭中告知目前可接收的資料量,發送端依據接收視窗限制未確認資料量:

Outstanding Data≤Receive Window\text{Outstanding Data} \leq \text{Receive Window}

若接收端可用緩衝區變小,便會通告較小的視窗,使發送端降低傳送量;若接收端暫時無法接收資料,也可以通告零視窗。

流量控制主要處理的是:

發送端與接收端速度不匹配的問題。

這正是 TCP 的正式功能,因此本選項正確。

(C) Packet size is usually smaller than UDP.

錯誤。

TCP 與 UDP 的資料傳輸都受到網路最大傳輸單位(MTU)限制,不能單純說 TCP 的封包大小通常比 UDP 小。

若比較傳輸層標頭:

🔒

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

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

免費註冊

第 13 題2 分

Which of the following designs is a data structure to implement a Least Recently Used (LRU) cache, supporting get and put operations in O(1)O(1) time complexity?

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

這一題的完整詳解

核心觀念

LRU(Least Recently Used,最近最少使用)快取的規則是:

  • 快取滿時,淘汰「最久沒有被使用」的資料。
  • get(key):查詢資料;查到後該資料成為最近使用。
  • put(key, value):新增或更新資料;該資料成為最近使用。
  • get 與 put 都必須在 O(1)O(1) 時間內完成。

要同時達成這些要求,需要處理兩件事:

  1. 以 key 快速查找資料。
  2. 以使用順序快速移動節點,並快速刪除最久未使用的節點。

因此採用:

  • Hash table:以 key 找到對應節點,查找時間為 O(1)O(1)。
  • Doubly linked list:維持使用順序,節點移動與刪除皆為 O(1)O(1)。

常見排列方式如下:

head→最近使用→⋯→最久未使用→tail\text{head} \rightarrow \text{最近使用} \rightarrow \cdots \rightarrow \text{最久未使用} \rightarrow \text{tail}

當快取滿了,直接刪除 tail 節點即可。


解題方法

以 Hash table 儲存:

key↦Doubly linked list node\text{key} \mapsto \text{Doubly linked list node}

每個 linked-list node 儲存:

  • key
  • value
  • prev
  • next

get(key)

  1. 在 Hash table 查找 key。
  2. 若不存在,回傳失敗,例如 −1-1。
  3. 若存在,透過節點的 prev、next 指標將它從原位置移除。
  4. 將該節點移到 linked list 的最前端。
  5. 回傳其 value。

整體時間複雜度為:

O(1)+O(1)+O(1)=O(1)O(1)+O(1)+O(1)=O(1)

put(key, value)

  1. 在 Hash table 查找 key。
  2. 若 key 已存在:
  • 更新 value。
  • 將節點移到最前端。
  1. 若 key 不存在:
  • 建立新節點並插入最前端。
  • 將 key 與節點放入 Hash table。
  1. 若超過容量:
  • 刪除 linked list 尾端節點。
  • 從 Hash table 移除該節點的 key。

所有操作均只涉及固定數量的指標更新與 Hash table 操作,因此為 O(1)O(1)。

關鍵程式碼概念

get(key):
 if key not in table:
 return -1

 node = table[key]
 remove(node)
 add_to_front(node)
 return node.value

put(key, value):
 if key in table:
 node = table[key]
 node.value = value
 remove(node)
 add_to_front(node)
 else:
 node = new Node(key, value)
 table[key] = node
 add_to_front(node)

 if size > capacity:
 old = remove_from_back
 delete table[old.key]

其中 remove(node) 能在 O(1)O(1) 完成,是因為 doubly linked list 的節點具有前後指標;table[key] 能在 O(1)O(1) 找到節點,是因為使用 Hash table。


操作追蹤(Trace)

假設快取容量為 22,列表左側代表最近使用:

操作一:put(A, 1)

[A]

Hash table:

A → A 節點

操作二:put(B, 2)

[B, A]

B 是最新使用,A 變成較久未使用。

操作三:get(A)

🔒

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

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

免費註冊

第 14 題2 分

Hamming distance is a metric used in computer science to measure dissimilarity between two binary data strings. Which of the following binary strings has a Hamming distance of 5 with (11010011)2(11010011)_2?

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

這一題的完整詳解

核心觀念

Hamming distance 是比較兩個等長字串在相同位置上「不同的位元數」。對二進位字串而言,可用逐位比較,或利用 XOR 判斷:

  • 相同位元:XOR 結果為 00
  • 不同位元:XOR 結果為 11

因此,Hamming distance 可表示為 XOR 結果中 11 的個數:

dH(x,y)=wt⁡(x⊕y)d_H(x,y)=\operatorname{wt}(x\oplus y)

其中 wt⁡\operatorname{wt} 表示二進位字串中 11 的數量。

題目基準字串為:

(11010011)2(11010011)_2

解題方法

逐位比較基準字串與各選項,計算不同位置的數量。

選項與 (11010011)2(11010011)_2 比較不同位置數判定
(A) (11011111)2(11011111)_21101001111010011 vs. 110111111101111122錯
(B) (00010000)2(00010000)_21101001111010011 vs. 000100000001000055依定義正確
(C) (11111111)2(11111111)_21101001111010011 vs. 111111111111111133錯
(D) (01111110)2(01111110)_21101001111010011 vs. 011111100111111055依定義正確
(E) (10010111)2(10010111)_21101001111010011 vs. 100101111001011122錯

選項分析

(A) (11011111)2(11011111)_2

逐位比較:

1101001111011111\begin{array}{cccccccc} 1&1&0&1&0&0&1&1\\ 1&1&0&1&1&1&1&1 \end{array}

第 55、66 位不同,因此:

dH=2d_H=2

不是 55,故錯誤。

(B) (00010000)2(00010000)_2

逐位比較:

1101001100010000\begin{array}{cccccccc} 1&1&0&1&0&0&1&1\\ 0&0&0&1&0&0&0&0 \end{array}

第 11、22、33、77、88 位不同,共 55 位:

🔒

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

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

免費註冊

第 15 題2 分

Which of the following statements is CORRECT?

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

這一題的完整詳解

核心觀念

本題考查四類常見的機器學習方法:

  • DBSCAN:以密度為基礎的分群法。
  • Naïve Bayes Classifier:以條件獨立假設為基礎的分類法。
  • PCA:以最大化資料變異為目標的降維法。
  • K-means:以距離與群內平方誤差為基礎的分群法。
  • Sequential Forward Selection:逐步向前選擇的特徵選擇法。

判斷本題的關鍵,是辨認每個演算法的「主要目的」與「核心假設」。


解題方法

逐一比對各選項對演算法的定義:

  1. 判斷 DBSCAN 是否為資料庫索引工具。
  2. 判斷 Naïve Bayes 的獨立性假設是否被正確描述。
  3. 判斷 PCA 最大化的是資料變異,還是類別分離度。
  4. 判斷 K-means 是分群方法,還是弱分類器的線性組合。
  5. 判斷 Sequential Forward Selection 是否依序選擇最能改善分類效能的特徵。

其中只有選項 E 正確描述 Sequential Forward Selection 的基本機制。


選項分析

(A) DBSCAN is an algorithm for scanning database information and building indexes.

錯誤。

DBSCAN 的全名是 Density-Based Spatial Clustering of Applications with Noise,中文為「具雜訊的密度基礎空間分群法」。它是一種非監督式分群演算法,根據資料點周圍的密度將資料分成不同群集,並將低密度區域的點視為雜訊或離群值。

DBSCAN 使用兩個主要參數:

  • ε\varepsilon:鄰域半徑。
  • MinPts\text{MinPts}:判定核心點所需的最少鄰居數。

若某點在 ε\varepsilon 鄰域內至少有 MinPts\text{MinPts} 個資料點,則可視為核心點,並依據密度可達性逐步擴展群集。

因此,DBSCAN 的用途是「密度式分群與離群值辨識」,不是掃描資料庫資訊,也不是建立資料庫索引。

在適當的空間索引結構下,DBSCAN 的平均時間複雜度可達 O(nlog⁡n)O(n\log n);若每個點都必須逐一檢查其他點,最壞情況為 O(n2)O(n^2),其中 nn 為資料點數量。


(B) Naïve Bayes Classifier assumes all features are independent of each other, making it suitable for any dataset.

錯誤。

Naïve Bayes 的核心是「給定類別後,各特徵彼此條件獨立」:

P(x∣Ck)=∏i=1dP(xi∣Ck)P(\mathbf{x}\mid C_k) = \prod_{i=1}^{d}P(x_i\mid C_k)

因此分類時可利用貝氏定理:

P(Ck∣x)∝P(Ck)∏i=1dP(xi∣Ck)P(C_k\mid \mathbf{x}) \propto P(C_k)\prod_{i=1}^{d}P(x_i\mid C_k)

這裡的重點不是所有特徵在任何情況下都彼此獨立,而是:

P(x1,x2,…,xd∣Ck)=∏i=1dP(xi∣Ck)P(x_1,x_2,\ldots,x_d\mid C_k) = \prod_{i=1}^{d}P(x_i\mid C_k)

也就是「在已知類別 CkC_k 的條件下」假設特徵獨立。

此外,Naïve Bayes 並不代表適合任何資料集。當特徵高度相關時,重複計算相同資訊可能導致機率估計失真。例如,若兩個特徵幾乎表達相同資訊,Naïve Bayes 仍會將它們視為兩個獨立證據。

Naïve Bayes 的訓練通常只需估計各類別下每個特徵的機率,因此時間與空間複雜度通常約為 O(nd)O(nd),其中 nn 是樣本數、dd 是特徵數;實際複雜度會依特徵型態與機率模型而異。


(C) The first projection direction of PCA is the direction that maximizes the separation between different data classes.

錯誤。

PCA,即 Principal Component Analysis,是一種非監督式降維方法。第一主成分方向是使資料投影後變異數最大的方向:

w1=arg⁡max⁡∥w∥=1Var⁡(Xw)\mathbf{w}_1 = \arg\max_{\|\mathbf{w}\|=1} \operatorname{Var}(X\mathbf{w})

若資料先中心化,協方差矩陣為 Σ\Sigma,則第一主成分方向為協方差矩陣最大特徵值所對應的特徵向量:

Σw1=λ1w1\Sigma\mathbf{w}_1 = \lambda_1\mathbf{w}_1

其中 λ1\lambda_1 為最大特徵值。

🔒

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

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

免費註冊

第 16 題2 分

In dimensionality reduction, what is the main goal of Principal Component Analysis (PCA)?

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

這一題的完整詳解

核心觀念

本題考查主成分分析(Principal Component Analysis, PCA)在降維中的主要目的。

PCA 會將原本可能彼此相關的變數,透過線性轉換改寫成一組新的變數,稱為「主成分」(principal components)。這些主成分具有以下特性:

  1. 各主成分彼此正交,因此在使用協方差矩陣描述時,彼此不相關。
  2. 第一主成分保留資料中最大的變異量。
  3. 第二主成分在與第一主成分正交的條件下,保留剩餘資料中最大的變異量。
  4. 依此類推,後續主成分所保留的變異量逐漸減少。

若只保留前 kk 個主成分,就能以較少的特徵表示原始資料,達到降維並盡量保留資訊的效果。


解題方法

PCA 的標準流程如下:

  1. 對各特徵進行中心化,通常令每個特徵減去其平均值。
  2. 計算資料的協方差矩陣。
  3. 求出協方差矩陣的特徵向量與特徵值。
  4. 將特徵向量依特徵值由大到小排序。
  5. 選取前幾個特徵向量作為新的座標軸。
  6. 將資料投影到這些新座標軸上。

其中,特徵值代表該主成分所保留的變異量;特徵值越大,表示該方向包含的資料變化越多。

例如,原始變數為 X1X_1 與 X2X_2,兩者高度相關。PCA 會尋找新的方向 Z1Z_1 與 Z2Z_2,使得:

Z1=a1X1+a2X2Z_1 = a_1X_1+a_2X_2

且 Z1Z_1 保留最大變異量。接著尋找與 Z1Z_1 正交的 Z2Z_2,使其保留剩餘變異量。由於新的座標軸彼此正交,主成分之間通常不相關。

因此,PCA 的核心就是:

相關變數⟶不相關的主成分\text{相關變數} \longrightarrow \text{不相關的主成分}

並在降維時保留變異量最大的主成分。


選項分析

(A) To increase the number of features in the dataset.

錯誤。

PCA 的目的在於減少特徵數量,而不是增加特徵數量。若原始資料有 pp 個特徵,降維後通常只保留前 kk 個主成分,其中 k<pk<p。

PCA 雖然會產生新的特徵,但這些新特徵是原始特徵的線性組合,主要用途是以較少的維度表示資料,並非增加資料維度。


(B) To remove outliers from the dataset.

錯誤。

PCA 本身不是離群值偵測或離群值移除方法。離群值甚至可能嚴重影響平均值與協方差矩陣,進而改變主成分方向。

移除離群值通常需要使用離群值偵測方法,例如:

🔒

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

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

免費註冊

第 17 題2 分

A banking system allows users to transfer money between accounts. The system must maintain atomicity and isolation. Consider the following transaction steps:

(1) Check if Account A has enough balance
(2) Deduct the amount from Account A
(3) Add the amount to Account B
(4) Commit the transaction

Which of the following database properties is most critical to prevent a scenario where money is deducted from Account A but not added to Account B due to a system crash?

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

這一題的完整詳解

核心觀念

本題考查資料庫交易的 ACID 特性:

  • Atomicity(原子性):交易中的所有操作必須全部完成;若任一步驟失敗,整筆交易必須全部取消。
  • Consistency(一致性):交易前後資料必須符合既定規則,例如轉帳前後兩個帳戶的總金額不變。
  • Isolation(隔離性):同時執行的交易彼此隔離,避免讀取到其他交易尚未完成的中間狀態。
  • Durability(持久性):交易一旦成功提交,結果即使遇到系統故障也必須保留。

本題的轉帳交易包含:

  1. 檢查 Account A 餘額
  2. 從 Account A 扣款
  3. 將款項加入 Account B
  4. 提交交易

轉帳的基本要求是:扣款與入帳必須視為一個不可分割的整體。

解題方法

題目描述的錯誤情境是:

  • 已完成步驟 (2),Account A 的金額已扣除;
  • 尚未完成步驟 (3),Account B 尚未收到款項;
  • 系統在此時發生當機。

若交易具有原子性,資料庫會在交易未完整完成且尚未成功提交時,將已執行的扣款操作復原(rollback):

Account A 扣款+Account B 入帳\text{Account A 扣款}+\text{Account B 入帳}

必須整體成功;若其中一部分失敗,則:

整筆交易取消\text{整筆交易取消}

因此,系統恢復後,Account A 會恢復原本餘額,Account B 也不會增加金額,避免款項憑空消失。

所以最關鍵的資料庫性質是 Atomicity(原子性)。

選項分析

(A) Durability(持久性)錯誤

持久性確保的是「已經成功 Commit 的交易結果」能夠永久保存,即使之後發生斷電、當機等故障,資料仍然存在。

本題的故障發生在步驟 (2) 與步驟 (3) 之間,而且尚未執行步驟 (4) 的 Commit。此時重點不是保存已提交的結果,而是取消不完整的交易,因此主要考查原子性。

(B) Isolation(隔離性)錯誤

隔離性處理的是多個交易同時執行時的互相影響,例如:

  • 一筆交易讀取到另一筆交易尚未提交的資料;
  • 兩筆交易同時修改同一個帳戶;
  • 發生 dirty read、non-repeatable read 或 lost update。
🔒

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

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

免費註冊

第 18 題2 分

Which of the following statements about memory management in operating systems is CORRECT?

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

這一題的完整詳解

核心觀念

本題考查作業系統的虛擬記憶體(virtual memory)與分頁(paging)機制,重點包括:

  • Page size 的設定方式
  • Page table 的儲存位置
  • Page replacement 的選擇原則
  • Page fault 的定義

在分頁系統中,虛擬記憶體被切割成固定大小的 page,實體記憶體則被切割成相同大小的 frame。處理程序存取某個虛擬位址時,作業系統會透過 page table 將虛擬頁面對映到實體 frame。

若所需頁面目前不在實體記憶體中,就會發生 page fault,作業系統必須從磁碟等輔助儲存體將該頁載入記憶體。

解題方法

逐一檢查各選項是否符合虛擬記憶體的基本定義與運作原則:

  1. Page size 是否通常為 22 的冪次方。
  2. Page table 的主要儲存位置。
  3. Page replacement 應選擇哪一類頁面移除。
  4. 執行 I/O 的程序頁面是否適合被移除。
  5. Page fault 的正式定義。

其中,選項 E 直接描述 page fault 的核心意義,因此可由定義判斷。

選項分析

(A) Page size is usually set to a power of 2, such as 20 or 40.

此選項錯誤。

Page size 通常設定為 22 的冪次方,例如:

  • 4 KB=2124\text{ KB}=2^{12} bytes
  • 8 KB=2138\text{ KB}=2^{13} bytes
  • 1 MB=2201\text{ MB}=2^{20} bytes

如此設計可讓虛擬位址直接切分為:

Virtual Address=Page Number+Offset\text{Virtual Address}= \text{Page Number}+\text{Offset}

若 page size 為 2n2^n bytes,則位址的低 nn 位可直接作為 page offset。

題目選項寫成「20 or 40」時,若按照字面理解,2020 與 4040 都不是 22 的冪次方,因此敘述不正確。若原題排版原意是 2202^{20} 或 2402^{40},這種寫法在概念上仍不符合一般作業系統常見的 page size 範例,因為 2402^{40} bytes 過大,不是一般分頁大小的典型設定。故依題目公布答案,A 不選。

(B) The page table is usually stored on the hard disk.

此選項錯誤。

Page table 是處理程序進行虛擬位址轉換時所需的重要資料結構,通常必須放在主記憶體中,才能快速查詢。處理器也可能使用 TLB(Translation Lookaside Buffer)快取近期使用的 page table 對映資料,以加速位址轉換。

硬碟主要用於儲存尚未載入實體記憶體的頁面,也就是 backing store 或 swap space。Page table 的部分內容在特定系統設計下可能被換出,但「通常儲存在硬碟」並非正確描述。

🔒

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

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

免費註冊

第 19 題2 分

Which of the following is a CORRECT order for the Convolutional Neural Network (CNN) operation?

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

這一題的完整詳解

核心觀念

本題考查卷積神經網路(Convolutional Neural Network, CNN)的典型處理流程。CNN 通常依序包含:

  1. Convolution(卷積):利用 filter 擷取影像中的局部特徵,例如邊緣、線條與紋理。
  2. Pooling(池化):縮小特徵圖尺寸,降低計算量,並保留重要特徵;常見方法是 max pooling。
  3. Flattening(扁平化):將多維特徵圖展平成一維向量。
  4. Fully Connected Layer(全連接層):根據前面擷取的特徵進行分類或預測。

典型結構可表示為:

Input→Convolution→Pooling→Flattening→Fully Connected→Output\text{Input} \rightarrow \text{Convolution} \rightarrow \text{Pooling} \rightarrow \text{Flattening} \rightarrow \text{Fully Connected} \rightarrow \text{Output}

因此,本題正確順序為:

convolution→max pooling→flattening→full connection\text{convolution} \rightarrow \text{max pooling} \rightarrow \text{flattening} \rightarrow \text{full connection}

解題方法

判斷 CNN 順序時,可依照「先擷取特徵、再壓縮特徵、最後分類」的原則:

  • 卷積層先從原始影像中擷取局部特徵。
  • Max pooling 對卷積後的特徵圖進行降維與特徵保留。
  • Flattening 將二維或三維特徵資料轉為一維向量。
  • Fully connected layer 接收一維向量,完成分類。

其中,flattening 通常是連接卷積區塊與全連接分類區塊的橋樑。若尚未完成卷積與池化,就沒有適合拿來展平的高階特徵圖。


選項分析

(A) convolution → max pooling → flattening → full connection

正確。

卷積層先擷取影像特徵,max pooling 再縮小特徵圖並保留較大的特徵值,接著 flattening 將特徵圖轉成一維向量,最後交由全連接層進行分類。這是 CNN 的標準基本流程。


(B) max pooling → convolution → flattening → full connection

錯誤。

Max pooling 通常作用在卷積產生的特徵圖上。輸入影像尚未經過卷積時,直接進行池化並非本題所考的典型 CNN 順序。


🔒

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

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

免費註冊

第 20 題2 分

Let AA and BB be Boolean values. Which of the following is equivalent to

NAND(NAND(A,NAND(A,B)),NAND(B,NAND(A,B)))NAND(NAND(A, NAND(A, B)), NAND(B, NAND(A, B)))?

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

這一題的完整詳解

核心觀念

本題考查 Boolean algebra(布林代數)與 NAND 邏輯閘的等價轉換。

NAND 的定義為:

NAND(X,Y)=¬(X∧Y)NAND(X,Y)=\neg(X\land Y)

其中:

  • ∧\land 表示 AND
  • ¬\neg 表示 NOT
  • ∨\lor 表示 OR

題目要求判斷下列運算:

NAND(NAND(A,NAND(A,B)),NAND(B,NAND(A,B)))NAND(NAND(A,NAND(A,B)),NAND(B,NAND(A,B)))

所代表的邏輯功能。


解題方法

先令:

X=NAND(A,B)=¬(A∧B)X=NAND(A,B)=\neg(A\land B)

根據德摩根定律:

X=¬A∨¬BX=\neg A\lor \neg B

原式可改寫為:

NAND(NAND(A,X),NAND(B,X))NAND(NAND(A,X),NAND(B,X))

分別化簡兩個內層結果。

左側:

NAND(A,X)=¬(A∧X)NAND(A,X)=\neg(A\land X)

代入 X=¬A∨¬BX=\neg A\lor\neg B:

A∧X=A∧(¬A∨¬B)A\land X =A\land(\neg A\lor\neg B)

利用分配律:

A∧(¬A∨¬B)=(A∧¬A)∨(A∧¬B)=0∨(A∧¬B)=A∧¬BA\land(\neg A\lor\neg B) =(A\land\neg A)\lor(A\land\neg B) =0\lor(A\land\neg B) =A\land\neg B

因此:

NAND(A,X)=¬(A∧¬B)=¬A∨BNAND(A,X)=\neg(A\land\neg B) =\neg A\lor B

右側:

NAND(B,X)=¬(B∧X)NAND(B,X)=\neg(B\land X)

代入 X=¬A∨¬BX=\neg A\lor\neg B:

B∧X=B∧(¬A∨¬B)=(B∧¬A)∨(B∧¬B)=A ⁣′B∨0=¬A∧BB\land X =B\land(\neg A\lor\neg B) =(B\land\neg A)\lor(B\land\neg B) =A\!^{\prime}B\lor0 =\neg A\land B

因此:

NAND(B,X)=¬(¬A∧B)=A∨¬BNAND(B,X)=\neg(\neg A\land B) =A\lor\neg B

原式成為:

¬[(¬A∨B)∧(A∨¬B)]\neg\big[(\neg A\lor B)\land(A\lor\neg B)\big]

括號內:

(¬A∨B)∧(A∨¬B)(\neg A\lor B)\land(A\lor\neg B)

正是 AA 與 BB 相同時為 11 的 XNOR,因此再取 NOT 後得到 XOR:

¬[(¬A∨B)∧(A∨¬B)]=A⊕B\neg\big[(\neg A\lor B)\land(A\lor\neg B)\big] =A\oplus B

所以原式等價於:

🔒

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

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

免費註冊

第 21 題2 分

Consider the following binary search program written in Python. Please select the CORRECT statement when the input array arr contains exactly 10 numbers.

def binary_search(arr, key):
    low, high = 0, len(arr) - 1
    while low <= high:
        center = (low + high) // 2
        if arr[center] == key:
            return center
        elif key < arr[center]:
            high = center - 1
        else:
            low = center + 1
    return -1

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

這一題的完整詳解

核心觀念

本題考查:

  1. **Binary Search(二分搜尋法)**的運作方式。
  2. 搜尋前資料是否必須排序。
  3. low、high、center 的更新規則。
  4. 搜尋失敗時的回傳值。
  5. 演算法的時間與空間複雜度。

二分搜尋法每次取目前搜尋範圍的中點:

center=⌊low+high2⌋\text{center}=\left\lfloor\frac{\text{low}+\text{high}}{2}\right\rfloor

若 key 小於中點元素,搜尋左半部;若 key 大於中點元素,搜尋右半部。因此,資料必須具有單調排序性。本題的程式適用於單調遞增序列。


解題方法

陣列共有 10 個數字,因此索引範圍為:

0≤index≤90\leq \text{index}\leq 9

初始值為:

low = 0
high = 9

每次迴圈執行:

center = (low + high) // 2

判斷結果如下:

  • arr[center] == key:找到資料,回傳 center。
  • key < arr[center]:令 high = center - 1,搜尋左半部。
  • key > arr[center]:令 low = center + 1,搜尋右半部。
  • 搜尋範圍不存在時,即 low > high,回傳 -1。

關鍵程式碼與逐步追蹤

當 key 大於 max(arr) 時

假設 arr 已依遞增順序排列:

arr = [a0, a1, a2, a3, a4, a5, a6, a7, a8, a9]
key > max(arr)

因為 key 大於所有元素,每次都會執行:

low = center + 1

追蹤如下:

回合lowhighcenter比較結果更新
1094key > arr[4]low = 5
2597key > arr[7]low = 8
3898key > arr[8]low = 9
4999key > arr[9]low = 10

此時:

low=10,high=9\text{low}=10,\qquad \text{high}=9

因為 low <= high 不成立,迴圈結束,程式執行:

return -1

因此,搜尋失敗時不會回傳索引 10 或 11,而是回傳 -1。


選項分析

(A) When all the numbers in arr are the same, it will return 0.

錯誤。

當陣列所有元素相同時,若 key 等於該數值,第一次的中點為:

center=(0+9)//2=4\text{center}=(0+9)//2=4

程式會直接回傳:

return 4

不會回傳 0。

例如:

arr = [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
key = 5

第一次就找到 arr[4],因此回傳 4。

🔒

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

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

免費註冊

第 22 題2 分

When designing a website that allows users to upload and download images, which of the following methods is currently considered the safest when used individually?

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

這一題的完整詳解

核心觀念

本題考查「檔案上傳功能的安全驗證」與「不可信輸入處理」。

使用者上傳的檔案名稱、MIME type、檔案內容與大小都可能被竄改。攻擊者可能將惡意程式偽裝成圖片,造成:

  • Web Shell 或伺服器端程式碼執行
  • 惡意檔案被當成網頁內容執行
  • 檔案包含惡意腳本或多餘資料
  • EXIF 等中繼資料洩漏隱私
  • 大型檔案造成儲存空間耗盡或阻斷服務

因此,安全的圖片上傳處理不應只相信檔名、MIME type 或檔案前幾個位元組,而應將檔案交由可信任的圖片函式庫解碼,再重新編碼成標準圖片格式,移除不必要的中繼資料,並存放在不可執行程式碼的目錄。


解題方法

判斷各選項時,核心問題是:

這個方法是否能有效阻止「惡意檔案被偽裝成圖片並在伺服器上執行」?

安全性由弱至強可分為:

  1. 只檢查檔名:攻擊者可改名。
  2. 只檢查 MIME type:攻擊者可偽造標頭。
  3. 只檢查檔案標頭:攻擊者可製造偽裝檔案或多型檔案。
  4. 只限制檔案大小:只能降低資源耗盡風險,無法判斷內容是否惡意。
  5. 重新解析並重新產生圖片,移除中繼資料,並放在不可執行目錄:可破壞原始惡意內容,降低被當作程式執行的風險。

因此依官方公布答案,正確選項為 E。


選項分析

(A) 禁止副檔名為 .asp、.php 等常見程式碼副檔名

錯誤。

這種方法只檢查檔案名稱,防護力不足,原因包括:

  • 攻擊者可使用未列入黑名單的副檔名。
  • 攻擊者可使用大小寫變化,例如 .PHP。
  • 攻擊者可利用雙重副檔名,例如 image.php.jpg。
  • 某些伺服器設定可能錯誤解析副檔名。
  • 攻擊者可直接上傳沒有明顯程式副檔名的惡意檔案。

此外,黑名單方式必須預先列出所有危險副檔名,容易遺漏。檔案名稱本身不是可信任的安全依據。


(B) 只允許 MIME type 為 image/jpeg 等常見圖片類型

錯誤。

MIME type 通常來自 HTTP multipart request 的 Content-Type 欄位,使用者可以自行修改。例如,惡意檔案可以被宣稱為:

Content-Type: image/jpeg

但實際內容並不是合法 JPEG 圖片。

因此 MIME type 只是一項提示資訊,不能作為唯一的安全驗證條件。伺服器也不應直接相信瀏覽器或用戶端提供的 MIME type。


(C) 檢查檔案內容是否包含 JPG、PNG 等圖片標頭

錯誤。

檢查圖片標頭比單純檢查副檔名或 MIME type 更接近檔案實際內容,但仍不足以單獨保證安全。

原因包括:

  • 攻擊者可以在惡意檔案開頭加入合法圖片標頭。
  • 某些檔案可能同時符合多種格式,形成多型檔案。
  • 合法圖片格式的 metadata 或其他區段可能被放入惡意內容。
  • 只檢查檔案開頭,無法確認整個檔案是否能被正確解析。
🔒

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

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

免費註冊

第 23 題2 分

Digital audio is a representation of sound that can be stored, processed, and played back on a computer. For a single channel (mono) audio recording 10 seconds long, with a sample rate of 44.1 kHz and a bit depth of 16 bits, what is the size of the uncompressed audio file?

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

這一題的完整詳解

核心觀念

本題考查未壓縮數位音訊的檔案大小計算。音訊資料量取決於:

  • 取樣率:每秒取樣次數
  • 錄音時間:總秒數
  • 位元深度:每個取樣點所占的位元數
  • 聲道數:本題為單聲道,即 11 個聲道

計算公式為:

檔案大小(bits)=取樣率×錄音時間×位元深度×聲道數\text{檔案大小(bits)} = \text{取樣率} \times \text{錄音時間} \times \text{位元深度} \times \text{聲道數}

解題方法

已知:

  • 取樣率:44.1 kHz=44,100 samples/秒44.1\ \text{kHz}=44,100\ \text{samples/秒}
  • 錄音時間:1010 秒
  • 位元深度:16 bits/sample16\ \text{bits/sample}
  • 聲道數:11

先計算總取樣點數:

44,100×10=441,000 samples44,100\times 10=441,000\ \text{samples}

每個取樣點使用 1616 bits,因此總資料量為:

441,000×16=7,056,000 bits441,000\times 16 = 7,056,000\ \text{bits}

將 bits 轉換為 bytes:

7,056,0008=882,000 bytes\frac{7,056,000}{8} = 882,000\ \text{bytes}

以十進位換算:

882,000 bytes=882 kbytes882,000\ \text{bytes} = 882\ \text{kbytes}

因此正確答案為:

(A) 882 kbytes\boxed{\text{(A) }882\ \text{kbytes}}

選項分析

(A) 882 kbytes:正確

依照上述計算:

44,100×10×16÷8=882,000 bytes=882 kbytes44,100\times 10\times 16\div 8 = 882,000\ \text{bytes} = 882\ \text{kbytes}

因此符合官方答案。

(B) 7056 kbytes:錯誤

7,056,0007,056,000 是以 bits 表示的資料量,不是 kbytes。

若要換算成 bytes,必須除以 88:

7,056,000 bits÷8=882,000 bytes7,056,000\ \text{bits}\div 8 = 882,000\ \text{bytes}

因此不能直接將 7,0567,056 視為 kbytes。

(C) 14112 bytes:錯誤

🔒

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

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

免費註冊

第 24 題2 分

A company’s database contains a table Sales with millions of rows, and the following SQL query is executed frequently:

SELECT ProductID, SUM(SalesAmount)
FROM Sales
WHERE Region = 'North'
GROUP BY ProductID;

Which of the following optimizations would most effectively improve the query performance?

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

這一題的完整詳解

核心觀念

本題考查資料庫索引(index)如何配合 SQL 查詢中的:

  1. WHERE 篩選條件
  2. GROUP BY 分組欄位
  3. 聚合函數 SUM

查詢為:

SELECT ProductID, SUM(SalesAmount)
FROM Sales
WHERE Region = 'North'
GROUP BY ProductID;

執行流程可概念化為:

  1. 從 Sales 中找出 Region = 'North' 的資料。
  2. 依 ProductID 分組。
  3. 對每組的 SalesAmount 計算總和。

因此,最有價值的索引應同時支援 WHERE Region = 'North' 與 GROUP BY ProductID。


解題方法

判斷索引設計時,先觀察查詢中各欄位的角色:

  • Region:用於篩選資料,屬於 WHERE 條件。
  • ProductID:用於分組,屬於 GROUP BY 欄位。
  • SalesAmount:只被 SUM 使用,並非篩選或分組依據。

建立複合索引:

CREATE INDEX idx_sales_region_product
ON Sales (Region, ProductID);

索引的前導欄位是 Region,資料庫可以先快速定位 Region = 'North' 的資料,再依索引中的 ProductID 順序進行分組,減少:

  • 必須掃描的資料筆數
  • 分組時額外排序或雜湊的成本
  • 對整張數百萬筆資料表進行完整掃描的機會

若原本需要掃描全部 NN 筆資料,查詢成本近似為 O(N)O(N)。使用適當索引後,先定位符合區域的 kk 筆資料,成本可近似為:

O(log⁡N+k)O(\log N + k)

其中 kk 是 Region = 'North' 的資料筆數。實際成本仍取決於資料分布、索引選擇性、資料庫最佳化器及是否需要回表讀取 SalesAmount。


選項分析

(A) Adding an index on SalesAmount

錯誤。

SalesAmount 只用於:

SUM(SalesAmount)

聚合函數通常必須讀取符合條件的多筆資料後計算總和,單獨在 SalesAmount 上建立索引,無法有效縮小 Region = 'North' 的搜尋範圍。

此外,若資料庫仍需依 Region 篩選,SalesAmount 索引並未直接支援最重要的篩選條件,因此效益有限。


(B) Creating a composite index on (Region, ProductID)

正確。

此索引同時對應查詢的兩個關鍵操作:

WHERE Region = 'North'
GROUP BY ProductID

索引先以 Region 排序,資料庫可快速找出 North 區域的資料;在相同 Region 值的範圍內,資料又依 ProductID 排列,有助於分組處理,降低額外排序成本。

🔒

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

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

免費註冊

第 25 題2 分

Take four Host IDs from the 192.168.10.0/24192.168.10.0/24 subnet for segmentation. How can seq1 and seq16 be best described?

SeqSubnet IDIP RangeBroadcast
1192.168.10.0/28192.168.10.0/28192.168.10.1192.168.10.1–192.168.10.15192.168.10.15192.168.10.16192.168.10.16
…………
16192.168.10.240/28192.168.10.240/28192.168.10.241192.168.10.241–192.168.10.255192.168.10.255192.168.10.255192.168.10.255

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

這一題的完整詳解

核心觀念

本題考查 IPv4 子網切割、Subnet ID、可用主機位址範圍與 Broadcast Address 的判定。

原始網段為:

192.168.10.0/24192.168.10.0/24

從主機位元中取出 4 個位元進行子網切割:

/24+4=/28/24+4=/28

因此:

  • 子網路遮罩為 255.255.255.240255.255.255.240
  • 每個子網共有 24=162^4=16 個位址
  • 每個子網可用主機位址數為 16−2=1416-2=14 個
  • 子網區塊大小為:
256−240=16256-240=16

所以各子網的 Subnet ID 依序以 16 為間隔:

0, 16, 32, …, 2400,\ 16,\ 32,\ \ldots,\ 240

解題方法

判斷每一個 /28 子網時,必須先找出:

  1. Subnet ID:該子網的第一個位址
  2. Broadcast Address:該子網的最後一個位址
  3. 可用 IP Range:Subnet ID 與 Broadcast Address 之間的位址

公式為:

可用主機範圍=Subnet ID+1∼Broadcast Address−1\text{可用主機範圍} = \text{Subnet ID}+1 \sim \text{Broadcast Address}-1

Seq 1

Seq 1 的 Subnet ID 為:

192.168.10.0/28192.168.10.0/28

區塊大小為 16,因此下一個子網從 192.168.10.16192.168.10.16 開始。故 Seq 1 的位址範圍為:

  • Subnet ID:192.168.10.0192.168.10.0
  • Broadcast:192.168.10.15192.168.10.15
  • 可用 IP:192.168.10.1192.168.10.1–192.168.10.14192.168.10.14

題目表格列為:

  • IP Range:192.168.10.1192.168.10.1–192.168.10.15192.168.10.15
  • Broadcast:192.168.10.16192.168.10.16

因此有兩項問題:

  • 192.168.10.15192.168.10.15 被錯列為可用主機位址,實際上它是 Broadcast Address。
  • 192.168.10.16192.168.10.16 是下一個子網的 Subnet ID,不是 Seq 1 的 Broadcast Address。

Seq 16

Seq 16 的 Subnet ID 為:

192.168.10.240/28192.168.10.240/28

其涵蓋位址為:

192.168.10.240∼192.168.10.255192.168.10.240 \sim 192.168.10.255

故:

  • Subnet ID:192.168.10.240192.168.10.240
  • Broadcast:192.168.10.255192.168.10.255
  • 可用 IP:192.168.10.241192.168.10.241–192.168.10.254192.168.10.254

題目表格列為:

  • IP Range:192.168.10.241192.168.10.241–192.168.10.255192.168.10.255
  • Broadcast:192.168.10.255192.168.10.255

Broadcast Address 列寫正確,但 IP Range 將 Broadcast Address 192.168.10.255192.168.10.255 誤列為可用主機位址。因此 Seq 16 有 IP range 的問題。

綜合判斷:

  • Seq 1:IP Range 錯誤,Broadcast Address 也錯誤
  • Seq 16:IP Range 錯誤,Broadcast Address 正確
  • Seq 1 與 Seq 16 都有 IP Range 問題

因此官方答案為 (D)。


選項分析

🔒

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

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

免費註冊

第 26 題2 分

What is the primary purpose of time slicing in a multitasking system?

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

這一題的完整詳解

核心觀念

Time slicing(時間切片)是多工作業系統將 CPU 時間分割成許多短時間單位,稱為 time quantum,輪流分配給多個可執行程序(process)或執行緒(thread)。

當某一程序使用 CPU 達到時間配額後,作業系統會暫停它,保存其執行狀態,再讓其他程序執行。如此可使多個程序在同一顆 CPU 上交替執行,形成「同時進行」的效果。

其主要目的,是讓 CPU 能持續服務多個工作,提高整體 CPU utilization(CPU 使用率),並改善多工系統的反應性與公平性。


解題方法

判斷本題可從「time slicing 的直接功能」切入:

  1. 將 CPU 執行時間切成多個時間片。
  2. 將時間片輪流分配給不同程序。
  3. 使等待中的程序有機會取得 CPU。
  4. 減少 CPU 閒置,提高整體 CPU utilization。

因此,最符合主要目的的是:

Increase CPU utilization\boxed{\text{Increase CPU utilization}}

所以官方答案 B 正確。

需注意,time slicing 也能提升系統互動性與程序間的公平性,但本題選項中最直接且最符合多工系統主要目的的是提高 CPU 使用率。


選項分析

(A) Reduce memory usage

錯誤。Time slicing 管理的是 CPU 使用時間,不是記憶體配置。它不會直接減少程序所需的記憶體,也不是記憶體管理、虛擬記憶體或分頁機制。


(B) Increase CPU utilization

正確。透過時間切片,CPU 可在多個程序之間快速切換。當某一程序因輸入輸出(I/O)或其他原因無法繼續執行時,CPU 可轉而執行其他程序,降低 CPU 閒置時間,因而提高整體 CPU utilization。


(C) Minimize CPU switching cost

🔒

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

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

免費註冊

第 27 題2 分

A deep learning-based image classification model performs extremely well on training data but performs poorly on unseen test images. Which of the following is the most effective approach to mitigate this issue?

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

這一題的完整詳解

核心觀念

本題考查深度學習中的「過度擬合」(overfitting)。

當模型在訓練資料上表現極佳,卻在未看過的測試資料上表現不佳,表示模型過度記憶訓練資料中的細節與雜訊,未能學到可泛化至新資料的規律。

可用下列現象判斷:

  • 訓練準確率高
  • 測試準確率低
  • 訓練誤差持續下降,但測試誤差偏高

改善過度擬合的方法包括:

  • Dropout
  • L1、L2 regularization
  • 增加訓練資料
  • 資料增強(data augmentation)
  • Early stopping
  • 適度降低模型複雜度

解題方法

題幹指出模型在 training data 表現非常好,但在 unseen test images 表現不佳,這正是過度擬合的典型特徵。

因此,應選擇能降低模型對特定訓練樣本依賴、提升泛化能力的正則化方法。

Dropout 在訓練過程中會以一定機率隨機關閉部分神經元,使模型不能過度依賴少數特定神經元或特定特徵。每次訓練所使用的網路結構略有不同,等同於訓練許多子模型,能降低模型過度擬合的程度。

因此最有效的選項是 (B)。

選項分析

(A) Increase the depth of the neural network to capture more complex patterns in training data

錯誤。

增加神經網路深度會提高模型容量,使模型能表示更複雜的函數。若目前已經發生過度擬合,進一步增加模型複雜度,會讓模型更容易記住訓練資料中的細節與雜訊,通常使泛化能力惡化。

此方法適合用於模型欠擬合,也就是訓練資料與測試資料的表現都不佳時,不適合直接處理本題的過度擬合。

(B) Use dropout regularization to randomly deactivate neurons during training

正確。

Dropout 會在訓練時以指定機率隨機停用部分神經元。例如,設定 dropout rate 為 0.50.5,代表每次更新參數時,約有一半神經元暫時不參與運算。

其作用包括:

  1. 降低神經元之間的過度依賴。
  2. 防止模型只記住少數特定特徵。
  3. 降低有效模型複雜度。
  4. 提升模型對未見資料的泛化能力。

在測試或正式預測時,通常會啟用全部神經元,並配合權重縮放,使輸出尺度與訓練階段一致。

🔒

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

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

免費註冊

第 28 題2 分

What are the CORRECT intermediate steps of the data set 25, 30, 20, 28 when it is being sorted with the Insertion Sort?

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

這一題的完整詳解

核心觀念

Insertion Sort(插入排序)將資料分成:

  • 左側:已排序區
  • 右側:尚未處理區

每一回合從未排序區取出一個元素,稱為 key,再由右向左與已排序區比較;較大的元素向右移動,最後將 key 插入正確位置。

本題資料為:

25, 30, 20, 2825,\ 30,\ 20,\ 28

要求由小到大排序。


解題方法與逐步追蹤

以標準 Insertion Sort 程式碼表示:

for i = 1 to n - 1:
 key = A[i]
 j = i - 1

 while j >= 0 and A[j] > key:
 A[j + 1] = A[j]
 j = j - 1

 A[j + 1] = key

初始陣列:

25, 30, 20, 2825,\ 30,\ 20,\ 28

第 1 回合:插入 30

已排序區為 [25][25],key = 30。

因為 25<3025 < 30,不需移動:

25, 30, 20, 2825,\ 30,\ 20,\ 28

第 2 回合:插入 20

已排序區為 [25,30][25,30],key = 20。

先比較 30>2030 > 20,將 3030 右移:

25, 30, 30, 2825,\ 30,\ 30,\ 28

再比較 25>2025 > 20,將 2525 右移:

25, 25, 30, 2825,\ 25,\ 30,\ 28

將 2020 插入最前面:

20, 25, 30, 2820,\ 25,\ 30,\ 28

第 3 回合:插入 28

已排序區為 [20,25,30][20,25,30],key = 28。

比較 30>2830 > 28,將 3030 右移:

20, 25, 30, 3020,\ 25,\ 30,\ 30

接著 25<2825 < 28,停止移動,將 2828 插入 2525 與 3030 之間:

20, 25, 28, 3020,\ 25,\ 28,\ 30

因此完整過程為:

25, 30, 20, 2825,\ 30,\ 20,\ 28

→20, 25, 30, 28\rightarrow 20,\ 25,\ 30,\ 28

→20, 25, 28, 30\rightarrow 20,\ 25,\ 28,\ 30


選項分析

(A)

25, 20, 30, 28→25, 20, 28, 30→20, 25, 28, 3025,\ 20,\ 30,\ 28 \rightarrow 25,\ 20,\ 28,\ 30 \rightarrow 20,\ 25,\ 28,\ 30

錯誤。

第一個中間狀態 25,20,30,2825,20,30,28 不是標準 Insertion Sort 的結果。第一回合處理 3030 時,因為 30>2530>25,陣列應維持:

25, 30, 20, 2825,\ 30,\ 20,\ 28

不會變成 25,20,30,2825,20,30,28。

(B)

🔒

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

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

免費註冊

第 29 題2 分

Public key cryptography is a method of secure communication that uses a pair of keys, a public key and a private key. This system ensures that only the intended recipient can read an encrypted message and that a signed message truly comes from the claimed sender. Which of the statements below regarding data encryption using public key algorithms is CORRECT?

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

這一題的完整詳解

核心觀念

Public key cryptography(公開金鑰密碼系統)使用一對具有數學關聯、但功能不同的金鑰:

  • Public key(公開金鑰):可以公開提供他人使用。
  • Private key(私密金鑰):只能由金鑰持有人保管。

在「保密傳輸」中,基本機轉為:

使用接收者的公開金鑰加密  ⟶  使用接收者的私密金鑰解密\text{使用接收者的公開金鑰加密} \;\longrightarrow\; \text{使用接收者的私密金鑰解密}

因此,只有持有接收者私密金鑰的人,才能還原加密內容。

須特別區分「加密」與「數位簽章」:

  • 資料加密:寄件者使用接收者的公開金鑰加密,接收者使用自己的私密金鑰解密。
  • 數位簽章:寄件者使用自己的私密金鑰簽署,接收者使用寄件者的公開金鑰驗證。

本題問的是「data encryption」,重點是確保只有指定接收者能讀取訊息,因此採用第一種機轉。

解題方法

判斷公開金鑰加密題時,先確認目標是「保密」還是「身分驗證」:

  1. 題目強調只有 intended recipient 能讀取,表示考查資料保密。
  2. 為了讓只有接收者能解密,寄件者必須使用接收者的公開金鑰加密。
  3. 接收者再使用與該公開金鑰配對的接收者私密金鑰解密。

流程如下:

Sender→Receiver’s public key 加密Ciphertext→Receiver’s private key 解密Plaintext\text{Sender} \xrightarrow{\text{Receiver's public key 加密}} \text{Ciphertext} \xrightarrow{\text{Receiver's private key 解密}} \text{Plaintext}

所以正確敘述是:

The sender encrypts with the public key and the receiver decrypts with the private key.

選項分析

(A) The sender encrypts with the public key and the receiver decrypts with the public key.

錯誤。

寄件者使用接收者的公開金鑰加密後,必須由配對的私密金鑰解密。公開金鑰本身是公開資訊,不能作為接收者專用的解密憑證,否則任何取得公開金鑰的人都可能解密訊息,無法達成保密目的。

(B) The sender encrypts with the private key and the receiver decrypts with the private key.

錯誤。

公開金鑰密碼系統中,資料保密的加密流程不是「私密金鑰加密、私密金鑰解密」。同一組公開金鑰與私密金鑰是配對使用,但加密端與解密端所使用的金鑰不同。

此外,寄件者的私密金鑰主要用於數位簽章;若使用寄件者私密金鑰處理訊息,接收者通常會使用寄件者公開金鑰驗證,而不是使用接收者私密金鑰解密。

🔒

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

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

免費註冊

第 30 題2 分

Cache memory consists of a small, fast memory that acts as a buffer for the DRAM. What is cache memory and how does it work?

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

這一題的完整詳解

核心觀念

本題考查記憶體階層(memory hierarchy)與快取記憶體(cache memory)的功能。

CPU 的運算速度通常遠高於 DRAM,因此 CPU 若每次都直接存取 DRAM,便會因等待記憶體回應而降低整體效能。Cache memory 是位於 CPU 與主記憶體 DRAM 之間的小容量、高速度記憶體,用來暫存 CPU 最近使用或經常使用的資料與指令。

其運作基礎是程式具有「區域性」(locality):

  • 時間區域性(temporal locality):最近使用過的資料,很可能很快再次使用。
  • 空間區域性(spatial locality):某個記憶體位置被使用後,鄰近位置也很可能被使用。

當 CPU 需要資料時,會先查詢 Cache:

  1. 若資料在 Cache 中,稱為 cache hit,CPU 可快速取得資料。
  2. 若資料不在 Cache 中,稱為 cache miss,系統必須從較慢的 DRAM 載入資料,並視情況將資料放入 Cache,供後續使用。

因此,Cache 的主要目標是降低平均記憶體存取時間:

平均存取時間≈Cache 存取時間+Miss Rate×Miss Penalty\text{平均存取時間} \approx \text{Cache 存取時間} + \text{Miss Rate}\times\text{Miss Penalty}

Cache 本身通常由 volatile memory 構成,斷電後資料會消失;它不是用來永久保存檔案的儲存設備。

解題方法

判斷本題可掌握三個關鍵:

  1. Cache 是高速記憶體。
  2. Cache 暫存常用或最近使用的資料與指令。
  3. Cache 的目的在減少存取速度較慢的記憶體,提升 CPU 效能。

符合這三項敘述的選項即為 A。

選項分析

(A) 正確

Cache memory is a type of volatile memory that stores frequently used data to reduce the need to access slower storage media.

Cache 屬於揮發性記憶體(volatile memory),通常以 SRAM 實作。它會保存 CPU 頻繁使用或最近使用的資料、指令副本,使 CPU 不必每次都存取速度較慢的 DRAM,因而提升執行效率。

此敘述符合 Cache 的核心功能,因此依官方答案選 A。

嚴格而言,題幹說明 Cache 是 DRAM 的 buffer,因此選項中的「slower storage media」用語較廣義;Cache 主要是減少存取較慢的主記憶體 DRAM,而非主要用來取代 SSD 或硬碟的永久儲存功能。

🔒

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

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

免費註冊

第 1 題10 分

Given the following program, what are the outputs after code execution?

#include <stdio.h>

int f(int a, int b) {
    while (b > 0) {
        printf("a = %d, b = %d\n", a, b);
        int temp = a % b;
        a = b;
        b = temp;
    }
    printf("Final a = %d, b = %d\n", a, b);
    return a;
}

int main() {
    f(120, 33);
    return 0;
}

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

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

這一題的完整詳解

核心觀念

本題考查:

  1. while 迴圈的執行條件與執行順序。
  2. C 語言整數除法的餘數運算子 %。
  3. 歐幾里得演算法(Euclidean Algorithm)求最大公因數。
  4. 函式中的區域變數更新,以及 printf 執行時機。

函式 f(a,b) 的核心運算為:

(a,b)←(b, a mod b)(a,b)\leftarrow (b,\ a\bmod b)

當 b=0b=0 時,迴圈停止,此時的 aa 即為原本兩數的最大公因數。


解題方法與逐步追蹤

程式進入:

f(120, 33);

每次迴圈先執行:

printf("a = %d, b = %d\n", a, b);

接著才計算餘數並更新變數。因此輸出的數值是「更新前」的 a 與 b。

第 1 次迴圈

目前:

a=120,b=33a=120,\quad b=33

先輸出:

a = 120, b = 33

計算:

120 mod 33=21120\bmod 33=21

更新:

a=33,b=21a=33,\quad b=21

第 2 次迴圈

目前:

a=33,b=21a=33,\quad b=21

輸出:

a = 33, b = 21

計算:

33 mod 21=1233\bmod 21=12

更新:

a=21,b=12a=21,\quad b=12

第 3 次迴圈

目前:

a=21,b=12a=21,\quad b=12

輸出:

a = 21, b = 12

計算:

21 mod 12=921\bmod 12=9

更新:

a=12,b=9a=12,\quad b=9

第 4 次迴圈

目前:

a=12,b=9a=12,\quad b=9

輸出:

a = 12, b = 9

計算:

12 mod 9=312\bmod 9=3

更新:

a=9,b=3a=9,\quad b=3

第 5 次迴圈

目前:

a=9,b=3a=9,\quad b=3

輸出:

a = 9, b = 3

計算:

9 mod 3=09\bmod 3=0

更新:

a=3,b=0a=3,\quad b=0

此時 b > 0 不成立,離開 while 迴圈。

最後執行:

printf("Final a = %d, b = %d\n", a, b);

輸出:

Final a = 3, b = 0
🔒

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

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

免費註冊

第 2 題10 分

What will be the output of the following code?

#include <stdio.h>

int x = 4;

void add(int x) {
    x = 5;
    for (; x > 0; x--) {
        printf("%d, ", x);
    }
}

int main() {
    printf("%d, ", x);
    add(x);
    printf("%d", x);
    return 0;
}

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

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

這一題的完整詳解

核心觀念

本題考查三個 C 語言觀念:

  1. 全域變數(global variable)
    int x = 4; 宣告在所有函式之外,因此 main 可直接使用,其初始值為 44。

  2. 區域變數遮蔽(variable shadowing)
    函式 add(int x) 的參數 x 會遮蔽外部的全域變數 x。在 add 函式內使用的 x,都是函式參數,而非全域變數。

  3. C 語言參數傳遞採傳值呼叫(pass by value)
    add(x); 將全域變數 x 的值 44 複製給 add 的參數。函式內修改參數,不會改變原本的全域變數。


解題方法與逐步追蹤

全域變數一開始為:

xglobal=4x_{\text{global}}=4

進入 main 後,第一行:

printf("%d, ", x);

此處使用全域變數,因此輸出:

4, 

接著執行:

add(x);

此時將全域變數的值 44 傳入 add,形成一個獨立的區域參數:

xlocal=4x_{\text{local}}=4

進入 add 後執行:

x = 5;

這只會將 add 內的區域參數改成 55,全域變數仍然是 44。

接著執行迴圈:

for (; x > 0; x--) {
 printf("%d, ", x);
}

逐次追蹤如下:

迴圈次數輸出前的區域 x輸出執行 x-- 後
155, 4
244, 3
333, 2
422, 1
511, 0

當區域 x 變成 00 時,條件 x > 0 不成立,迴圈結束。此時函式內的區域參數消失,但全域變數仍維持:

xglobal=4x_{\text{global}}=4
🔒

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

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

免費註冊

第 3 題10 分

In the field of Artificial Intelligence, “overfitting” is a common problem when using machine learning methods for model training. How can overfitting be resolved? (At least five solutions)

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

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

這一題的完整詳解

核心觀念

Overfitting(過度擬合)是指機器學習模型過度記憶訓練資料中的細節、雜訊或偶然關係,導致:

  • 訓練資料上的準確率很高、誤差很低。
  • 驗證資料或測試資料上的表現明顯變差。
  • 模型的泛化能力(generalization ability)不足。

其核心原因通常是模型複雜度相對於資料量過高,造成模型學到過多不具普遍性的特徵。從 bias-variance trade-off 來看,過度擬合通常與 variance 過高有關。


解題方法

題目問的是:「如何解決 overfitting?至少提出五種方法。」

判斷原則是:凡能降低模型複雜度、減少模型記憶雜訊、增加有效資料量,或透過驗證選出泛化能力較好的模型,均屬於合理方法。

常見有效方法如下。

  1. 增加訓練資料量

更多且具代表性的資料能使模型學到一般化規律,而不是記住少數樣本的特殊特徵。資料擴增(data augmentation)也可視為增加有效訓練資料的方式,例如影像旋轉、裁切、翻轉或加入適度雜訊。

  1. 降低模型複雜度

可減少神經網路層數、神經元數量、決策樹深度,或減少多項式模型的階數。模型參數較少時,較不容易記憶訓練資料中的雜訊。

  1. 使用正則化(regularization)

在損失函數中加入懲罰項,限制模型參數過大。例如:

L2 regularization:

J(θ)=L(θ)+λ∑iθi2J(\theta)=L(\theta)+\lambda\sum_i\theta_i^2

L1 regularization:

J(θ)=L(θ)+λ∑i∣θi∣J(\theta)=L(\theta)+\lambda\sum_i|\theta_i|

其中 λ\lambda 控制正則化強度。L1 正則化可促使部分參數變成零,具有特徵選擇效果;L2 正則化則傾向使參數變小且分布較平滑。

  1. 使用 dropout

在訓練神經網路時,隨機暫時關閉部分神經元,使模型不能過度依賴特定神經元或特定特徵,因而提升泛化能力。

  1. 使用 early stopping

持續觀察驗證集誤差。當訓練誤差繼續下降,但驗證誤差開始上升時,表示模型開始過度擬合,應停止訓練並保留驗證表現較好的模型。

  1. 使用交叉驗證(cross-validation)

將資料分成多組,輪流以不同組合作為訓練集與驗證集,以評估模型在不同資料切分下的表現,並協助選擇適當的模型複雜度與超參數。

  1. 進行特徵選擇或降維

移除無關、重複或雜訊特徵,降低輸入維度。常見方法包括 feature selection、PCA 等。特徵數量減少後,模型較不容易利用偶然關係進行擬合。

  1. 使用 ensemble methods
🔒

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

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

免費註冊

第 4 題10 分

Let f(x)=x2f(x)=x^2. Calculate x1x_1 to x5x_5 using the gradient descent algorithm with x0=10x_0=10 and learning rate =0.1=0.1.

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

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

這一題的完整詳解

核心觀念

本題考查梯度下降法(Gradient Descent)的一維參數更新。

給定:

f(x)=x2f(x)=x^2

其梯度即導數為:

f′(x)=2xf'(x)=2x

梯度下降的更新公式為:

xk+1=xk−ηf′(xk)x_{k+1}=x_k-\eta f'(x_k)

其中:

  • η=0.1\eta=0.1 為 learning rate
  • x0=10x_0=10 為初始值

解題方法與逐步追蹤

代入公式:

xk+1=xk−0.1(2xk)x_{k+1}=x_k-0.1(2x_k)

整理得:

xk+1=xk−0.2xk=0.8xkx_{k+1}=x_k-0.2x_k=0.8x_k

因此每次更新都將前一次的數值乘以 0.80.8。

逐步計算如下:

x1=0.8x0=0.8(10)=8x_1=0.8x_0=0.8(10)=8 x2=0.8x1=0.8(8)=6.4x_2=0.8x_1=0.8(8)=6.4 x3=0.8x2=0.8(6.4)=5.12x_3=0.8x_2=0.8(6.4)=5.12 x4=0.8x3=0.8(5.12)=4.096x_4=0.8x_3=0.8(5.12)=4.096 x5=0.8x4=0.8(4.096)=3.2768x_5=0.8x_4=0.8(4.096)=3.2768

所以:

(x1,x2,x3,x4,x5)=(8, 6.4, 5.12, 4.096, 3.2768)\boxed{(x_1,x_2,x_3,x_4,x_5) =(8,\ 6.4,\ 5.12,\ 4.096,\ 3.2768)}

選項分析

題目內容未附列各選項的文字,因此無法逐一引用選項內容對照。依官方公布答案,選項 E 所代表的數列為:

x1=8,x2=6.4,x3=5.12,x4=4.096,x5=3.2768x_1=8,\quad x_2=6.4,\quad x_3=5.12,\quad x_4=4.096,\quad x_5=3.2768

此數列符合梯度下降法的正確更新結果,因此 E 正確。

其餘選項錯誤的判斷依據如下:

🔒

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

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

免費註冊

其他考古題

114 年高雄醫學大學的其他科目

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

其他學校的《計算機概論與程式設計》