所屬科目:程式語言
1.請說明為何這樣的設計能讓該方法同時接收 Card 與 Cash 的物 件作為參數?(5 分)
2.此設計運用了物件導向程式設計的什麼特性?(5 分)
(二)假設在某類別的 main()方法中依序執行圖 1-2 之程式碼,請寫出其執行 結果。 (5 分)
(三)此系統欲擴充退款功能,但並非所有付款方式都支援退款,因此新定義了一個 Refundable 介面:
請在不更動既有類別架構的前提下,完成下列 tryRefund()方法,實 作邏輯如下。(10 分)
● 若傳入的 method 物件,其執行時期的類別亦實作 Refundable 介面,則呼叫其 refund(amount)方法。
● 若傳入的 method 物件未實作 Refundable 介面(即不支援退 款) ,則回傳 false。
(一)請說明 Java 語言中 checked exception 與 unchecked exception 的差異, 並各舉一個 Java 內建的例外類別作為範例。 (10 分)
(二)根據圖 2-1 所示的 Java 程式碼,寫出執行 main()方法後的完整輸出結果。(5 分)
(三)假設有一個類別 Calculator 包含圖 2-2 所示的靜態方法,請撰寫一 個 JUnit 5 測試類別,驗證下列三項行為。(10 分)
● divide(10, 2)應得到 5。
● divide(10, 0)應拋出 IllegalArgumentException。
● 例外訊息應為"division by zero"。
三、已知二元搜尋樹的節點定義如圖 3-1,請根據圖 3-2 的二元搜尋樹回答問題。
(一)請分別說明二元樹的遞迴走訪函式中,下列兩種情況的目的與執行 行為。(5 分)
● 基底情況(Base case)。
● 遞迴情況(Recursive case)。
1.其最終回傳值為何?(5 分)
2.請依此函式實際遞迴走訪的先後順序,列出 current = 1 節點 key 值。 (5 分)
1.請將圖 3-5 的三行指令分別填入圖 3-4 函式 (A)(B)C 的空格中 (每個選項限填一次且不可重複填用) 。(5 分)
2.根據圖 3-2 的二元搜尋樹,若執行 search(root, 7),請問此函式最 後回傳的指標所指向的節點,其 key 值為何?(5 分)
(一)請說明 HTTP 的無狀態性(Stateless)是什麼意思。 (5 分)
(二)若此網路書店需要辨識已登入的使用者,伺服器端可以採用那一種 機制來保存或傳遞登入狀態?請舉出一種說明即可。 (5 分)
(三)假設伺服器收到下列請求:
GET/api/books?discount=20
伺服器執行圖 4 之 Python 程式碼,且所有數值(包含計算後的結 果)在轉為 JSON 輸出時,皆會強制保留一位小數(浮點數格式) 。 請寫出最後一行指令在標準 JSON 格式下,所輸出的單行完整 JSON 字串結果。 (5 分)
1.請說明此程式碼在網頁安全上,可能遭受的惡意攻擊類型與原因。 (5 分)
2.請使用參數化查詢(Parameterized Query)修正上述程式碼,寫出修正後的完整程式片段,以有效防範該攻擊。(5 分)