108 年 國立成功大學交通管理研究所丙組《計算機概論》
第 一 題20 分
一、 名詞解釋 <20%>:
(A) 遞迴函數 (recursive procedure)
(B) 物聯網 (IOT, Internet of Thing)
(C) 馮紐曼瓶頸 (Von Neumann Bottleneck)
(D) CSMA/CD
登入後即可作答並保存紀錄。
本題考查計算機概論中的基本名詞解釋,需要對每個名詞的定義、作用以及相關概念進行闡述。
(A) 遞迴函數 (recursive procedure):
遞迴函數是指一個函數在定義中呼叫自身。這種函數通常用於解決可以分解為相似子問題的問題。遞迴的關鍵在於定義一個基本情況(base case),當滿足該情況時,函數停止呼叫自身,並返回一個確定的值;以及一個遞迴步驟(recursive step),將問題分解為一個或多個規模較小的相同問題,並呼叫自身來解決這些子問題。
(B) 物聯網 (IOT, Internet of Thing):
物聯網是指將日常物品(如家電、汽車、穿戴裝置等)連接到網際網路,使它們能夠收集、交換數據並被遠端控制。物聯網的目標是透過感測器、軟體和其他技術,讓物理世界中的物件能夠與數位世界互動,從而實現更智慧化的生活、工作和工業應用。
(C) 馮紐曼瓶頸 (Von Neumann Bottleneck):
馮紐曼瓶頸是電腦架構中的一個限制,指的是中央處理器 (CPU) 和記憶體 (Memory) 之間數據傳輸速度的限制。在傳統的馮紐曼架構中,CPU 和記憶體共用一個數據匯流排,這意味著 CPU 無法同時從記憶體讀取指令和讀取/寫入數據。因此,CPU 的處理速度會受到數據傳輸速度的限制,形成一個「瓶頸」。
第 二 題10 分
二、 試著寫出下列Java 程式的執行結果. <10%>
A. (5%)
public static void main(String[] args)
{
int i;
int total = 0;
for (i = 1; i <= 12; i++)
{
if ((i % 2) != 0 ) continue;
total += i;
}
System.out.println("總和: " + total);
}
B. (5%)
public static void main(String[] args)
{
int count = 0; //計算次數
float len = 150.0f;
do {
count++;
len / 2.0;
} while (len > 20.0 );
System.out.println("對摺次數: " + count);
System.out.println("最後長度: " + len);
}
登入後即可作答並保存紀錄。
核心觀念
本題考查 Java 中:
for迴圈與continue敘述%餘數運算子do...while迴圈的執行順序- 變數是否真的被重新賦值
- Java 編譯時的語法與型別檢查
A. for 迴圈與 continue
解題方法
程式如下:
int total = 0;
for (i = 1; i <= 12; i++)
{
if ((i % 2) != 0)
continue;
total += i;
}
條件 (i % 2) != 0 用來判斷 i 是否為奇數:
- 奇數除以 2 的餘數為 1,執行
continue continue會跳過本次迴圈剩餘敘述,直接進入下一次迴圈- 因此只有偶數會執行
total += i
納入總和的數值為:
計算得:
因此程式輸出:
總和: 42
解題技巧
看到「奇數跳過、偶數累加」時,可直接列出 到 的偶數:
也可使用等差級數公式驗算:
時間與空間複雜度
迴圈固定執行 12 次,因此:
- 時間複雜度:
- 空間複雜度:
B. do...while 與 Java 編譯錯誤
核心問題
程式中的關鍵敘述為:
len / 2.0;
這行只有除法運算,沒有將結果存回 len,而且在 Java 中,單獨的算術運算式不能直接作為合法敘述使用。
Java 可單獨使用的運算式敘述主要包括:
- 方法呼叫
- 物件建立
- 賦值
- 遞增或遞減
但 len / 2.0; 只是計算一個結果,沒有產生有效動作,因此會造成編譯錯誤。程式無法進入執行階段,也不會印出任何輸出。
第 三 題20 分
三、 連連看(OSI Model). Part I - Part II < 20%>
Part I
(A) TELNET,
(B) UDP,
(C) Mac Address,
(D) Router,
(E) three-way handshaking,
(F) Wireless AP, (G) RJ45 (H) SMTP, (I) Encryption/Decryption,
(J) Congestion Control.
Part II
(1) Physical Layer,
(2) Data Link Layer,
(3) Network Layer,
(4) Transport Layer,
(5) Session Layer, (6) Presentation Layer, (7) Application Layer
登入後即可作答並保存紀錄。
本題考查 OSI 模型七層架構的知識,要求將 Part I 中的名詞與 Part II 中的 OSI 層級進行配對。
OSI (Open Systems Interconnection) 模型是一個概念模型,將網路通訊劃分為七個抽象層。每一層都負責特定的功能,並為其上一層提供服務。
Part I 名詞解釋與對應 OSI 層級:
(A) TELNET: 一種應用層協定,用於遠端登入和終端機模擬。
- 對應層級:(7) Application Layer
(B) UDP (User Datagram Protocol): 一種無連接的傳輸層協定,提供簡單的數據報傳輸。
- 對應層級:(4) Transport Layer
(C) Mac Address (Media Access Control Address): 一種在資料鏈結層使用的硬體位址,用於在區域網路 (LAN) 中識別網路介面卡。
- 對應層級:(2) Data Link Layer
(D) Router: 一種網路設備,用於在不同網路之間轉送封包,工作在網路層。
- 對應層級:(3) Network Layer
(E) Three-way handshaking: TCP 協定用於建立連接的過程,工作在傳輸層。
- 對應層級:(4) Transport Layer
(F) Wireless AP (Wireless Access Point): 一種無線網路設備,用於連接無線設備到有線網路,主要工作在資料鏈結層(MAC 層),但也涉及物理層。
- 對應層級:(2) Data Link Layer (亦可認為與物理層緊密相關)
第 四 題10 分
四、 ACID:為資料庫中交易(Transaction)必需滿足的基本特性,請解釋何謂ACID原則. <10%>
登入後即可作答並保存紀錄。
本題考查資料庫系統中的 ACID 原則,這是確保交易 (Transaction) 資料一致性和可靠性的核心概念。
ACID 是四個英文字母的縮寫,分別代表資料庫交易的四個基本特性:
-
原子性 (Atomicity):
- 解釋: 交易被視為一個不可分割的單元。交易中的所有操作必須全部成功執行,或者全部失敗回滾。不存在部分成功的交易。
- 目的: 確保數據的完整性,避免出現數據不一致的狀態。例如,銀行轉帳,必須同時完成從 A 帳戶扣款和向 B 帳戶加款,不能只完成其中一項。
-
一致性 (Consistency):
- 解釋: 交易執行前後,資料庫的狀態必須保持有效。這意味著交易必須遵守資料庫定義的所有規則,包括約束(如主鍵、外鍵、唯一性約束)、觸發器和所有其他資料庫模式。
- 目的: 確保資料庫的數據始終處於一個合法的、有意義的狀態。例如,在一個檢查帳戶餘額的交易中,餘額不能變成負值(如果規則不允許)。
-
隔離性 (Isolation):
- 解釋: 同時執行的多個交易之間必須相互隔離,互不影響。一個交易的執行不應該被其他同時進行的交易所干擾。換句話說,一個交易的執行結果,應該與其他交易獨立,就像它是單獨執行一樣。
第 五 題10 分
五、 一個二元樹有八個節點,中序法(in-order)與後序法(post-order)拜訪順序分別如下,請把
此二元樹給畫出來.<10%>:
In-order: “FECABHDG"
Post-order: "FECHGDBA"
登入後即可作答並保存紀錄。
核心觀念
本題考查利用二元樹的「中序走訪」與「後序走訪」結果,唯一還原二元樹結構的方法。
二元樹走訪定義如下:
- 中序走訪(In-order):左子樹 → 根節點 → 右子樹
- 後序走訪(Post-order):左子樹 → 右子樹 → 根節點
其中,後序走訪的最後一個節點必定是整棵樹的根節點。
已知:
- 中序:
FECABHDG - 後序:
FECHGDBA
解題方法
第一步:找出整棵樹的根節點
後序走訪的最後一個字母為 A,因此:
將中序走訪 FECABHDG 以 A 分割:
所以:
- 左子樹的中序走訪:
FEC - 右子樹的中序走訪:
BHDG
後序走訪扣除根節點 A 後為 FECHGDB。左子樹共有 3 個節點,因此後序走訪可分為:
- 左子樹後序:
FEC - 右子樹後序:
HGDB
第二步:還原左子樹
左子樹的資料為:
- 中序:
FEC - 後序:
FEC
後序最後一個節點為 C,因此 C 是左子樹的根。
在中序 FEC 中,以 C 分割:
因此 C 沒有右子樹。
繼續處理 C 的左子樹:
- 中序:
FE - 後序:
FE
後序最後一個節點為 E,所以 E 是根,且中序中 E 左側只有 F:
因此左子樹結構為:
C
/
E
/
F
第三步:還原右子樹
右子樹的資料為:
- 中序:
BHDG - 後序:
HGDB
後序最後一個節點為 B,因此 B 是右子樹的根。
在中序 BHDG 中,以 B 分割:
第 六 題10 分
六、 請用 for (), while (), do while()三種語法之任一種語法寫出一個無窮迴圈.<10%>
登入後即可作答並保存紀錄。
本題考查程式語言中迴圈結構的應用,要求寫出一個無窮迴圈。無窮迴圈的關鍵在於迴圈條件永遠為真。
以下分別使用 for、while 和 do-while 語句來實現無窮迴圈。
1. 使用 for 迴圈:
for 迴圈的語法是 for (初始化; 條件; 更新) { 循環體 }。
若將條件部分省略,則預設為 true,從而構成無窮迴圈。
for (;;) {
// 循環體內的程式碼會不斷執行
System.out.println("This is an infinite loop (for)!");
}
或者,可以設置一個永遠不會滿足的條件,例如:
int x = 0;
for (x = 0; x >= 0; x++) { // x 永遠不會小於 0
System.out.println("This is an infinite loop (for)!");
}
2. 使用 while 迴圈:
while 迴圈的語法是 while (條件) { 循環體 }。
只要條件永遠為真,迴圈就會持續執行。
while (true) {
// 循環體內的程式碼會不斷執行
System.out.println("This is an infinite loop (while)!");
}
或者,可以設置一個永遠不會滿足的條件,例如:
第 七 題10 分
七、 給定數列23、12、58、85、72、98、13、37,請以「選擇排序法」將它由小排到大,記錄你
的過程.<10%>
登入後即可作答並保存紀錄。
本題考查「選擇排序法」(Selection Sort) 的執行過程,需要按照算法步驟,逐步記錄數列的變化。
選擇排序法的原理:
選擇排序法是一種簡單的排序算法。它的工作原理是:
- 在未排序的序列中找到最小(或最大)的元素。
- 將其與序列的起始位置(或第一個未排序的位置)交換。
- 重複上述步驟,直到整個序列排序完成。
給定數列: 23, 12, 58, 85, 72, 98, 13, 37
排序過程記錄:
第一輪 (找出最小元素並放到第一個位置):
- 原始數列:[23, 12, 58, 85, 72, 98, 13, 37]
- 尋找最小元素:最小的是 12,位於索引 1。
- 將最小元素 (12) 與第一個元素 (23) 交換。
- 數列變為:[12, 23, 58, 85, 72, 98, 13, 37]
- 已排序部分:[12]
第二輪 (找出未排序部分的最小元素並放到第二個位置):
- 考慮未排序部分:[23, 58, 85, 72, 98, 13, 37]
- 尋找最小元素:最小的是 13,位於索引 6 (原數列索引)。
- 將最小元素 (13) 與第二個元素 (23) 交換。
- 數列變為:[12, 13, 58, 85, 72, 98, 23, 37]
- 已排序部分:[12, 13]
第三輪 (找出未排序部分的最小元素並放到第三個位置):
- 考慮未排序部分:[58, 85, 72, 98, 23, 37]
- 尋找最小元素:最小的是 23,位於索引 6 (原數列索引)。
- 將最小元素 (23) 與第三個元素 (58) 交換。
- 數列變為:[12, 13, 23, 85, 72, 98, 58, 37]
- 已排序部分:[12, 13, 23]
第四輪 (找出未排序部分的最小元素並放到第四個位置):
- 考慮未排序部分:[85, 72, 98, 58, 37]
- 尋找最小元素:最小的是 37,位於索引 7 (原數列索引)。
- 將最小元素 (37) 與第四個元素 (85) 交換。
- 數列變為:[12, 13, 23, 37, 72, 98, 58, 85]
- 已排序部分:[12, 13, 23, 37]
第五輪 (找出未排序部分的最小元素並放到第五個位置):
- 考慮未排序部分:[72, 98, 58, 85]
- 尋找最小元素:最小的是 58,位於索引 6 (原數列索引)。
- 將最小元素 (58) 與第五個元素 (72) 交換。
- 數列變為:[12, 13, 23, 37, 58, 98, 72, 85]
- 已排序部分:[12, 13, 23, 37, 58]
第 八 題10 分
八、 請說明一個安全的電子商務環境應有哪些特性? <10%>
登入後即可作答並保存紀錄。
本題考查電子商務安全性的相關知識,需要列舉並說明構成一個安全電子商務環境的關鍵特性。
一個安全的電子商務環境需要具備多方面的特性,以保護參與者(買家、賣家、支付機構等)的權益和數據安全。以下是主要的特性:
-
機密性 (Confidentiality):
- 說明: 確保敏感信息(如個人資料、信用卡號、交易記錄)不會被未經授權的個人或系統獲取。
- 實現方式: 通常透過加密技術(如 SSL/TLS 協定)來保護數據在傳輸過程中的安全,以及在儲存時對數據進行加密。
-
完整性 (Integrity):
- 說明: 確保數據在傳輸或儲存過程中沒有被未經授權地修改、破壞或刪除。接收到的數據與發送時的數據是完全一致的。
- 實現方式: 使用雜湊函數 (Hash Function) 和數位簽章 (Digital Signature) 來驗證數據的來源和內容是否被篡改。
-
認證 (Authentication):
- 說明: 驗證使用者身份的真實性,確保與您互動的是您聲稱的對象,而不是冒充者。這包括驗證買家身份、賣家身份以及交易雙方身份。
- 實現方式: 使用密碼、數位憑證、雙因素認證 (Two-Factor Authentication, 2FA)、生物辨識等。
-
不可否認性 (Non-repudiation):
- 說明: 防止交易的一方或雙方事後否認其行為。例如,買家不能否認已下訂單,賣家不能否認已發貨。
- 實現方式: 透過數位簽章、交易記錄、憑證等來提供證據,證明某方確實進行了某項操作。