115 一般警察特考二等 刑事警察人員類別犯罪分析組 計算機概論(包括計算機結構、資料結構、程式設計) 考古題詳解

115 年・一般警察特考・二等・刑事警察人員類別犯罪分析組
試題代碼 計算機概論(包括計算機結構、資料結構、程式設計)

第 一 題20 分

物件導向程式設計中的封裝(encapsulation)為何意?試述之。

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

這一題的完整詳解

核心觀念

封裝(encapsulation)是物件導向程式設計的基本概念,指將資料(屬性)與操作資料的方法組合在同一個類別或物件中,並透過存取控制限制外部直接接觸物件內部狀態。外部程式通常透過物件提供的公開介面(如方法)使用功能,而不是任意修改內部資料。

解題方法

作答時掌握兩個重點:

  1. 結合資料與行為:類別將描述物件狀態的屬性,與讀取或改變狀態的方法放在一起。
  2. 控制存取與保護狀態:透過 private、public 等存取修飾詞,隱藏內部資料,並規定外部如何使用物件。
🔒

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

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

免費註冊

第 二 題20 分

電腦中的儲存系統有那些種類?試述之。

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

這一題的完整詳解

核心觀念

儲存系統是電腦用來保存資料與程式的各類裝置和技術。依照與處理器的距離、存取速度、容量、成本及是否能在斷電後保留資料,可整理成儲存階層:越靠近 CPU,速度越快、單位容量成本越高、容量通常越小;越靠近階層底部,速度越慢、容量越大、單位容量成本越低。

解題方法

本題為申論題,宜先說明儲存系統的分類原則,再依儲存階層由上而下列出種類,並交代各自的用途與特性。回答時也要區分揮發性記憶體與非揮發性儲存裝置。

各類儲存系統

  1. 暫存器(Register) 位於 CPU 內部,直接供處理器使用,用來暫存指令、位址或運算中的資料。存取速度最快、容量最小,成本最高;斷電後資料消失。

  2. 快取記憶體(Cache) 位於 CPU 與主記憶體之間,保存近期或常用的指令與資料,以縮短 CPU 等待主記憶體的時間。速度快於主記憶體,容量較小,通常採用 SRAM;屬揮發性記憶體。

  3. 主記憶體(Main Memory) CPU 執行程式時,主要存放目前使用中的指令與資料。以 RAM 為主,容量大於快取、速度較慢;一般 RAM 在斷電後資料會消失。ROM 則可保存韌體等內容,通常具有非揮發性。

🔒

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

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

免費註冊

第 三 題20 分

使用陣列(array)和單向鏈結串列(singly linked list)來儲存資料,各有什麼優缺點?試述之。

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

這一題的完整詳解

核心觀念

本題考查**陣列(array)與單向鏈結串列(singly linked list)**的儲存方式,以及兩者在記憶體配置、存取效率、插入與刪除操作上的差異。

陣列將元素存放在一段連續的記憶體位置,通常以索引存取;單向鏈結串列則由一個個節點組成,每個節點存放資料與指向下一個節點的指標,節點不必連續配置。

解題方法

比較時可依序看四個面向:存取方式、記憶體配置、插入與刪除、容量與額外空間。

比較面向陣列單向鏈結串列
記憶體配置元素通常連續存放,位置可依索引計算節點可分散存放,以指標連接
存取元素可直接依索引存取第 ii 個元素,時間為 O(1)O(1)須從表頭逐節點往後搜尋,存取第 ii 個元素需 O(n)O(n)
搜尋若未排序,通常需逐項搜尋,為 O(n)O(n);若依索引取值則為 O(1)O(1)通常須逐節點搜尋,為 O(n)O(n)
插入與刪除在中間插入或刪除,常須搬移後續元素,最壞為 O(n)O(n)已知欲操作節點的前一節點時,調整指標即可完成,為 O(1)O(1);但若須先搜尋位置,仍需 O(n)O(n)
容量調整固定大小陣列容量受建立時的配置限制;動態陣列擴充時可能須另配空間並複製元素可隨節點增減而彈性成長或縮小,受可用記憶體限制
額外空間不需為每個元素儲存連結指標每個節點須額外儲存下一個節點的指標
快取與實作連續配置通常有較佳的記憶體區域性,遍歷效率佳節點分散且須追蹤指標,遍歷時可能有較多記憶體存取;也須處理指標與節點配置

優缺點整理

陣列的優點

  1. 索引存取快速:能直接計算元素位置,適合頻繁依索引讀取或修改資料。
  2. 額外空間較少:不須在每個元素旁存放鏈結指標。
  3. 遍歷效率佳:元素連續存放,通常有較好的快取區域性。
  4. 結構簡單:操作與實作較直接。

陣列的缺點

🔒

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

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

免費註冊

第 四 題20 分

請說明何謂電腦作業系統中的死結(deadlock)?死結發生的必要條件有那些?

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

這一題的完整詳解

核心觀念

作業系統中的死結(deadlock),是指一組行程各自持有部分資源,同時等待其他行程所持有的資源,因而形成循環等待;在等待關係未被打破前,這些行程都無法繼續執行。

解題方法:判斷死結的四項必要條件

依 Coffman 條件,死結發生時必須同時具備下列四項條件:

  1. 互斥(Mutual Exclusion) 至少有一種資源不能由多個行程同時使用,必須由單一行程獨占。例如印表機在特定列印工作完成前,不能同時供另一行程使用。

  2. 持有並等待(Hold and Wait) 行程已持有至少一項資源,同時又等待取得其他資源。例如行程持有印表機,並等待磁碟機。

🔒

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

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

免費註冊

第 五 題20 分

下列 C 語言程式的執行結果為何?請詳細敘述執行過程。

#include <stdio.h>

void foo1(int* xp, int* yp){ int temp = *xp; *xp = *yp; *yp = temp; }

void foo2(int arr[], int size){ int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); }

void foo3(int arr[], int n){ int i, j, swapped; for (i = 0; i < n - 1; i++) { swapped = 0; for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { foo1(&arr[j], &arr[j + 1]); swapped = 1; } } if (swapped == 0) break; foo2(arr, n); } }

int main() { int arr[] = {47, 98, 27, 33, 7, 23, 5, 58}; int n = sizeof(arr) / sizeof(arr[0]); foo3(arr, n); return 0; }

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

這一題的完整詳解

核心觀念

本題考 C 語言的指標與陣列傳遞,以及 **Bubble Sort(氣泡排序法)**的執行過程。

  • foo3(arr, n) 中,陣列 arr 傳入函式後可視為指向首元素的指標,因此函式內修改 arr[j] 會直接改變 main 中的原陣列。
  • foo1(&arr[j], &arr[j + 1]) 傳入兩個元素的位址,透過指標交換兩個元素的值。
  • 內層迴圈逐一比較相鄰元素;若左邊較大就交換。每一趟結束時,尚未排序部分中最大的元素會移到末端。
  • 每趟開始時 swapped 設為 0;發生交換便設為 1。若整趟都沒有交換,代表陣列已排序,便提前結束。
  • foo2(arr, n) 在每一趟有發生交換後印出整個陣列;若沒有交換,程式會先 break,不會印出該趟結果。

解題方法

初始陣列為:

[47, 98, 27, 33, 7, 23, 5, 58][47,\ 98,\ 27,\ 33,\ 7,\ 23,\ 5,\ 58]

逐趟依序比較相鄰元素;遇到左值大於右值時立即交換。每趟結束後,若 swapped 為 1,就呼叫 foo2 印出目前陣列。

第 1 趟: 依序比較索引 00 至 66 的相鄰元素,較大的值逐步往右移,最後最大值 9898 移至末端。

  • 4747 與 9898:不交換
  • 9898 與 2727:交換,陣列變為 [47, 27, 98, 33, 7, 23, 5, 58]
  • 9898 與 3333:交換,變為 [47, 27, 33, 98, 7, 23, 5, 58]
  • 9898 與 77:交換,變為 [47, 27, 33, 7, 98, 23, 5, 58]
  • 9898 與 2323:交換,變為 [47, 27, 33, 7, 23, 98, 5, 58]
  • 9898 與 55:交換,變為 [47, 27, 33, 7, 23, 5, 98, 58]
  • 9898 與 5858:交換,變為 [47, 27, 33, 7, 23, 5, 58, 98]

本趟有交換,因此印出:

47 27 33 7 23 5 58 98

第 2 趟: 比較索引 00 至 55 的相鄰元素。5858 移至倒數第二個位置。

  • 4747 與 2727:交換,變為 [27, 47, 33, 7, 23, 5, 58, 98]
  • 4747 與 3333:交換,變為 [27, 33, 47, 7, 23, 5, 58, 98]
  • 4747 與 77:交換,變為 [27, 33, 7, 47, 23, 5, 58, 98]
  • 4747 與 2323:交換,變為 [27, 33, 7, 23, 47, 5, 58, 98]
  • 4747 與 55:交換,變為 [27, 33, 7, 23, 5, 47, 58, 98]
  • 4747 與 5858:不交換
🔒

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

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

免費註冊

其他考古題