108 調查局特考三等 電子科學組 計算機概論 考古題詳解
第 一 題20 分
試回答下列有關資料結構(Data structure)的問題:
(一)在樹這種資料結構中,何謂分支度(Degree)?(3 分)
(二)何謂樹的高度(Height)?(3 分)
(三)試說明圖形結構(Graphs)的走訪(Visit)方法:廣度優先搜尋法(Breadth-first Search)。(7 分)
(四)在雜湊表的查找過程,影響查找效率的因素為何?(7 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查樹與圖形的基本定義,以及雜湊表(Hash table)的查找效率。樹的分支度與高度須先明確採用的計算方式;圖形的廣度優先搜尋重點在「先訪問距離起點較近的頂點」;雜湊查找效率則受雜湊函數、負載因子及碰撞處理等因素影響。
(一)樹的分支度(Degree)
定義:節點的分支度,是該節點所具有的子節點數;樹的分支度,則是樹中各節點分支度的最大值。
例如,若某節點有三個子節點,該節點的分支度為 3;若整棵樹中沒有節點的子節點數超過 3,則此樹的分支度為 3。葉節點沒有子節點,分支度為 0。
解題技巧:留意「節點的分支度」與「樹的分支度」不同:前者計算特定節點的子節點數;後者取全樹的最大值。
(二)樹的高度(Height)
定義:樹的高度是根節點到最深葉節點之間最長路徑的長度。若以路徑上的邊數計算,單一根節點的樹高度為 0;若以路徑上的節點數計算,則高度為 1。
作答時應說明採用的計數慣例。資料結構教材常以邊數定義高度,也有教材以層數或節點數表示;無論採用哪種方式,核心都是找出根到最深葉節點的最長路徑。
(三)廣度優先搜尋法(Breadth-first Search, BFS)
核心觀念:BFS 從指定起點開始,依照與起點的距離由近至遠逐層走訪圖形。它使用佇列(Queue)保存已發現但尚未走訪的頂點,遵循先進先出(FIFO)原則。
解題方法:
- 將起點標記為已拜訪,並放入佇列。
- 佇列不為空時,取出佇列前端的頂點並加以走訪。
- 依圖形的鄰接關係檢查該頂點的鄰點;將所有尚未拜訪的鄰點標記為已拜訪,並依序放入佇列。
- 重複上述步驟,直到佇列為空。
標記鄰點時就設為已拜訪,可避免同一頂點因不同路徑而重複入列。若圖形不連通,從單一起點執行 BFS 只會走訪該起點所在的連通部分;要走訪全圖,還須對其他尚未拜訪的頂點逐一啟動 BFS。
效率:使用鄰接串列時,時間複雜度為 ,其中 是頂點數、 是邊數;使用鄰接矩陣時,通常為 。
第 二 題15 分
試解釋並說明下列有關電腦安全的名詞:
(一)DoS attack(Denial of Service attack)。(5 分)
(二)Spoofing。(5 分)
(三)Botnets(or Zombie army)。(5 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查三種常見的網路安全威脅,重點在辨認攻擊者如何影響系統,以及攻擊目標是可用性、身分或來源的可信度,還是大量受控主機的協同攻擊。這是資訊安全概念題,不涉及計算或法條。
解題方法
逐一說明名詞時,可依「定義、運作方式、造成的影響」作答:
- 先說明攻擊的目的或特徵。
- 再交代攻擊者如何實施。
- 最後指出對系統或使用者造成的影響。
如此能清楚區分容易混淆的 DoS、Spoofing 與 Botnet。
(一)DoS attack(Denial of Service attack)
阻斷服務攻擊是攻擊者透過大量請求、惡意流量,或利用系統、網路服務的弱點,耗盡目標的頻寬、運算能力、記憶體或連線資源,使合法使用者無法正常使用服務。
例如,攻擊者持續向網站伺服器送出大量連線請求,導致伺服器忙於處理攻擊流量,無法回應一般使用者。DoS 的主要攻擊目標是資訊安全中的可用性。
若攻擊流量來自多台受控主機,並同時攻擊同一目標,則稱為分散式阻斷服務攻擊(DDoS)。DoS 著重於讓服務無法使用;攻擊是否由單一來源發動,並非定義上的必要條件。
(二)Spoofing
偽冒攻擊是攻擊者偽造或冒用網路通訊中的身分、來源或識別資訊,使接收端誤以為資料來自可信任的對象,或使網路系統依錯誤資訊進行判斷。
第 三 題16 分
試從各面向論述下列之網路技術:
(一)乙太網路(Ethernet)。(8 分)
(二)藍牙(Bluetooth)。(8 分)
登入後即可作答並保存紀錄。
核心觀念
本題是申論題,考查乙太網路與藍牙的基本原理、運作方式、標準規格、網路拓樸及應用情境。作答時應以「標準與用途、傳輸媒介與拓樸、存取或連線方式、速率與特性」分別整理,並比較兩者的適用範圍。
解題方法
採用分項論述:先說明技術定位與標準,再交代如何傳輸與連線,最後補充特色與典型應用。乙太網路著重區域網路的有線資料傳輸;藍牙則著重短距離、低功耗的無線個人區域網路。避免只列規格名稱,應說明其代表的功能。
(一)乙太網路(Ethernet)(8 分)
-
定義與標準 乙太網路是常見的區域網路(LAN)技術,標準由 IEEE 802.3 系列規範,涵蓋實體層與資料連結層的相關機制。乙太網路的網路介面通常使用 MAC 位址識別裝置。
-
傳輸媒介與拓樸 傳統乙太網路使用同軸電纜,後來普遍改用雙絞線及光纖。早期常採匯流排拓樸;現代有線乙太網路多以交換器連接各節點,形成星狀拓樸。交換器依據 MAC 位址轉送乙太網路訊框。
-
媒介存取方式 共用媒介的傳統乙太網路採用 CSMA/CD(載波感測多重存取/碰撞偵測):傳送前先感測媒介是否忙碌,傳送時偵測碰撞;若發生碰撞,停止傳送並經退避後重送。現今交換式、全雙工乙太網路通常不會發生碰撞,因此不使用 CSMA/CD。
-
資料單位與傳輸速率 乙太網路以訊框(frame)傳送資料,訊框包含目的與來源 MAC 位址、型態或長度欄位、資料及錯誤檢查碼等欄位。常見速率包括 10 Mbps、100 Mbps、1 Gbps、10 Gbps 及更高速率;實際速率取決於乙太網路規格與傳輸媒介。
-
特性與應用 乙太網路普及、可靠、易於擴充,常用於辦公室、校園及資料中心的有線區域網路。以交換器建立的網路可分隔各連線的碰撞範圍,並可透過 VLAN 等技術進行邏輯分段。
(二)藍牙(Bluetooth)(8 分)
第 四 題24 分
試說明下列各種程式語言的結構(例如資料、指令、流程控制等)、特色與應用:
(一)組合語言(Assembly language)。(8 分)
(二)第三代程式語言。(8 分)
(三)第四代程式語言(4GL)。(8 分)
登入後即可作答並保存紀錄。
核心觀念
本題比較三種不同抽象層次的程式語言,重點在說明其資料表示、指令或敘述方式、流程控制、與硬體的關係、優缺點及應用。
由低至高可整理為:
| 類型 | 抽象層次 | 程式設計者主要描述的內容 |
|---|---|---|
| 組合語言 | 低階 | 處理器指令與暫存器操作 |
| 第三代程式語言(3GL) | 高階、程序導向為主 | 如何依步驟完成運算 |
| 第四代程式語言(4GL) | 更高階、偏向問題領域 | 要取得或完成什麼結果 |
世代名稱主要反映語言的抽象程度與程式設計方式,不代表新一代語言在所有工作上都必然取代前一代。
解題方法
依題目提示,對每一類語言都從四個面向作答:
- 結構:資料如何表示,指令或敘述如何撰寫,如何控制流程。
- 特色:抽象程度、可讀性、可攜性、執行效率及與硬體的關係。
- 應用:適合解決哪些問題。
- 例子:列出典型語言或語言家族,協助區別類型。
(一)組合語言(Assembly language)(8 分)
結構
組合語言是以助記符表示機器指令的低階語言。典型指令可概括為:
標籤 操作碼 運算元 註解
例如:
LOOP: ADD R1, R2
CMP R1, R3
JNE LOOP
其中,LOOP 是標籤,ADD、CMP、JNE 是操作碼,R1、R2、R3 是運算元;實際語法依處理器架構而異。
- 資料:直接操作暫存器、記憶體位址或常數;資料型態與儲存方式通常須由程式設計者明確掌握。
- 指令:助記符與特定處理器的機器指令對應,例如資料搬移、算術、邏輯及比較指令。
- 流程控制:以條件跳躍、無條件跳躍及呼叫/返回等指令控制執行順序,迴圈與條件判斷通常須明確組合指令完成。
特色與應用
組合語言與處理器架構密切相關,能精細控制暫存器、記憶體及硬體操作,適合需要精確控制或重視執行效率的程式。但程式碼較難撰寫、閱讀與維護,且通常不易移植到不同指令集的處理器。
常見應用包括作業系統與裝置驅動程式的部分程式、嵌入式系統、微控制器程式、硬體控制,以及對效能或資源使用有嚴格要求的程式片段。組合語言須經組譯器(assembler)轉換為機器碼。
(二)第三代程式語言(3GL)(8 分)
結構
第三代程式語言屬於高階語言,通常以接近人類閱讀習慣的語法表達運算與程序。一般會包含:
- 資料宣告:定義變數、常數、資料型態、陣列或記錄等。
- 運算與指令:以敘述表達指定值、輸入輸出及算術或邏輯運算。
- 流程控制:以順序、選擇與重複等結構控制執行流程,例如
if、while、for。 - 程序組織:以函式、副程式、程序或模組分解工作;
第 五 題25 分
設有一個以 C 語言撰寫的程式,程式中的某個加減運算指令,最後會成為電腦硬體中的電路運作,以完成這個加減運算指令所要達成之功能,試詳細論述這個過程的所有軟硬體運作。(25 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查一個 C 語言加減運算指令,如何經由程式編譯、指令執行與數位電路運作,最後由硬體完成運算。作答時應由上而下說明整個轉換鏈:
處理器通常以二進位補數表示整數;減法可轉換成加法,因此加法器能支援加、減兩種運算。
解題方法:由軟體層逐步追到硬體層
以 c = a + b; 為例。編譯器會依照變數型別、目標處理器及最佳化設定,將 C 語句轉換成目標平台的組合語言指令,例如載入 a、b,執行整數加法,再將結果存入 c。實際指令與暫存器配置會因處理器架構及編譯結果而異。
1. 編譯與產生機器碼
編譯器先分析原始碼的語法與語意,再進行必要的型別檢查、最佳化及指令選擇。組譯器將組合語言轉成機器碼;連結器則整合程式所需的程式碼與函式庫,產生可執行檔。程式載入記憶體後,CPU 才能取出並執行其中的機器指令。
2. CPU 取指與解碼
CPU 的控制單元依照程式計數器(PC)指向的位置,從記憶體或指令快取取出下一條機器指令,將指令載入指令暫存器並解碼。解碼結果決定要執行的操作、來源運算元與目的位置,並據此發出控制訊號。
3. 取得運算元並執行指令
控制單元安排 CPU 從暫存器或記憶體取得 a、b 的值,並將它們送至 ALU 的輸入端。若運算元原先在記憶體,通常須先載入暫存器;編譯器也可能利用暫存器配置,減少記憶體存取。
對加法指令,ALU 選擇加法功能,送出控制訊號啟動加法器電路。運算結果寫回指定暫存器,之後再依指令將結果存回記憶體中的 c。CPU 同時更新程式計數器,繼續執行後續指令。