l
顯示具有 視力測驗 標籤的文章。 顯示所有文章
顯示具有 視力測驗 標籤的文章。 顯示所有文章

2014年2月7日 星期五

視力測驗:例外處理篇(3)

Feb. 04 10:20~10:56

image

 

要考就考個過癮,今天加碼六題。比起之前的12題,今天的題目比較難一點,作答時間10分鐘,準備好就開始。

***

13. Java語言的非同步例外(asynchronous exception)由誰產生?

A. 多執行緒(Thread)。

B. 多行程(Process)。

C. 非同步呼叫。

D. Java虛擬機器(JVM)。

E. 以上皆是。

14. 以下節錄自JFreeChart的程式碼,不存在哪一個例外處理壞味道?

螢幕快照 2014-02-04 上午10.24.58

A. 巢狀Try敘述(Nested Try Statement)。

B. 忽略受檢例外(Ignored Checked Exception)。

C. 虛設的例外處理程序(Dummy Handler)。

D. 當成備胎的例外處理程序(Spare Handler)。

E. 以上皆非。

15. 以下何種設計技巧可以達到強健度等級三:行為回復(例外發生之後函數還是可以提供正確的服務)?

A. 設計多樣性(design diversity)。

B. 功能多樣性(functional diversity)。

C. 資料多樣性(data diversity)。

D. 時序多樣性(temporal diversity)。

E. 以上皆是。

16. Forward recovery(向前回復)可以達到哪一個強健度等級?

A. 強健度等級0 :未定義。

B. 強健度等級1 :錯誤回報。

C. 強健度等級2 :狀態回復。

D. 強健度等級3 :行為回復。

E. 以上皆非。

17. Backward recovery(向後回復)可以達到哪一個強健度等級?

A. 強健度等級0 :未定義。

B. 強健度等級1 :錯誤回報。

C. 強健度等級2 :狀態回復。

D. 強健度等級3 :行為回復。

E. 以上皆非。

18. 以下哪一個Java例外類別套用了「聰明例外」(Smart Exception)設計模式?

A. IOException。

B. SQLException。

C. NullPointerException。

D. OutOfMemoryException。

E. IndexOutOfBoundsException。

***

友藏內心獨白:有人18題都答對嗎?

2014年2月6日 星期四

視力測驗:例外處理篇(2)

Feb. 04 10:06~10:16

image

 

今天繼續「洩題」,作答時間一樣是6分鐘,計時開始。

***

7. 例外發生之後,如果要讓程式繼續正常執行,例外處理程序(exception handler)至少必須確定以下哪一件事情?

A. 系統的bug已經被移除。

B. 使用者獲得錯誤訊息通知。

C. 系統自動重新啟動。

D. 電腦沒有中毒。

E. 系統處於正確狀態且沒有資源遺漏(resource leak)。

8. 以下節錄自ANT的程式碼,存在哪一個例外處理壞味道?

private Properties getProperties(Resource r) {

InputStream in = null;

Properties props = new Properties();

try {

       in = r.getInputStream();

       props.load(in);

} catch (IOException ioe) {

      ioe.printStackTrace();

} finally {

      FileUtils.close(in);

}

return props;

}

A. 粗心的資源釋放(Careless Cleanup)。

B. 忽略受檢例外(Ignored Checked Exception)。

C. 虛設的例外處理程序(Dummy Handler)。

D. 當成備胎的例外處理程序(Spare Handler)。

E. 沒有存在任何壞味道。

9. 以下關於Java的checked exception和unchecked exception的敘述,何者是錯的?

A. Checked exception代表可回復錯誤狀況,unchecked exception代表不可回復錯誤狀況。

B. Checked exception如果要往函數外傳遞,必須要被宣告在函數介面上。反之, unchecked exception不可以被宣告在函數介面上。

C. Java編譯器會檢查checked exception的使用是否遵循「處理或宣告原則(handle-or-declare rule)」。

D. 在程式執行的時候(runtime),Java虛擬機器不會檢查checked exception是否違反「處理或宣告原則(handle-or-declare rule)」。

E. 以上皆非。

10. Java的EOFException屬於checked exception。以下關於EOFException的敘述何者是對的?

A. 有時候EOFException僅代表通知(notification),而非例外狀況。

B. 因為EOFException屬於checked exception,所以一定要把它宣告在介面上,否則會產生與法錯誤。

C. 因為EOFException屬於checked exception,所以一定是可回復例外(recoverable exception),捕捉下來之後要執行狀態回復動作。

D. EOFException是IOException的子類別,這種設計技巧稱為Smart Exception(聰明例外)。

E. 以上皆是。

11. 以下關於C#例外處理機制,何者是錯的?

A. C#預設採用stack unwinding來尋找例外處理程序(exception handler)。

B. C#的例外傳遞是屬於內隱式(implicit)。

C. C#使用資料物件(data object)來表達例外。

D. C#的例外模型採用終止模型(termination model)。

E. 因為C#沒有區分checked exception與unchecked exception,所以也沒有辦法區分可回復例外與不可回復例外。

12. 兩棟大樓之間的雷射資料傳輸,因為有候鳥飛過而導致資料傳輸失效。此種失效原因,可稱為?

A. 間歇缺陷(intermittent fault)。

B. 永久缺陷(permanent fault)。

C. 週期性缺陷(periodic fault)。

D. 安全性缺陷(safety fault)。

E. 暫態缺陷(transient fault)。

***

友藏內心獨白:答對一題得0.1分,加總分數就是各位的「例外處理視力」,最佳視力為1.2。

2014年2月5日 星期三

視力測驗:例外處理篇(1)

Feb. 04 09:42~10:05

image

 

Kay建議Teddy在《笑談軟體工程:例外處理設計的逆襲》這本書裡面加上一章,出幾道問題讓讀者們自我評量一下對於例外處理的了解程度。昨天花了點時間出了12道題目,打算放到新書裡面當作第一章。

這種「問題導向學習方法」,對於在台灣從小考到大的鄉民們應該很熟悉。在部落格上面寫了不少例外處理的文章,這一系列的文章就改以考題的方式來呈現。前兩集先把昨天出好的12題「洩題」給鄉民們參考,答案在書的附錄A,書預計3月下旬出版挑眉質疑。

有興趣作答的鄉民可以留言。計時6分鐘,請開始作答。

***

1. 關於例外處理的敘述,何者是錯的?

A. 例外處理是一種非功能需求(non-functional requirement)。

B. 妥善的例外處理可以提高系統強健度(robustness)。

C. 因為及時上市(time-to-market)的原因,有時候就算知道產品的例外處理設計不完善,還是只能釋出讓客戶先使用,事後再想辦法慢慢修正。

D. 所有的例外狀況在需求分析時都可以被找出來。

E. 以上皆非。

2.  以下那種狀況應該交由例外處理來對付,才不至於需要付出容錯設計的高額成本?

A. NullPointerException或NullReferenceException。

B. 陣列索引超出範圍。

C. 硬碟空間不足。

D. 以上皆是。

E. 以上皆非。

3. 在finally block裡面發生例外,採取何種做法比較洽當?

A. 把例外往外丟。

B. 捕捉起來然後忽略它。

C. 捕捉起來然後印在主控台(console)。

D. 捕捉起來然後寫到日誌檔中。

E. 以上皆可。

4. C#與Objective-C的例外類別因為實作了以下哪一個模式(pattern),可以讓例外物件夾帶不固定數量的使用者自訂資料?

A. Collecting Parameter。

B. Variable State。

C. Composite。

D. Strategy。

E. State。

5. 敏捷開發讓例外處理設計變得…

A. 更簡單,因為不需要做太多事前設計(up-front design),所以不用考慮太多情況就可以寫動手程式。

B. 更難,因為不允許做太多事前設計,而且需求改來改去,造成例外處理更難設計。

C. 沒差別,因為不管用什麼開發方法,我們從來都沒花時間去設計例外處理。

D. 更難,因為每天都要開會討論例外處理的問題。

E. 更簡單,因為開發人員會自我管理,所以不需要擔心例外處理設計的問題。

6. Fault、error、failure在例外處理設計中經常會聽到的三個名詞。以下關於這三者的敘述何者為對?

A. Failure表示程式設計錯誤(programming error)。

B. Error表示一個函數無法如其規格所描述,提供正確的服務。

C. Fault表示系統處於不正確的狀態。

D. 以上皆非。

E. 以上皆是。

***

友藏內心獨白:這是視力測驗,不是智力測驗挑眉質疑。