112 公務人員升官等薦任 電子工程 計算機概論 考古題詳解

112 年・公務人員升官等・薦任・電子工程
試題代碼 計算機概論

第 一 題20 分

給定一數列:21,7,56,81,73,99,11,3521, 7, 56, 81, 73, 99, 11, 35。

(一) 請使用「插入排序法(Insertion Sort Algorithm)」將這組數列由「小到大」排序,並且正確記錄每一次的排序結果。(10 分)

(二) 請使用「二元搜尋法(Binary Search Algorithm)」搜尋「81」,並且合理一致地使用 3 個變數「first」、「mid」和「last」來記錄每一次的搜尋直到結束,請詳細列出每一次搜尋「first」、「mid」和「last」的結果直到搜尋結束。(10 分)

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

這一題的完整詳解

核心觀念

**插入排序法(Insertion Sort)**將數列分成「已排序區」與「尚未排序區」,每次取尚未排序區的第一個數,插入已排序區的正確位置。此題由左至右處理,第一個數視為初始的已排序區。

**二元搜尋法(Binary Search)**適用於已排序數列。每次取搜尋範圍中間位置的值與目標比較,再依比較結果縮小至左半或右半範圍,直到找到目標。

本題以陣列位置 從 1 開始編號;二元搜尋每次令

mid=⌊first+last2⌋\text{mid}=\left\lfloor\frac{\text{first}+\text{last}}{2}\right\rfloor

其中 first、last 分別是目前搜尋範圍的首、末位置。

解題方法

(一)插入排序

原數列為 21,7,56,81,73,99,11,3521, 7, 56, 81, 73, 99, 11, 35。第一個數 2121 作為初始已排序區,依序將後續各數插入合適位置:

步驟插入的數排序結果
初始—21,7,56,81,73,99,11,3521, 7, 56, 81, 73, 99, 11, 35
1777,21,56,81,73,99,11,357, 21, 56, 81, 73, 99, 11, 35
256567,21,56,81,73,99,11,357, 21, 56, 81, 73, 99, 11, 35
381817,21,56,81,73,99,11,357, 21, 56, 81, 73, 99, 11, 35
473737,21,56,73,81,99,11,357, 21, 56, 73, 81, 99, 11, 35
599997,21,56,73,81,99,11,357, 21, 56, 73, 81, 99, 11, 35
611117,11,21,56,73,81,99,357, 11, 21, 56, 73, 81, 99, 35
735357,11,21,35,56,73,81,997, 11, 21, 35, 56, 73, 81, 99
🔒

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

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

免費註冊

第 二 題20 分

關於電腦(Computer)內部設計,請回答下列設計的問題:

(一) CPU 內部使用快取記憶體(Cache Memory)的目的。(10 分)

(二) 假設某部電腦(Computer)有 6464 GB(GigaBytes)記憶體,每一個字組(Word)是 44 位元組(Bytes),請計算出至少需要多少位元(Bit)才能定址記憶體中每一個字組(Word)。(10 分)

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

這一題的完整詳解

核心觀念

本題考查快取記憶體的用途,以及記憶體位址數量與位址位元數的換算。

快取記憶體(Cache)是容量較小、速度較快的記憶體,設在 CPU 與主記憶體之間,用來暫存 CPU 近期或常用的資料與指令。其設計利用程式執行時的時間區域性(近期使用過的資料較可能再次使用)與空間區域性(某位置附近的資料較可能很快被使用),以降低 CPU 存取主記憶體的平均時間。

記憶體位址所需位元數取決於要區分多少個可定址單位。若每個字組為一個定址單位,且共有 NN 個字組,則位址位元數 nn 須滿足 2n≥N2^n \geq N。

(一)CPU 使用快取記憶體的目的

CPU 的運算速度通常高於主記憶體的存取速度。若 CPU 每次需要資料都直接等待主記憶體,便會耗費較多時間。快取記憶體以較快的速度提供近期或常用的資料與指令,降低 CPU 等待主記憶體的時間,提升整體系統效能。

當 CPU 要讀取資料時,先查詢快取:

  • 快取命中(hit):所需資料已在快取中,可快速取得。
  • 快取未命中(miss):資料不在快取中,須向主記憶體取得,並通常將資料載入快取供後續使用。

因此,快取的目的不是增加主記憶體容量,而是縮短平均記憶體存取時間,減少 CPU 與主記憶體之間的速度落差。

(二)定址每一個字組所需位元數

🔒

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

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

免費註冊

第 三 題20 分

關於二元樹(Binary Tree)的觀念,請回答下列問題:

(一) 使用後序走訪(Postorder Traversal)的 5 節點(Node)的樹:「fcbdg」,請問此二元樹的根(Root)是哪一個節點(Node)?(5 分)

(二) 使用前序走訪(Preorder Traversal)的 7 節點(Node)的樹:「IBCDFMN」,請問此二元樹的根(Root)是哪一個節點(Node)?(5 分)

(三) 有一個二元樹(Binary Tree)有 10 個節點(Node),下列為此二元樹的中序走訪(Inorder Traversal)和前序走訪(Preorder Traversal):

中序走訪(Inorder Traversal):「abcedfjgih」

前序走訪(Preorder Traversal):「jcbadefigh」

請畫出此二元樹。(10 分)

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

這一題的完整詳解

核心觀念

二元樹的三種深度優先走訪順序為:

  • 前序走訪(Preorder):根、左子樹、右子樹。
  • 中序走訪(Inorder):左子樹、根、右子樹。
  • 後序走訪(Postorder):左子樹、右子樹、根。

因此,後序走訪序列的最後一個節點是根;前序走訪序列的第一個節點是根。若已知中序與前序序列,則可先由前序找根,再利用中序序列中根的位置,切分左右子樹並逐層重建。

解題方法

(一)由後序走訪找根

後序走訪的順序是「左、右、根」,所以序列最後一個節點為根。

fcbdg⇒根為 g\text{fcbdg} \quad\Rightarrow\quad \text{根為 } g

(二)由前序走訪找根

前序走訪的順序是「根、左、右」,所以序列第一個節點為根。

IBCDFMN⇒根為 I\text{IBCDFMN} \quad\Rightarrow\quad \text{根為 } I

(三)由中序與前序重建二元樹

中序序列為「abcedfjgih」,前序序列為「jcbadefigh」。

  1. 前序序列第一個節點是根,因此根為 jj。在中序序列中,以 jj 分開左右子樹:
  • 左子樹中序:abcedf
  • 右子樹中序:gih
🔒

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

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

免費註冊

第 四 題20 分

使用 TCP/IP 協定組(TCP/IP Protocol Suite)進行主機間通訊,請問下列工作分別為 TCP/IP 協定組中哪一層的任務:

(一) 決定路徑?(5 分)

(二) 連至傳輸媒介?(5 分)

(三) 提供終端使用者服務?(5 分)

(四) 產生使用者資料包?(5 分)

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

這一題的完整詳解

核心觀念

本題考查 TCP/IP 協定組各層的分工。常見的四層架構由下而上為:

TCP/IP 層主要任務
網路存取層(Network Access Layer,也稱鏈結層)連接傳輸媒介,處理同一網路上的資料傳送
網際網路層(Internet Layer)使用 IP 定址與路由,負責跨網路傳送
傳輸層(Transport Layer)提供端點間傳輸服務,例如 TCP、UDP
應用層(Application Layer)提供終端使用者及應用程式使用的網路服務

不同教材可能採五層模型,將網路存取層再分為資料鏈結層與實體層;本題所列工作依四層 TCP/IP 模型判斷即可。

解題方法

依題目中的關鍵動詞辨認各層職責:

  • 「決定路徑」涉及路由,屬網際網路層。
  • 「連至傳輸媒介」涉及網路介面與媒介存取,屬網路存取層。
  • 「提供終端使用者服務」屬應用層。
  • 「產生使用者資料包」指建立承載應用程式資料的傳輸層資料單位,屬傳輸層。

各小題解析

(一)決定路徑:網際網路層

🔒

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

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

免費註冊

第 五 題10 分

下列為以 C 語言撰寫的程式碼片段 (一) 和 (二),請分別回答 (一) 和 (二) 各總共要執行多少行敘述(statement),並說明其理由?(每小題 5 分,共 10 分)

(一)

B=5; while (B<8) { statement; B=B-2; }

(二)

for (int i=5; i<20; i++) { statement; i=i+1; }

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

這一題的完整詳解

核心觀念

本題考 C 語言的迴圈執行次數,尤其是:

  • while 會先檢查條件;條件成立才執行迴圈本體。
  • for 每一輪依序執行「條件檢查 → 迴圈本體 → 更新式」。若迴圈本體也修改控制變數,該修改會與更新式一併影響下一輪條件判斷。
  • 題目所問的「執行多少行敘述」,以下按每次實際執行的敘述計數;迴圈條件檢查本身不計入敘述行數。

解題方法

逐輪記錄控制變數的值,並計算迴圈本體中各敘述執行的次數。

(一) while 迴圈

B=5;
while (B<8) {
 statement;
 B=B-2;
}

B=5 先執行一次。接著逐輪追蹤:

輪次條件檢查時的 BB<8執行迴圈本體後的 B
第 1 輪5成立3
第 2 輪3成立1
第 3 輪1成立-1
第 4 輪-1成立-3

每輪結束後,B 都減少 2,仍小於 8,因此條件永遠成立,迴圈不會終止。statement; 與 B=B-2; 會持續執行,執行次數均為無限次;加上迴圈前的 B=5;,總執行敘述行數也是無限次。

(二) for 迴圈

for (int i=5; i<20; i++) {
 statement;
 i=i+1;
}
🔒

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

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

免費註冊

第 六 題10 分

請回答下列問題:

(一) 「甲先生」與「乙先生」互相傳送機密訊息,他們共享一個非常大的數值作為雙向的加密及解密金鑰,請問這是對稱式金鑰密碼或是非對稱式金鑰密碼?並請說明理由。(5 分)

(二) 在一密碼中,所有明文中的 A 在密文中都被改成 D,而且明文中的 D 在密文中都被改成 H,請問這是單字母或多字母的替代密碼?並請說明理由。(5 分)

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

這一題的完整詳解

核心觀念

本題考查兩組密碼學分類:

  • 對稱式金鑰密碼:加密與解密使用相同金鑰,或使用可由彼此直接推導的金鑰;傳訊雙方須事先安全共享金鑰。
  • 非對稱式金鑰密碼:每位使用者持有一組數學上相關的公鑰與私鑰,通常以其中一把加密、另一把解密。
  • 單字母替代密碼:每一個明文字母都固定替換成一個密文字母。
  • 多字母替代密碼:同一個明文字母會依位置或密鑰等條件,替換成不同密文字母。

解題方法

(一)判斷金鑰密碼類型

題目指出甲、乙「共享一個非常大的數值」,而且該數值作為雙向的加密及解密金鑰。判斷重點是加密與解密是否使用同一把共享金鑰,不是金鑰數值有多大。

因此,這是對稱式金鑰密碼:甲、乙使用共享的同一把金鑰進行加密與解密。非對稱式密碼則以公鑰、私鑰成對運作,不是雙方共享同一把雙向金鑰。

(二)判斷替代密碼類型

🔒

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

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

免費註冊

其他考古題