115 身心障礙特考三等 電子工程 計算機概論 考古題詳解

115 年・身心障礙特考・三等・電子工程
試題代碼 計算機概論

第 一 題20 分

在大量資料處理的系統中,常需要選擇適當的資料結構以提高效能,請回答下列問題:

(一) 說明陣列(Array)、鏈結串列(Linked List)與雜湊表(Hash Table)的基本結構與存取特性。若系統需要大量查詢但插入頻率較低,應優先考慮哪一種結構?請說明理由。

(二) 若資料已事先排序好且儲存於陣列中,若使用二元搜尋法(Binary Search)搜尋資料,所需要的時間複雜度(Time Complexity)為何?需有推導過程。

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

這一題的完整詳解

核心觀念

本題考查三種常用資料結構的儲存方式、存取特性,以及二元搜尋法的時間複雜度分析。

  • 陣列(Array):元素連續儲存,可依索引直接定位,隨機存取時間為 O(1)O(1)。搜尋未排序陣列通常需逐一檢查,為 O(n)O(n);插入或刪除若須移動後續元素,最壞需 O(n)O(n)。
  • 鏈結串列(Linked List):節點透過指標連結,記憶體不必連續。已知節點位置時,插入或刪除可在 O(1)O(1) 完成;但按索引存取或搜尋須沿著節點逐一走訪,通常為 O(n)O(n)。
  • 雜湊表(Hash Table):以雜湊函數將鍵值映射至表格位置,平均查詢、插入與刪除時間為 O(1)O(1);若發生大量碰撞,最壞時間可退化為 O(n)O(n)。

解題方法

(一)依操作需求選擇資料結構

題目要求大量查詢、插入頻率較低,因此應優先考慮雜湊表。雜湊表平均查詢時間為 O(1)O(1),適合頻繁依鍵值查找資料;插入雖也有效率,但本題的選擇重點是查詢需求。

若查詢是依排序後的順序或範圍進行,且資料筆數固定,排序陣列搭配二元搜尋也是合適作法;但就一般鍵值查詢而言,雜湊表的平均查詢效率較高。

(二)二元搜尋的時間複雜度推導

設陣列含有 nn 筆已排序資料。二元搜尋每次比較中間元素,並將搜尋範圍縮小為原來的一半,因此最多比較次數 T(n)T(n) 滿足:

T(n)=T(n2)+1T(n)=T\left(\frac{n}{2}\right)+1

連續執行 kk 次後,剩餘搜尋範圍約為:

🔒

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

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

免費註冊

第 二 題20 分

資安攻擊事件日趨頻繁,請說明釣魚攻擊(Phishing Attack)與中間人攻擊(Man-in-the-Middle Attack)的運作方式,並比較兩者在攻擊目標與防禦方式上的差異。

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

這一題的完整詳解

核心觀念

本題考查兩種常見資安攻擊的運作方式、攻擊目標與防禦重點。釣魚攻擊主要利用社交工程誘騙使用者交出資料或執行有害操作;中間人攻擊則是在通訊雙方之間介入,竊聽或竄改傳輸內容。兩者都可能造成資料外洩,但攻擊切入點不同。

解題方法

依序說明每種攻擊的「攻擊者如何接近目標、如何取得成果」,再比較其主要防禦方式。釣魚攻擊著重辨識與防範欺騙訊息;中間人攻擊著重確保通訊端點身分可信、傳輸受到保護。

一、釣魚攻擊(Phishing Attack)的運作方式

釣魚攻擊是社交工程的一種。攻擊者偽裝成可信任的個人或機構,例如銀行、政府機關、學校或常用網路服務,透過電子郵件、簡訊、社群訊息或偽造網站,誘使受害者:

  • 點選連結並在仿冒頁面輸入帳號、密碼、信用卡資料或驗證碼。
  • 開啟惡意附件,讓裝置感染惡意程式。
  • 依照訊息指示匯款、提供個人資料或變更帳戶設定。

其關鍵在於利用人的信任、急迫感或疏忽取得資訊或促成操作;攻擊者不一定需要介入受害者與合法網站之間的網路連線。

二、中間人攻擊(Man-in-the-Middle Attack)的運作方式

中間人攻擊是攻擊者在通訊雙方之間取得或偽造一個介入位置,使雙方誤以為彼此直接通訊。攻擊者可能竊聽傳輸內容,也可能修改訊息後再轉送,造成資料外洩、交易內容遭竄改或登入資訊被截取。

常見情境包括:攻擊者在不安全的公共 Wi-Fi 上誘導使用者連線至惡意無線基地台;利用網域名稱解析或路由遭操控,把使用者導向攻擊者控制的端點;或冒充伺服器與用戶端建立連線。若通訊未妥善驗證對方身分或未加密,攻擊者更容易讀取或竄改資料。

攻擊目標與防禦方式比較

比較項目釣魚攻擊中間人攻擊
主要切入點使用者的信任與操作通訊連線或傳輸路徑
主要目標誘騙使用者交出憑證、個資、驗證碼,或執行指定操作竊聽、攔截或竄改通訊雙方傳送的資料
🔒

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

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

免費註冊

第 三 題20 分

請比較虛擬機(VM)與容器(Container)的差異,並分析其對系統效能與資安的影響。

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

這一題的完整詳解

核心觀念

本題考查虛擬化的兩種實作方式,以及它們在資源使用、效能與隔離安全上的取捨。

  • 虛擬機(Virtual Machine, VM):由 Hypervisor 將實體硬體資源分配給多部虛擬電腦。每部 VM 都有自己的客體作業系統(Guest OS)及核心。
  • 容器(Container):以作業系統層級虛擬化方式隔離應用程式。容器通常共用主機作業系統的核心,但各自有隔離的程序、檔案系統、網路及資源視圖。

解題方法

可從「虛擬化層級、作業系統核心、資源開銷、隔離方式」四個角度比較,再分別說明效能與資安影響。效能與安全並非只看 VM 或容器的名稱,仍受 Hypervisor、核心、設定及工作負載影響;作答時應呈現一般特性與其原因。

VM 與容器比較

比較面向虛擬機(VM)容器(Container)
虛擬化層級硬體層級,由 Hypervisor 管理虛擬硬體作業系統層級,由容器執行環境及核心機制隔離
作業系統每部 VM 通常執行完整的 Guest OS,包含自己的核心容器通常共用主機核心,不各自啟動完整核心
資源開銷Guest OS 需要額外的記憶體、儲存空間及 CPU 資源映像檔與執行環境通常較精簡,額外開銷較低
啟動速度需啟動 Guest OS,通常較慢建立隔離執行環境即可啟動,通常較快
作業系統相容性不同 VM 可執行不同作業系統或核心容器須使用相容的主機核心;例如 Linux 容器通常使用 Linux 核心
隔離方式由 Hypervisor 將各 VM 隔離,通常具有較強的邊界透過命名空間(namespaces)、控制群組(cgroups)等核心機制隔離程序及資源

對系統效能的影響

**VM:**由於每部 VM 都執行 Guest OS,會占用額外記憶體、儲存空間與處理器資源,啟動時間也較長。虛擬硬體存取及 Hypervisor 管理可能帶來額外成本。

🔒

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

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

免費註冊

第 四 題20 分

請說明遞迴(Recursion)與迭代(Iteration)兩種程式設計方法的概念與差異,並說明在實際系統開發中應如何選擇適當的設計方式。

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

這一題的完整詳解

核心觀念

本題考查程式流程的兩種控制方式,以及在空間使用、效能與程式可讀性上的取捨。

  • 遞迴(Recursion):函式在執行過程中直接或間接呼叫自身,將問題拆成較小的同類型子問題。正確的遞迴必須有終止條件,並確保每次呼叫都逐步接近該條件;否則會無限呼叫,造成堆疊溢位(stack overflow)。
  • 迭代(Iteration):利用迴圈(如 for、while)重複執行一段指令,直到條件成立或不成立而結束。

兩者都能重複處理工作,並可用來解決許多相同問題;差異在於控制流程及狀態保存方式。遞迴透過函式呼叫與呼叫堆疊保存每一層狀態,迭代則通常透過迴圈變數及明確的資料結構保存狀態。

解題方法

可依序說明兩者的定義、執行方式、優缺點,再以實務選擇原則收束。作答時須指出:兩者常可互相改寫,但適用情境不同,選擇應考量問題結構、資源限制、程式可讀性及執行需求。

以計算階乘為例,兩種方法都能得到 n!n!:

遞迴定義為:

n!={1,n≤1n×(n−1)!,n>1n! = \begin{cases} 1, & n \leq 1 \\ n \times (n-1)!, & n > 1 \end{cases}

迭代則從 11 開始,依序將 22 到 nn 乘入累積結果。兩者計算工作量皆為 O(n)O(n);但一般遞迴會保留 nn 層函式呼叫,額外堆疊空間為 O(n)O(n),迭代通常只需固定數量的變數,額外空間為 O(1)O(1)。

兩種方法的差異

比較面向遞迴迭代
控制方式函式反覆呼叫自身迴圈反覆執行指令
狀態保存由呼叫堆疊保存各層參數與區域狀態由迴圈變數或程式自行管理的資料結構保存
程式表達對樹狀、分治等問題,常較貼近問題定義對線性重複流程,通常直接明確
額外空間需支付函式呼叫及堆疊空間;深度過大有堆疊溢位風險通常不需逐次增加呼叫堆疊,空間較容易控制
🔒

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

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

免費註冊

第 五 題20 分

在程式設計中常使用分治法(Divide and Conquer)解決複雜問題,說明分治法的基本概念,並以排序演算法為例,說明其如何運用分治策略。

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

這一題的完整詳解

核心觀念

分治法(Divide and Conquer)是一種將大型問題拆成較小子問題的設計策略。典型流程包含三個階段:

  1. 分解(Divide):把原問題切分成規模較小、性質相同的子問題。
  2. 征服(Conquer):遞迴地解決各個子問題;子問題小到一定程度時,直接求解。
  3. 合併(Combine):將子問題的解整合,得到原問題的答案。

分治法適合能切分為多個較小子問題,且子問題的解可以有效合併的問題。排序中的**合併排序(Merge Sort)**是典型例子。

解題方法:以合併排序說明

假設要排序陣列 [8,3,5,1][8, 3, 5, 1]:

1. 分解

將陣列切成兩半,並繼續遞迴切分,直到每個子陣列只剩一個元素:

[8,3,5,1]→[8,3]  ∣  [5,1]→[8]  ∣  [3]  ∣  [5]  ∣  [1][8,3,5,1] \rightarrow [8,3]\;|\;[5,1] \rightarrow [8]\;|\;[3]\;|\;[5]\;|\;[1]

單一元素視為已排序。

2. 征服與合併

逐層合併已排序的子陣列。每次比較兩邊目前最小的元素,先取較小者,直到兩邊元素都放入合併結果:

[8]+[3]→[3,8][8]+[3]\rightarrow[3,8] [5]+[1]→[1,5][5]+[1]\rightarrow[1,5]

最後再合併兩個已排序的結果:

🔒

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

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

免費註冊

其他考古題