109 關務特考三等 電機工程 計算機概論 考古題詳解
第 一 題15 分
有關電腦系統的記憶體與資料存取:
(一)什麼是記憶體階層(memory hierarchy)?詳細說明其運作流程以及優點。(15 分)
(二)何謂存取的局部性(locality of reference)?(10 分)
登入後即可作答並保存紀錄。
核心觀念
記憶體階層(memory hierarchy)是依照存取速度、容量、每位元成本與揮發性等特性,將多種記憶體組成由快至慢、由小至大的層次結構。典型順序如下:
層級愈靠近處理器,存取速度愈快、容量通常愈小、每位元成本愈高;愈遠離處理器,速度愈慢、容量通常愈大、每位元成本愈低。暫存器、快取與主記憶體多屬揮發性記憶體;輔助儲存則可在斷電後保留資料。
運作流程
處理器要讀取資料或指令時,系統由最靠近處理器的層級開始查找:
- 先查暫存器或快取:若所需資料已在目前層級,稱為命中(hit),即可快速提供資料。
- 未命中則往下一層查找:例如快取未命中時,向主記憶體取得資料;主記憶體也沒有時,再由輔助儲存載入。
- 將資料帶回較高層級:取得資料後,通常會將該資料及相鄰資料或同一區塊一併載入較快的上層,以供近期可能發生的存取使用。
- 寫入時依政策更新:資料修改後,系統依寫入策略更新上層與下層。常見策略包括同步更新下層的 write-through,以及先更新上層、待適當時機再寫回下層的 write-back。
未命中需要到較慢層級取資料,故會增加存取時間。快取的命中率愈高,處理器平均等待時間通常愈低。常用的平均記憶體存取時間表示式為:
其中未命中率為 。
優點
第 二 題15 分
有關 TCP/IP 協定組:
(一)分別說明下列工作是屬於 TCP/IP 協定組哪一層的任務:
- 決定路徑(route determination)
- 連接到傳輸媒介(transmission media)
- 提供服務給終端使用者(end users)
(15 分)
(二)TCP 協定、IP 協定分別屬於 TCP/IP 協定組的哪一層?(10 分)
登入後即可作答並保存紀錄。
核心觀念
TCP/IP 協定組依功能可分為四層:
| 層級 | 主要任務 |
|---|---|
| 應用層 | 提供網路服務給終端使用者與應用程式 |
| 傳輸層 | 提供端點間的資料傳輸服務,例如 TCP、UDP |
| 網際網路層 | 負責邏輯位址與封包路由,例如 IP |
| 網路存取層(又稱網路介面層) | 負責連接傳輸媒介,以及在鏈路上傳送資料 |
本題要依各項工作的功能判斷其所屬層級。題目未涉及法條。
解題方法
判斷時可由「工作對象」切入:
- 涉及封包如何跨越不同網路、選擇傳送路徑,屬於網際網路層。
- 涉及實際連接電纜、無線媒介或區域網路鏈路,屬於網路存取層。
- 涉及讓使用者或應用程式使用網路服務,屬於應用層。
(一)各項工作所屬層級
- 決定路徑(route determination):網際網路層 網際網路層依目的 IP 位址進行封包轉送與路由選擇,使封包能經由適當路徑抵達目的網路。
第 三 題5 分
有關圖形(graph)與樹狀結構(tree structure):
(一)何謂最小成本展開樹(minimum-cost spanning tree,MCST)?(5 分)
(二)如下列 Figure-1,由 6 個頂點(node)與 9 個邊(edge)組成。頂點之間的數字代表相鄰兩點的距離(distance),例如 A 與 B 的距離為 2。計算出此圖形的 MCST 之總距離是多少?(10 分)
🖼️【此處有附圖,請對照原卷】
(三)將下列 Figure-2 的二元樹進行後序追蹤(post-order traversal),其輸出的順序為何?(10 分)
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
最小成本展開樹(minimum-cost spanning tree,MCST)是連通加權圖的一棵展開樹:它包含圖中所有頂點、沒有環路,且總邊權重最小。若圖有 個頂點,展開樹必須有 條邊。
後序追蹤(post-order traversal)的順序是:左子樹、右子樹、根節點。
(一)最小成本展開樹的定義
MCST 是連通加權圖中,涵蓋所有頂點且不形成環路的邊集合,其邊權重總和在所有展開樹中最小。對有 個頂點的圖,MCST 恰有 條邊。
(二)Figure-1 的 MCST 總距離
可用 Kruskal 演算法:依邊的距離由小到大選邊,若加入該邊會形成環路就略過,直到選滿 條邊。
圖中各邊依距離排序如下:
| 邊 | 距離 |
|---|---|
| 1 | |
| 2 | |
| 2 | |
| 3 | |
| 4 | |
| 4 | |
| 5 | |
| 7 | |
| 8 |
依序選取:
- 選 ,距離為 。
- 選 ,距離為 。
- 選 ,距離為 。
- 選 ,距離為 。
第 四 題15 分
請回答下列問題:
(一)如果執行下列 Figure-3 的 C 程式片段,以 表示,最後計算出 counter 的值是多少?(15 分)
Figure-3:
01 #include <iostream> 02 int main ( ) 03 { 04 int i, j, n, counter; 05 scanf ("%d",&n); 06 counter = 0; 07 for (i = 0; i < n; i++) 08 for (j = i; j < n; j++) 09 counter = counter + 1; 10 printf ("%d", counter); 11 }
(二)如果執行下列 Figure-4 的 C 程式片段,且輸入整數 35,則程式將會顯示什麼結果?(10 分)
Figure-4:
01 #include <iostream> 02 int main ( ) 03 { 04 int i,a,b[20]; 05 scanf ("%d",&a); 06 i=0; 07 while (a!=0) { 08 b[i]=a%2; 09 a=a/2; 10 i++; 11 } 12 13 while (i>0) { 14 printf ("%d",b[i-1]); 15 i--; 16 } 17 }
登入後即可作答並保存紀錄。
核心觀念
counter 每次執行內層迴圈的第 9 行就增加 。因此,最後的 counter 等於內層迴圈總共執行的次數。
外層變數 從 遞增至 。固定某個 時,內層變數 從 遞增至 ,共有 次。
解題方法
將每一輪外層迴圈的執行次數加總:
例如 時,內層執行 次; 時執行 次;最後 時執行 次。
解題技巧
固定外層迴圈的變數,數出內層迴圈從起始值到終止值的次數,再加總即可。注意 j < n 不包含 ,所以每輪次數是 ,不是 。
【答案】 最後 counter 的值為 。