
113年公務人員特種考試司法人員、法務部調查局
調查人員及海岸巡防人員考試試題
考 試 別:司法人員
等 別:三等考試
類 科 組:檢察事務官電子資訊組
科 目:程式語言
考試時間:
小時
※注意:禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目得以本國文字或英文作答。
代號:
頁次:
-
一、請回答下列問題:(每小題 10 分,共 30 分)
請簡要說明何謂「SQL 資料隱碼攻擊(SQL injection)」。
系統使用下列 SQL 陳述(SQLstatement)查詢資料庫以判斷是否為合
法使用者。當該SQL 陳述被執行時會檢查輸入的username 與password
是否存在於資料庫中,如果執行該 SQL 陳述有回傳任何結果,則表示
認證成功,反之認證失敗。
SELECT * FROM db_user WHERE username='<USERNAME>' AND
password='<PASSWORD>'
假設惡意攻擊者可以輸入任意<USERNAME>或是<PASSWORD>的
資料,請以一個例子說明該 SQL 陳述會產生 SQL injection 的問題。
請舉出至少兩種常見預防「SQL injection 攻擊」的方法並簡要說明。
二、遞迴函式(Recursion)是程式語言常用的解題技巧之一,請回答下列問
題:
請說明何謂程式語言的遞迴函式,撰寫遞迴函式需要那些條件?(10 分)
請用迴圈(Iteration)以及遞迴分別撰寫計算第 n個費式數列的值。費
氏數列由 0和1開始,之後費氏數列的值就是由之前的兩數相加而得
出。程式語言可使用 C/C++、Python 或是 Java 撰寫。(10 分)
請說明為何用遞迴函式撰寫第 n個費式數列的值,其執行的時間會比
用迴圈來得多。(15 分)
請修改上述的費式數列遞迴函式版本,使其可以加快執行的時間(接
近迴圈的版本)。(15 分)

代號:
頁次:
-
三、圖 1是一個 Java 程式碼,其功能是計算標準輸入 N個整數的平均值,
輸出結果為小數點四捨五入到整數,其中 N是一個命令列參數。其預期
執行的結果如圖 2所示。
圖1:Java程式碼 圖2:預期執行方式與結果
這個程式依據題目說明以及預期呈現結果,會有三種錯誤,分別是語
法錯誤(Syntax error)、執行錯誤(Run-time error)以及語意錯誤
(Semantic error)。請分別指出是那些行數指令造成上述三種錯誤、錯
誤的原因以及修正之方法。(15 分)
請說明這個程式功能是否可以改為不使用陣列而節省記憶體空間的
方法。若是,請說明如何修改程式;若否,請說明原因。(5分)