2009/06/01

我說考試啊......

為了雪恥報名參加了證照考試,現在正在為期兩週的密集訓練,第一天的課程就讓我傻眼,練習用的考古題實在很恐怖,幾乎是我寫程式寫個一百年也不太可能遇到的鳥問題,現在都成了證照考題。

舉個例子:
int a = 0;int b = 5;
if( a != 0 && b++ > 5 )   
   //do something....
System.out.println(b);

這題選擇題有幾個選項:編譯時發生錯誤、執行時發生錯誤、b = 5、b = 6。答案是 b = 5 因為 Java 使用「&&」做判斷時發生 short-circuit 以致於第二個判斷式不需執行。不爽的不是考試考 short-cirsuit 問題,而是為什麼會在條件式裡面寫「b++」?

把運算是寫在條件式裡面當然省事,但是高階語言就是為了提高可讀性還這樣搞,這種程式設計師倒不如叫他去寫機器碼,不然之後要維護他的程式還要浪費一堆人力和時間。

幹,以後寫程式我都要這樣寫:
//Code in C
int l11l1l111l1 = 0;
printf("%d %d %d", l11l1l111l1++, l11l1l111l1++, l11l1l111l1++);

6 則留言:

  1. 有時候我會思考,到底考試的目的為何,如果真的考了真正實作的題目,或許我們會覺得有趣而努力寫答案,但是改答案的人不一定覺得好改(大概改個幾十份就吐血了),所以我猜,有可能是因為如此,只能出好改的題目,思維就是,如果你連這樣子的題目都不會,怎麼可能會其他的XD?

    我的想法是如此,就,可能會錯吧XDXD

    回覆刪除
  2. "第二個判斷式不需執行", 為何b會等於6?

    回覆刪除
  3. @isLenny: 你眼睛真大,是我打錯 XD

    回覆刪除
  4. @yen3: 「如果你連這樣子的題目都不會,怎麼可能會其他的 ?」
    沒錯,但是有多少人作這種題目是用理解的?有多少考試又是需要理解的?我的老師都直接跟我們說了:「台灣人就是有辦法不會英文也會考 GRE」。

    我個人不喜歡這種時間在鑽牛角尖,遇到那種程式碼我寧考重寫一個,也不想花時間在那邊跟他耍白痴 =3=

    回覆刪除
  5. 唉唉~不要這麼認真~我也只是提出來笑笑~ XD

    有很多事就有如你所看到,是沒辦法的,不過換個腦子想一想,越多不會的人考上這種證照,相信我們很快就可以看到證照無用論了 XD

    回覆刪除
  6. 我在等學歷無用論 XD

    回覆刪除