lawpalyer logo

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

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

0 題選擇題 + 22 題申論題

請解釋Java 語言中,類別與介面(interface)有那些不同,並請舉例加以說明。 (20 分)
請根據下列文法畫出輸入字串abbddeffccg 所有可能的文法樹(亦稱文法剖析樹、剖 析樹)。並請討論此文法的問題。(20 分) S → a X g X → b X X → b X c X → b X c c X → Y Y → d Y Y → d Y f Y → d Y f f Y → e
電腦程式語言中,有一種名為context free language,請問其性質為何?並舉例說明。 (15 分)
請就解譯方式(組譯、直譯、編譯)、程式結構(程序導向、物件導向)、標記文 字(是、否)等特性,分類說明程式語言C, CSS, C#, HTML, Java, PHP, Python, SQL 的特性。請繪製表格作答。(25 分)
網頁應用程式常見的安全漏洞有跨站請求偽造(cross-site request forgery),請說明 造成此安全漏洞的原因,以及如何避免此問題之措施。(20 分)
請用下例說明在Java 程式語言裡,dynamic dispatching 的意義與運作方式。並且說明 最後印出的報表為何?(20 分) import java.lang.*; class test24 { public static void main(String[] arg) { B b = new C(); R r = new S(); System.out.println("r.m(b) = " + r.m(b) ); } } class A { } class B extends A { } class C extends B { } class P { int m(B x) { return 1; } } class Q extends P { int m(A x) { return 2; } } class R extends Q { int m(C x) { return 3; } } class S extends R { int m(B x) { return 4; } int m(C x) { return 5; } } 104年公務人員特種考試警察人員、一般警察人員考試及104年 特種考試交通事業鐵路人員、退除役軍人轉任公務人員考試試題 代號:71060 全一張 (背面) 類 科 別: 資訊處理
執行以下Java 程式片段後,b1 和b2 的值各為何?(6 分) String st1 = new String("Good!"); String st2 = new String("Good!"); boolean b1 = (st1 == st2); boolean b2 = st1.equals(st2); 執行以下C 程式片段後,輸出結果為何?(6 分) int a = 88; int *b=&a; int *c; printf("%d %d\n", a, *b); *b=100; c=b; printf("%d %d", a, *c); 執行以下Java 程式片段,輸出結果為何?(6 分) int a = 10; int b = 20; System.out.println(a << 2); System.out.println(b >> 2); int c = a | b; System.out.println(c); 執行以下Java 程式片段,輸出結果為何?(6 分) int i = 10; int j = 10; int newNum1 = 10 * (++i); int newNum2 = 10 * j++; System.out.println(newNum1); System.out.println(newNum2); 根據以下C 程式片段,則compute(5, 100)其值為何?(6 分) int compute(int n1, int n2) { if (n2==0) return 1; if (n2% 2 ==0) { int ans = compute(n1, n2/2); return (ans * ans) % 100;} else { int ans = compute(n1, (n2-1)/2); return (n1 * ans * ans) % 100;} } 104年公務人員升官等考試、104年關務人員升官等考試 104年交通事業公路、港務人員升資考試試題 代號:26250 全一張 (背面) 等 級: 薦任 類科(別): 資訊處理 科 目: 程式語言
請使用如下的BNF 語法規則(S 為起始符號):(20 分) S → NP VP | VP NP → ADJ NP | N VP → ADV VP | V NP | V N → 考 | 校 | 評鑑 | 成績 V → 通過 | 獲得 | 成功 | 失敗 Adj → 高 | 普 | 特 | 好 | 壞 Adv → 一定 | 可能 繪製⑴特校可能通過評鑑 ⑵普考一定獲得好高成績 相關推導過程的Parse Tree。
為何尾遞迴(tail recursion)通常比一般性的遞迴執行上更有效率?請說明之。請以 熟悉的程式語言寫出一段使用尾遞迴技巧的程式碼例子。(20 分)
在C 程式語言裡,我們可以使用union type。請舉例說明何謂union type。在物件導向 程式語言裡,如Java,我們如何達成union type 相同的效果?請用你所提出的方法, 改寫你所提出的union type 的範例。(20 分)
下列第到第題,請根據下面的資料表,針對每一小題的查詢寫出對應的SQL 指 令。 寫出“列出全部的員工代碼”的SQL 指令。(5 分) 寫出“列出員工薪水大於15000 的員工代碼和員工薪水”的SQL 指令。(5 分) 寫出“列出最高之員工薪水”的SQL 指令。(5 分) 寫出“列出薪水最高的員工之員工代碼與該員工所屬部門代碼”的SQL 指令。 (5 分)
假設現有如下兩張資料表用來存放考生個人訊息及其成績,考生個人訊息,包括代 號(TesterID)、姓名(Name),成績(Grade)則有五種科目(1 中文、2 英文、 3 數學、4 自然、5 社會)及成績的等級有三種(ABC 三種)。請使用SQL 回應如 下的問題。(每小題5 分,共20 分) Tester Grade TesterID TesterID (FK) SubjectID Name GradeData Subject 請列出中文成績為A 所有考生的代號及姓名。 請列出各科不同成績等級的個數,個數使用別名numCount 來表示,如中文A5, 中文B2, …。 加入資料TesterID 6 名為Oscar Lin 的考生資料及其成績(中文A, 英文A, 數學 C, 自然B, 社會A)。 修改TesterID 5 考生的數學成績為A。 104年公務人員高等考試三級考試試題 全一張 (背面)
考慮下列文法,大寫字母代表非終結符(non-terminal ),其餘皆為終結符 (terminal),E 為開始變數。 E → E + T | E − T | T T → T * F | T / F | F F → ( E ) | identifier | number 使用最右推導(rightmost derivation),推導出1 *(2 + 3)一句。(6 分) 使用最左推導(leftmost derivation),推導出1 *(2 + 3)一句。(6 分) 繪製(2 + 3) * 4 一句的剖析樹(parse tree)。(8 分)
新的程式語言都會提供例外處理(exception handling)。請說明下列Java 程式做例外 處理的可能流程。並且請說明finally clause 的執行過程。(20 分) public void writelist() throws ArrayIndexOutOfBoundsException { PrintStream pStr = null; try { pStr = new PrintStream( new BufferedOutputStream( new FileOutputSteam("outfile"))); pStr.println("The 9th element is " + victor.elementAt(9)); } catch (IOException e) { System.err.println("i/o error"); } finally { if (pStr != null) pStr.close(); } }
(9)
許多物件導向程式語言都有所謂動態連結(dynamic binding)和多型(polymorphism) 的性質,請先解釋該性質是甚麼。再請利用下列Java 的例子說明動態連結(dynamic binding)和多型(polymorphism)的觀念,其中ShapeObject 為Circle 和Rectangle 的superclass。(20 分)
請使用物件導向程式語言(C#或Java),設計一具門禁功能的智慧卡管理資訊系統。 系統應依如下的class diagram 建立相關的類別資訊。(35 分) SmartCard -cardID: String -issueDate: String -issueOrg: Organization #getCardID(): String #getIssueDate(): String #getIssueOrg(): Organization #setCardID(String): void #setIssueDate(String): void #setIssueOrg(Organization): void +nowDateToString(): String +toString():String Security SMsecurity -date: String -securityList: List -enterExit: EnterExit +SMsecurity() +Security() +SMsecurity(String, Organization) +Security(EnterExit) +getDate(): String +addInfo(EnterExit): void +getEnterExit(): EnterExit +addInfo(String, EnterExit):void +setData(EnterExit): void +addInfo(Security):void +setData(String, EnterExit): void +toString(): String +toString(): String z 所有的類別變數皆為private,SMsecurity 類別繼承自抽象類別SmartCard z 發卡單位Organization、進出入狀況EnterExit,請分別使用enum 的格式來表示 z 記錄進出入狀況,日期資料若未提供,則填入目前系統的日期時間 z 一張智慧卡,會有多次的進出入記錄,資料值應存放於List 線性資料結構中 z 改寫系統的toString()方法後,執行如下的測試動作 SMsecurity sms = new SMsecurity("SM001", Organization.NewTaipeiMRT); sms.addInfo("2015/06/15 18:36:01", EnterExit.Enter); sms.addInfo("2015/06/15 20:16:01", EnterExit.Exit); sms.addInfo("2015/06/20 18:20:01", EnterExit.Enter); sms.addInfo(EnterExit.Exit); /* for Java */ System.out.println(sms.toString()); /* for C# */ Console.WriteLine(sms.ToString()); 應能產生類似如下的結果 *****Smart card SM001 (6/21/2015 10:38:38 PM, NewTaipeiMRT) -----Enter and Exit information: (2015/06/15 18:36:01, Enter) (2015/06/15 20:16:01, Exit) (2015/06/20 18:20:01, Enter) (6/21/2015 10:38:38 PM, Exit)
例外處理程序(exception handlers)處理的例外有那幾類?請分別舉例說明。Java 的例外處理程序如何處理例外?(20 分)
記憶體是程式內部結構的一部分,記憶體的管理嚴重影響程式執行之效率。當程式 執行時,記憶體大約可以分成三種區塊,請問此三種區塊為何?各自的用途為何? 各自如何產生?各自如何消失?其優缺點為何?(20 分)
何謂模組(module)化程式設計?請解釋好的模組化程式設計,應該要高聚合(high cohesion)、低耦合(low coupling)。(15 分) EMPLOYEE 主鍵:E_NUM E_NUM (員工代碼) DEPT_ID (所屬部門代碼) E_SALARY (員工薪水) public class ShapeStore { public static void main(String[] args) { showShape(new Circle()); showShape(new Rectangle()); } public static void showShape(ShapeObject shape) { System.out.println("The area is: "+shape.getArea()); } class ShapeObject { double getArea() {} } class Circle extends ShapeObject { double getArea() { return radius* radius * Math.PI;} } class Rectangle extends ShapeObject { double getArea() { return length * width; } }
給定下列的文法(Grammar): <assign>Æ<id> = <expr> <id>=A|B|C <expr>Æ<expr>+<id> | <expr>*<id> | (<expr>) | <id> 請畫出右列字串:A = ((A*B)+C*A),所對應right-most derivation sequence 與對應的 分析樹(parse tree)。(5 分)
請計算下列式子最後的y 值:(每小題3 分,共15 分) int x=3, y=2; y *= ++x + 3; int x=3, y=2; y /= x++; int x=10, y=1; y = x++ + --y; int x=10, y=1; y /= ++x + y--; int y=0; for(int k=0; k < 10; y+=k) { if(++k == 6) continue; k++;}
若採取二種不同參數傳遞的方法:pass by reference、pass by value result,執行下列 程式,則x 與y 的值各為多少?(8 分) int x=1, y=3; void fun(int a, int b); void main() { int x=2; fun(x, y); printf("x=%d, y=%d", x, y); } void fun(int a, int b) {a=b+x; b=a+y;} 九、如果有兩個整數x, y,請寫出相對應的副程式碼,使得這兩數可以做交換。(5 分) T c[10]; int m=3, n=2;(T 為某種type,可能為int、float、double 等),請寫出相對 應的副程式碼swap,當呼叫形式為swap(c, m, n),可讓c[m]跟c[n]的值做交換, 即使T 的型態不同,此程式一樣可以正確處理。(5 分) 十、利用template 的概念,寫出一個函數power(x, n)可以計算xn,不管x 為實數、整數或 自然數,但假設n 為整數。(10 分)