lawpalyer logo

資訊處理 103 年程式語言考古題

民國 103 年(2014)資訊處理「程式語言」考試題目,共 17 題 | 資料來源:考選部

0 題選擇題 + 17 題申論題

定義下述文法(grammar): expression → expression + expression | expression - expression | type type → int | double  根據上面之文法,請畫出int + int + int 兩個不同的剖析樹(parsing tree)。(10 分)  根據上面之文法,請導出所有只包含2 個type 之expression 的結果。該 expression 一個type 為int,另一type 為double。(10 分)  請說明何謂模稜兩可的文法(ambiguous grammar)。(5 分)
請比較類別(class)的使用者觀點(user view)及開發者觀點(developer view) 的差異。(10 分)
請說明early binding(如C 語言)及late binding(如Perl 語言)之間最大的差異, 並列出兩者主要的優點。(10 分)
網際網路程式與應用的發展,結合了許多技術與分析方法,請用數行文字,說明下 列幾個網際網路應用技術的專有名詞:  說明HDFS 英文全名,其架構元素與基本運作特性。(8 分)  說明MapReduce 的特性及Map 和Reduce 的運作方式。(8 分)  說明NO SQL 的英文全名及其特性。(9 分)
請寫出下列敘述的正規表達式(regular expression): “Each word must start with two digits, followed by a upper case letter, and then followed by at least one letter either upper case or lower case.” (10 分)
參考下述BNF grammar S  S + S | S - S | S * S | S / S | ( S ) | a 請回答總共有幾個不同的剖析樹(parse tree)可得到下列結果。本題不需畫出剖析 樹,但請說明。(每小題5 分,共20 分)  a + a * a  a + a * a / a  a + a + a + a  (a + (a + a)) + a
請以物件導向,多型(polymorphism)的技術,改寫下列計算薪水的程式,其中經 理(manager)薪水是40000,工程師(engineer)薪水是35000。 int getPay(String employeeType) { if (employeeType ==“manager”) { return 40000; else if (employeeType == “engineer”) return 35000; }  設計Employee, Manager, Engineer 等三個類別及其屬性(attribute)與方法(method), 方法包括建構子(constructor)。其中 Employee 是抽象類別,有一個保護 (protected)屬性薪水(salary);Manager 和 Engineer 是Employee 的子類別。 (18 分)  畫出UML 類別圖。(7 分) 103年特種考試地方政府公務人員考試試題 全一張 (背面)
請問下列Java 程式執行結果為何?(10 分) import java.io.IOException; public class throwException { public static void main(String[] args) throws E { try {E e1 = new E(“here comes e1”); throw e1; System.out.println(“gets here”); } catch(E e1) { System.out.println(“catches e1”);} }//main }//throwException class E extends IOException { E(String message) { super(message); } }// class E
參考右圖類C 語言的程式,請依下列小題所述參數傳遞方式,寫出執行程式B 後之 輸出結果。(每小題10 分,共20 分)  Y is passed by value.  Y is passed by reference.
例外(exception)處理的應用:  試說明Java 對於例外處理的抓取或宣告規則(catch or declare rule)。(7 分)  填寫下列空格,完成以下inputScore 方法。該程式要求使用者輸入成績,若輸入為 非數字,則拋出例外(exception)警示,迴圈繼續,直到使用者輸入合理的數字成 績。若輸入的成績沒有介於0-100 間,則把例外向上拋給呼叫的方法。(18 分) public static void inputScore () (1) { String str; boolean valid; double score = 0; Scanner sc = new Scanner(System.in); do { valid = true; System.out.println("Input the score"); str = sc.next(); try { score = Double.parseDouble(str); } catch ( (2) ) { System.out.println(e); valid = false; } } while ( (3) ); if (score >100 || score <0) throw (4) ("分數未介於0-100 間"); System.out.println(score); }
(1)
(2)
(3)
(4)
請問下列Java 程式輸出為何?(10 分) public class C6 { public static void main(String[] args) { int [] a = new int[2]; int [] b = new int[2]; a[0] = 6;b[0] = 6;a[1] = 7;b[1] = 7; System.out.println(a.equals(b)); }} 1 0 3 年公務人員特種考試警察人員考試 103年公務人員特種考試一般警察人員考試 103年特種考試交通事業鐵路人員考試試題 全一張 (背面)
請用Scheme 或Lisp 等Functional Programming Language 寫一個符合下述規範的遞 迴函數calculate。所寫的遞迴函數應該越簡潔越好。(20 分) (calculate A B C):A 是某函數(function),B 是一整數(integer),C 是任 一數值(value),回傳滿足N >= B 且(A N)= C 的最小整數N。例如 (calculate list 0 ‘(3))應回傳 3. (calculate (lambda (X) (> X 10)) 0 T) 應回傳 11. (calculate (lambda (X) (* X X)) 0 100) 應回傳 10. 103年公務人員高等考試三級考試試題 全一張 (背面)
(3)
請問下列Java 程式輸出為何?(20 分) import java.text.DecimalFormat; public class C3 { public static void main(String[] args) { DecimalFormat d = new DecimalFormat("0.00"); double grosspay = 800.416; System.out.println(d.format(grosspay)); grosspay = 1234.567; System.out.printf("%1.2f", grosspay); } }
請參考以下的Java classes,解釋下列各小題的語法是否正確,如不正確請說明原因。 (每小題5 分,共15 分) class X { public void x( ) { … } } class Y extends X { public void y( ) { … } } class Z extends Y { public void z( ) { … } }  int count(Set<Y> s) { … } … count(new TreeSet<Z>( ));  int count(Set<? extends Y> s) { … } … count(new TreeSet<Z>());  int count(Set<? super Z> s) { for (X a : s) a.x( ); … };
下列為一物件導向程式: class A { private int a1; public void m1( ); { a1 = 1;} public void m2( ); { a1 = 3;} } class B extends A { private int b1; private int b2; public void m2( ); { b1 = 1; b2 = 2;} public void m3( ); { a1 = 2; } } 請說明其中的繼承(inheritance)及覆寫(overriding); 並請說明class B 的物件內含那些資料欄位(data fields)?(20 分)
下述Prolog 程式可推論圖形中A 點到B 點的可行性,但是無法知道路徑。請改寫 該程式使其可以用Prolog list 來記錄A 點到B 點的路徑。若A 點到不了B 點,則 回應fail(false)即可。(15 分) get_to (A, B) :- path (A, B). get_to (A, B) :- path (A, C), get_to (C, B).
請說明下列main 程式執行情形。(10 分) 請以此程式解釋動態繫結(dynamic binding)。(10 分) public class X {public String whatIAm() {return “I’m an X.”;}} public class Y extends X {public String whatIAm() {return “I’m a Y.”;}} public static void main(String[] args) throws IOException { X x; BufferedReader reader = new BufferedReader (new InputStreamReader(System.in)); if (reader.readLine().equals(“Go with X”)) x = new X(); else x = new Y(); System.out.println(x.whatIAm()); } // main