2012年11月25日 星期日

[常見問題]你可以問考試的問題,但不要問你在機關工作的問題

警告:
不喜勿入
不喜歡抱怨的人
千萬不要看


陸陸續續以來,
都會有一些人問工作上的事情,
有些事情我還可以回答,
但有一些問得太專業,
甚至是跟該機關有關的,
我絕對不會比你們機關的人清楚,
如果真的連機關的人都不會,
你可以去問主管機關,
採購可以問公共工程委員會,
人事問題可以問人事行政總局等。

通常很多問題,問你機關的前輩就會得到解答了,
再不然也可以問你的主管、科長,
問外面的人,有時候我們可能是無心的,
但是會害死你,
因為沒人知道你機關是怎麼樣,除非是你機關的人。

還有一件事情就是,
我不是你媽媽,
而且你也該長大了,
能夠考進去,
卻不知道要怎麼工作,
那麼我想對你最好的方式就是,什麼都不回答你,讓你自己成長。

最近真的常常收到一些神奇的來信,
突然就是來問我,我剛考上,請問單位裡面叫我做甚麼甚麼事情,
我要怎麼辦?
(我的os:我怎麼知道阿!你該去問你科長阿!我又不是你科長XD)
我蠻好奇你可以考上,
卻極度KY(日文的流行語:不懂得讀空氣,意指一個人完全搞不清楚氣氛)
來問我一些神奇的問題,
那我也只能選擇不回答你,
或是回答你一些很神奇的答案。

不好意思我也是個菜鳥,
絕對沒有你們機關的人專業的,
不要來問我工作上的問題,感謝你。

2012年11月20日 星期二

常見問題-請問要怎麼樣才能考回家鄉?

常見問題-請問要怎麼樣才能考回家鄉?

張德芬老師說:你看到的世界其實是你創造到
親愛的,外面沒有別人。
我一直覺得很正確,
因為自己就有這個問題,
所以我不斷的遇到很多人寫信來問這個問題。

寫這個部落格也有一段時間了,
來信問題也很多元化,
不外乎就是要如何精進自己的念書方法、寫題技巧,
然後最後一定很神奇的會寫自己考試的原因,
大多是"不喜歡在台北工作,想要回家鄉朝九晚五的生活,請問要怎麼做?"
老實說,我還比較反過來想問你要怎麼做咧?

就讓我來告訴大家實情吧!

問題一:我只想要考回家。(這完全是我的心聲) 難度:四顆星

首先,我的簡介上面有寫說我個人有過不少次的考試合格經驗,
卻沒有一次,是可以如願考到我想去的高雄、屏東、台南、台中
我range夠大了吧?就是沒考中過一次,一次也沒有
為什麼呢?

因為,資訊處理這個職系,就是非常非常少"非台北缺",
為什麼呢?因為這個職系的人,一旦佔了非台北缺,
就會一直待著,
就算待遇不算好,工作也不算輕鬆,
可能也不太能正常上下班,
但是因為非台北的缺太少了,所以大家寧願繼續待著,
大家知道,在台北跟在非台北工作,
都是領相同的錢,
何必跟自己過不去,來台北工作,
不但消費比較高,
根本也沒辦法買房子,
還要像我一樣,常常要加班,
反正我也沒想要高官厚祿過,
不如回自己的家鄉頤養天年。

我已經把自己的願望降的這麼低,
只剩下地點的考量,
說穿了,我普考、初考都願意,
只要我可以在上面說的那四個地點其中一個就可以了,
你說我能考上二等卻不能考中那些,
事實上我真的有去考,
還真的都沒中,
其實,那些考試,對我來講,真的比高考三等跟二等難,
全都是選擇題,分數比重又一樣的結果,
實在很難跟行政類又細心補習班訓練過的人比,
只要稍微錯個一兩題就考不上了。

我考中的有四次,考不中的更不用說,少說也有數十次吧!
我自認為我夠努力了,
然而這個職系就是不開非台北缺,
你要怎麼辦?
這個職系90%(我是很保守的講,事實上如果沒有什麼縣市合併,是95%)
全都是台北或新北市的缺,
僅有10%可能非這兩個地方的缺,
甚至有些考試全都是台北缺,
一個非台北缺的都沒有。
我有一次考試考榜首,
但是連一個非台北的缺都沒有,
那比讓我沒考上還讓我更難過。

我去年考上了高考二等,
那又如何?
還不是訓練期滿,強迫把我從高雄,硬調來台北工作,
我強烈表達我的不滿,仍然是沒有用,
單位問我,你既然知道這個缺會這樣,幹嘛還填?
我跟他說,你可以去查看看,除了這個缺以外,
全都是台北的缺。

所以來問我這些問題的朋友,
我很想告訴你一個殘忍的事實,
你如果真的是地區考量,
不要來考這個職系了,
早點認清,去補習班看要補人事行政、一般行政還比較有機會。

我還甚至有遇過有人問我,
請問我想要待在我家鄉(不是我列的上面幾個直轄市,還是某鄉鎮)
我考試可以中這裡嗎?
我比較想告訴你的是,卡難(事實上就不可能)
你不信的話可以去找過去高考缺的資料來看。

如果你考試完完全全是地區性考量,
就是要在自家附近,
絕對不要來這個職系,
不然你就會跟我一樣,
努力了三年,全都是白費的,
自討苦吃。

有人會跟我說,
期滿可以商調阿!
這樣就可以回家鄉了不是嗎?
這個問題問得很好,
如果你熟這個體系,
你自然就知道,
商調沒有這麼容易,
說調就可以調,要你現在機關的長官同意,還要你想調去的機關同意才可以。
有一些爛地方,甚至還有根本不讓人商調,只敢報地特怕人跑掉的單位。
(例如我第一個待的單位:x北市就是)
我之前就有講過了,
為什麼會有考試缺?
很簡單,一定是因為單位太爛,
不然假設單位很好,一但有缺釋放,
早就一大堆知道消息的人商調去卡位了,
哪輪得到新人?

所以你會發現,你剛考上的時候很高興,
等你進去你就知道,
現在的日子根本不是你想像的那樣好過,
經常性加班到晚上10點,
沒有加班費都是常有的事情,
最可怕的是,根本不讓你調回家鄉的單位。

最後是告訴你我的結論,
如果你完完全全是地域性考量,
你有兩個做法:
1.請直接轉職系
去補習人事行政、一般行政。
如果你有機械背景想回高雄,就直接考機械吧!
如果你跟我一樣,也沒什麼能力一定可以在高考考前十名,
那就不要傻到來考這個職系,這個職系90%都是台北缺,
考十名以後就要有來台北工作的心理準備,
其他特考更不用看了,請直接跳過,幾乎都是台北缺。
2.如果你能接受來台北工作1.5~2年(這是高考綁一年的狀況,如果你考地特就是6年)
那你可以繼續考這個職系,
只是到時候你商調會非常非常頭痛而已。
(如果你不擅於運籌帷幄,私底下來,類似宮廷鬥爭的那種方式,
建議你不要選這個方式,你要知道,為了讓長官高興,
點頭讓你回家,是有多難的一件事情)

以上就是比你還想要調回家鄉(大概是你的10萬倍)的inonat給你的建議。


問題二:現在的工作好痛苦喔!考上公務員就可以錢多事少離家近享受無所事事的生活 難度:十顆星(滿分五顆,根本對現在的新人是不可能的事情)

現在的新進公務員不是外面想像的很爽
那是老人跟某些"按摩"高官的權利,不是你的權利,
如果您還是想像著,
我考上就可以在我家附近有著「錢多、事少、離家近」的生活,
我敢跟你保證,這三樣裡絕對沒有一個符合,
甚至我常常看到來信跟我說:
我的願望很少阿!工作穩定就好,
錢不用像我在電子業領那麼多也沒關係,
只要在我家附近(高雄、台南等等非台北地區),
準時上下班就好了。
我敢跟你掛保證,您考上之後,
絕對會很失望,
不要說地區的問題,
光是那個"準時上下班"就不會如願了,
現在公務界,五點半下班算是您命好,
六點下班算是準時,七點下班算還好,
十點下班都是常有的事情。

我每次收到這種信,都會啞口無言,
麻煩要考試前,先做點功課好嗎?
不是等你考上了高普考後,
才發現,怎麼不是我想像的那"從此幸福快樂的人生"?
如果你還是這麼想,
我必須告訴你一個實例,
我曾經聽說,
有一個考了很多年才考上的考生,
進去單位工作後,
不到三個月,就跳樓自殺的例子。
原因很簡單,別說錢多事少離家近了,
單位又操又累,經常加班到半夜,還要扛採購壓力,
可是自己也努力了好幾年才考上, 很想辭職,又沒辦法在業界工作,
所以他才自殺的。

我也有聽說過,
進去之後因為工作壓力太大,
常常加班到10點、12點,
每天以淚洗面,
現在要靠精神藥物過日子的朋友。

跟鄉民一樣,
把當公務員想的太美好太天真,
吃虧的會是您自己。

問題三:我想要在自己的家鄉當高等公務員。
難度:七顆星(也是滿分五顆星喔!我的建議:你要不要直接選縣市長比較快?)

這個問題我也被問過,
有時候還是一些剛考上的公務員問我的,
想問我考二等能不能往上爬,
還甚至要求要在自己家鄉,
要做到10職等以上的缺,
(他還嫌只有10太低等了喔!中央都是13,14的)
我只能告訴你,你要簡12,13,
你要不要直接選縣長好了?

要知道,在非中央單位,
能夠薦7,薦8退休都算很大了,
有些機關首長也才7(例如:我家附近鄉鎮的戶政事務所所長)
要簡10以上,都要地方局處的"首長"等級才有(例如:xo局局長),
你又要超過簡10,又不想去台北,
那很簡單啊!
你直接選縣市長或議員不就得了?
至於這個難不難就看你自己的判斷了。

考上之後,就各憑你運籌帷幄的本事,
去爭取往上的權益。
能爬到多高,都要看你自己,
要靠考試是不可能的。

2012年11月15日 星期四

自創考題-你如何規劃內政部實價登錄網站設計?(更新)

自創考題-你如何規劃內政部實價登錄網站設計?

最近內政部實價登錄網站實在很夯
資訊處理這個職系的工作
很少可以像這個網站一樣
受到人民的"關注"
也因為大家都想連
大家都在連
就引發了很多問題與討論

日前因為流量太大,
開站以來有好幾天都連不上去
於是乎人民的問題是:怎麼都連不上去?

針對這個"流量"產生的問題
開始有一群懂資訊的人討論解決方案:
1.你把資料庫複製給我就好了啊!
乾脆由人民來做,政府做沒有效率

2.你就把網站丟上去"雲端"嘛!
雲端根本不怕流量,
放到google上面只要500元而已

還發起了一人一信寫民意信箱,
於是乎我們在採購網上看到,
該中心真的採購了雲端的服務,
也把它放上去了

流量暫時解決了,
接著又有一些人覺得:使用者介面(GUI)很難用
就把資料給人民阿!
由人民來界接你的資料
由民眾自己去寫GUI
你只要給data就好了
open data有那麼難嗎?

有一些人,認為雲端要90幾萬,
他只要500就可以做到好,
是承辦人員可能涉貪,
我在這邊不想談論這個部分,
因為我不在該機關,
也不知道實際到底是怎麼運作,
這也不是考試該寫的地方,
考試該關注的,
是這個網站帶給大家的MIS的議題:
1. open data的概念
2. 雲端的應用
這就有可能會考了。

首先我們先來看open data到底是什麼概念
其實就像上述所說的
open data 就是把資料還給人民,讓人民可以自由利用
在美國有一個政府中央的資料蒐集網站
就是提供給人民這些資料可以任意運用
(你可能會覺得,阿?為啥我們沒有,
恩~因為米國有一個中央一級資訊單位,
他們有資訊長,相當於部會首長,
而我們頂多就是一個掛在研考會底下的二級資訊單位,
那怎麼可能會有什麼力道來統籌這些資料?)
扯遠了趕快回來,
open data說起來簡單,
可以像鄉民說的,
把資料庫dump出來,
可是你有沒有想過,dump資料庫後,資料庫有更新那怎麼辦?
這就是資料庫的同步,
你或許會說,那好啊~每天晚上dump一份給我就好了。
一個應用ap每天來跟我dump一份還沒差,
如果每個人民開發的應用ap,
每天都要來跟我dump,
你能想像那個驚人的流量嗎?

假設我不要做資料庫dump這種老方法,
你可能會想說,
我用xml做資料庫物件的交換,
你政府的伺服器就負責給我資料庫的資料就好了,
這個問題比上面資料庫dump還複雜,
你應用ap只要做GUI,
後面你要連資料庫的資料,還是要連到我這邊做交換,
一個網站ap還可以,10個網站ap,
還是再加幾個不同行動平台的app,
通通連到我這邊要資料,
這時資料庫的流量,就不是普通的大了。

這就是open data要考量的第一個點:
要有強大的資料庫後援
你比傳統只面對你自己機關開發的一個ap,
要面對更多來自各種不同來源的ap,
除了資料庫伺服器效能要夠強大以外,
你還要能夠阻擋來自惡意攻擊的來源。

解決了資料庫效能流量的問題,
還有一件事情一定要考慮的,
那就是既然是要開放給人民的資料,
就要顧慮到與原始資料切割的安全性
以這個例子來說,
房價坪數等這些資料,
是來自辦理登記的資料,
這些原始資料一定有許多個資,
要如何跟你原本內網的系統切割,
保護你原有內網系統,
是在一開始設計架構時就必須想到的。
如果是以這個例子的話,
當然就是每天跑個程式,
把要公開的資料與原始資料切開,
可能是內網系統主機每個晚上跑,
然後透過ftp或其他方式丟給DMZ的主機,
準備提供給外面的open data應用AP來使用。

接下來是資訊倫理的議題,
你提供資料給民間AP使用,
萬一資料有錯的時候,
誰要來負責?
這個資料正確性的責任歸屬
就是資訊倫理的範疇,
所以一般提供open data的政府服務,
都會搭配一個行政規則來規範要跟他界接的應用AP,
比如說資料如果有錯誤,造成使用者的損失,
是由應用AP來承擔等等之類的。
或是惡意攻擊這個提供open data服務的server,
政府有權力阻擋來自這個來源的request等等。
(我這邊只是比喻,這個規範的範本,
行政院研考會早就有提供了,請自己前往觀看)

順道告訴大家一件事情,
open data目前付諸執行最成功的,
只有有錢到不行的台北市政府有做出來,
他們還辦過一個APP比賽來推廣這個open data,
還在華視轉播過。

接下來再來講鄉民說的"把網站丟到雲端",
"雲端"可是最近幾年最愛考的題目,
實際上政府機關研討會之類的也很愛講,
可是真正做出來的案子沒有幾個,
原因很簡單,
因為採購的RFP不知道要怎麼寫才不會有問題。

把東西丟到雲端,有什麼好處?
1.可以自由調配資源:
傳統我們可能為了應付一個尖峰時期的需求,
採購了大量的伺服器硬體,
但是過了這個尖峰時期,
硬體就晾在那邊,
浪費了許多能源也浪費資源,
如果採用雲端的方式,
把東西丟到跟別人共用的雲,
這樣如果你如果這時需要很多資源的時候,
雲端會自動幫你調配硬體資源。
當你不需要那麼多資源的時候,
這時這些原本服務你應用的機器,
可能會被調度去服務另外的應用。

2.可以快速部屬應用:
要做到第1點,
這個"雲"的本身就是要能夠支援快速部屬複製的,
他必須要能夠在使用量增大的時候,
能夠把原本只在雲端上面某一台機器的應用,
快速部屬到更多台雲端上的機器,
以應付使用量。
傳統上你要再多增加幾台機器服務同一個AP,
你可能需要先在新的機器上裝你的AP及環境
你可能還需要load balance,
可是雲端透過虛擬化技術,
他可以在幾秒內快速部屬你的應用到雲下所屬的機器,
可以非常快的來支援你尖峰時期的需求。

因此,買很多台機器做cluster不是雲,
應用AP去住在共構機房也不是雲,
因為這些都沒辦法符合第二個特性,
雲必須要能自動化、非人工可以自由調度資源。

簡單的講起來,
把東西丟到雲上面,
你就彷彿得到了一個永遠不會耗盡的資源,
由無數可以自動調配的機器去服務你的AP,
你需要少量的機器,雲就會自己部屬在少少的機器上,
你需要很多的機器,他可以在"你不用人工安裝"的情形下,
快速的部屬在多台機器上,
這就是大家為什麼一直想把這個網站丟到雲端上面的原因,
因為只有雲端撐得住這樣的流量。

說起來很容易,
做起來卻很不容易,
比如說"資料的安全性"這就是雲端需要考量的,
但是以這個應用來說,他本來就是要公開給大家看得,
所以沒有這個問題。

以這個雲端的特性來思考,
與其把網站放在雲上,
不如思考如何把資料放在雲上,
讓所有民眾自己開發的AP都去連雲上面的資料庫,
這樣就沒有open data需要強大資料庫後援的問題。

整理一下我個人的建議,
首先在內網平常供地政人員做登記的系統,
每天dump一些切割後可公開的資料(可能需要一個軟體來做這件事情),
接下來這些資料,把他丟到DMZ的一個server,
準備要透過這台server自動配送到雲端上,
在雲端上面只要架設能夠把這些資料提供出去類似資料庫的功能即可。

技術面上是這樣,
接著就是需要一個規範open data利用方式的行政規則了

以上這些事情說起來容易,
實際上規畫起來還是有很多細節技巧,
光是RFP就很難寫了。

這是我個人的淺見,當然,我也只是人家吃麵我喊燒,沒什麼資格來講這件事情。


最後就是統整一下這個題目可能會怎麼出

1. 請解釋雲端? 雲端應用有什麼好處? 如果要請你規劃一個可以支援超大流量的系統,你要如何結合雲端科技?(25分)
2. 請解釋何謂open data的概念及優缺點,並舉出政府應如何應用。

第1題擬答:

(一)雲端科技包含下列特色:
1.將傳統多部伺服器專屬於同一應用AP的情形,改為多部伺服器可供多項應用AP使用。

如上圖所示,傳統一個應用AP後方可能需要多台專屬伺服器以供服務所需硬體資源,如果將應用丟到雲端,可多個不同的應用AP來共享這個雲端上的所有多台伺服器的資源。

2.可動態調配資源:傳統多台伺服器專屬於同一應用AP,此應用尖峰時期需要多台伺服器,但若此應用閒置時期不須使用這麼多台伺服器,則會造成伺服器資源的浪費,雲端的概念就是為了要善用資源,在一應用尖峰時期可立刻調度多台伺服器供其使用,只需少部分的機器提供給另外其他閒置時期的應用。



如上圖,某一應用,例如申報個人所得稅系統可能在尖峰時期(4~5月)需要非常大量的伺服器資源,如20台伺服器,但其他月份可能僅需1台伺服器即可應付需求,則為了4~5月的需求量,需要採購20台伺服器,則其他月份19台伺服器都必須閒置,為了可在閒置時期供其他應用使用,產生雲端的概念。

3.可自動化快速部署並動態調配資源:雲端是建立在一群cluster機器上,然而與cluster最大的不同處是在於,傳統在一個應用因為需求量增加,必須增加新伺服器時,須由人工手動去安裝應用AP服務,而雲端強調的是可以"自動化"、"不須人為手動"的自動化快速部署,這樣的好處是如果半夜突然間需求量大增,也不需要投入人力調配並部署資源,所有的動作應該由機器自動化調配。
4.依實際需求使用量的付費機制:與傳統專屬伺服器採購後折舊攤提所需的費用比較,雲端的使用付費是依據實際資源的使用量,例如可能是依據占用的cpu資源、資料庫連線,來作計費標準,可能是按月結清,或是類似月租費的租用方式,如果服務不再使用,則亦不需支付費用。

(二)雲端應用的優點:
1.產業布局、專業分工:軟體開發人員僅需負責軟體部分維護,將軟體上雲端後,硬體維護部分不必再考慮,可交由雲端專業管理人員負責。
2.資源有效利用:相較傳統專屬伺服器會有閒置資源情況,耗電消耗費用,若動態調配資源,可響應環保並確保資源有效利用。
3.可節省初期投資成本:初期硬體機器採購部分可不需採購這麼多的硬體,僅需定期依使用量費用,減少硬體投資開銷。
4.可節省管理開銷:硬體維護人力及費用已包含於雲端租賃使用費內,不須再額外編列支付。

(三)應用舉例:以內政部實價登錄網站設計為例。
1.將網站丟到雲端,可隨時應付大量的查詢使用者:內政部實價登錄網站初期預估會有相當大的使用量,已非傳統使用多台cluster、loadbalance機器可以應付其需求流量,應將網站交由雲端,才可及時應付需求。
2.若要結合open data概念,可將網站切割成使用者介面前後台應用部分丟上雲端,資料庫部分亦丟上雲端:
內政部實價登錄網站所刊載之網站為許多民眾期盼之資訊,若能結合open data概念,將資料提供給民眾使用,例如結合各項民間開發之應用AP,將可達到資訊利用最大化的效益,但要應付這麼龐大的資料庫流量,亦需要結合雲端的配合,因此建議將資料庫部分丟上雲端;至於網站使用者介面前後台應用部分,亦可丟入雲端,以應付龐大的需求量。
3.以上概念應考量資訊安全,確實與內部應用系統切割:內政部實價登錄網站之房價來源,應為內部地政登記系統,此系統應刊載許多房屋所有人個人資料,因此,實價登錄網站之資料庫,應確實切割,如可利用資料庫或撰寫專門切割程式,每日定期將此資料由內部系統丟出至DMZ區,再由DMZ區的伺服器,自動發布部署至雲端上。

(以上那些圖型使用工具尺畫很快,不要跟我說,怎麼可能實際上可以畫那個圖,雲只要不到1秒,長方形也不用1秒。)

第2題留給你做了(其實是因為作者很懶.....)

考試進階技巧─不會寫的問題要怎麼辦?

考試進階技巧─不會寫的問題要怎麼辦?
開了這個不中用的blog也有一段時間了,
很感謝很多版友的默默支持,
也對一些版友特別來找我感到抱歉,
因為好像真的沒幫到什麼....(建議大家不要來特別找我見面了,免得傷了大家的時間跟荷包XD)

其中最多的問題就是:
1.叫我考古題不要找"標準答案",那我怎麼知道寫得對不對?
2.叫我考場上就算不會寫的題目也不要空白,那我就是想不出來要怎麼掰?
3.課本上面本來就不會寫標準答案的題目,例如:你要怎麼規劃oo系統?這種問題你怎麼掰?

其實這些問題都可以統整成為:
1.不會的問題怎麼辦?
2.不確定答案的問題怎麼辦?

其實這個問題,本身也是屬於沒有正確答案的做法,
或許標準解答就是自己根據自己的經驗及學識,
依臨場反應看著辦,
就如同商業週刊裡面喜歡跟大家分享的
「ox成功經驗」及「成功管理經驗」一樣,
沒什麼標準答案可言,
答得好不好,
全依你個人的經驗、學過的東西、還有思考的邏輯條理性來看。

但是這個答題的好與不好,
也跟改你答案的老師本身學識也有關係,
如果他本身也沒有經驗,
不知道實際推行這個業務的難處,
或是他也不知道這個議題及應該知道的know-how學問,
那你也有可能拿到很低分。

這就很像,你跟某些教授說:這個程式的難寫的地方在哪?
他完全不能理解是很像的,
他認為這不是難處,
就會造成,可能你在這個題目的領域是專家級的等級,
但是因為教授不懂,所以他認為,你考慮的問題都是不重要的,
教授還是希望你拿他看得懂的比較老一派的方式來看這個問題。

我舉個例子來講,我永遠記得,
我考的關務特考有一題是說,
請問公文系統應該結合政府何種系統?請舉一個例子
這個題目如果你有做過資訊中心類的資訊中央單位都會很了解,
就只有兩種系統會跟他綁在一起,
1. 人民陳情系統:你在網頁上面寫信給首長信箱,會直接轉成公文,掛到公文系統裡面,
這樣才不會漏信,也可以利用公文本身的稽催機制,督促機關快速處理人民陳情。
2. 研考系統:這其實跟上面也有相關性,研考系統主要可以用來統計並稽催各承辦人的公文量、逾期案件量。
我寫了這兩個,請問我得幾分?
結果是連一半的分數都不到。
我問了三四個資訊中央單位公文系統的承辦人,
每個人都跟我講第一個想到的是陳情,
第二個就是接研考。
那為什麼我分數這麼低?
只有一個可能性,
就是改題的教授自己根本不知道實務上要接這兩個系統。
我寫的又太公務化的語言,
非公務員又沒有接觸過資訊中央單位的教授,
怎麼會知道什麼是「人民陳情」系統、什麼是「研考」?
他可能只聽過CRM吧!
我實在覺得很有趣,請問教授,沒摸過你為啥要出這種題目阿?

撇開上面這個讓人很氣餒的例子不談,
我想如果你遇到這種人,你也只能自認倒楣,
一般來講還是得依你當時知道的東西,
有條理部要緊張地回答,
就可以了。

考古題你如果做了第二次,自然會明白第一次哪裡寫得不好

接下來就來回答網友的問題吧!
我的朋友最好奇的是,
考古題沒解答,
你怎麼知道你寫的好還是不好?
我的答案是:多寫幾次你就知道了。

我自己念書的方法是這樣:
念某個範圍-->寫這個範圍的考古題(第一次)-->某天你再念一次-->再寫考古題(第二次)
首先我會針對某個範圍先念,
比如我今天想念"雲端",
那我會找"雲端"這個議題,
出現在教科書的資料,
接著我會"掃"所有我準備的3~5年內考古題,
找這個範圍的考古題有哪些,
題目大概是出什麼,
大概這時就會知道哪邊你沒準備,
需要上網找一下補充資料,
念完並整理完心智圖後,
我一定會把資料遮起來,
自己在考古題上面擬答,
通常我都會擬答個2~3題後,
然後才會把這個範圍給close掉,
也就是我認為我第一次已經唸完。

接著某天我可能接近考試,
又來唸第二次,
也是重複跟第一次一樣的作法,
拿起教科書重看,
掃考古題,
看題目,
心智圖,
重新擬答。
如果你真的有照做,
你這時候看你第一次的作答,
就會知道你哪邊寫得不好,
或是你根本就寫錯了,
因為這個時候你通常會看了一些其他的議題,
可能你會漸漸地看得懂當時你看不懂的題目在問什麼,
或是你考慮的會更周到,
能夠運用的分析知識會更多。

所以我才會說,
根本不必去找標準答案,
你可以找擬答用的資料,
但絕對沒有所謂的標準答案(除非是計算題)。
多重寫幾次考古題,你自然就會越接近好的答案了


不會寫的題目比的是冷靜思考、有條理的分析能力

有一些題目像上面那種"你要怎麼規劃oo系統?"
這種問題其實就是屬於那種沒什麼正確答案的嘴砲型題目
問題要答得好,
就會跟你有沒有做過這件事情的經驗有很大的關係,
其次就是你有沒有學過跟這件事情有關的理論
然後知道關鍵成功因素在哪,
並且可以套用分析在上面,
說起來很簡單,做起來很難,
有點像是問你說,請問你要怎麼經營一間小火鍋店?
廢話我要是知道怎麼樣讓這間小火鍋店賺錢,
我幹嘛來考高考?
這種叫你規劃的也一樣,
系統人人會做,
只是誰規劃的好,
誰講的不心虛,
看起來好像有用一些理論來套這件事情,
不是隨便胡亂做一套來賺錢,
你就會喜歡用誰的系統。

下一篇我就拿最近內政部實價登錄網站的問題來分析一下我會怎麼寫題目。


2012年10月2日 星期二

考試迷思系列-考試的路不一定人人會支持,但至少你自己要無比支持

考試迷思系列-考試的路不一定人人會支持,但至少你自己要無比支持

很久沒有寫這個系列了,聽說這個系列還有一定的人氣度?
其實我覺得許多版友唸到後面是跟時間賽跑,
自然像是親朋好友的嘲諷就會漸漸出現了,
有些人更奇怪,連你考上了也要酸你一把,
偏偏還是比你年紀大的自以為熱心叔叔阿姨阿婆,
這也是我寫這篇文章的原因。

國考的路上,或許你會遇到下列情形:
1.你以前的同事笑你要做一個米蟲了,或是根本看不起你的工作。
2.你的遠房親戚或是很久沒聯絡的親戚,看你很久沒工作,很熱心地叫你不要浪費生命,應該要去工作。
3.哪邊不知道冒出來的長輩說,她認識的誰誰誰花多短的時間就考上,你可以去請教他,趁機比較一下幾句。
4.你不知道為什麼讓你的上司知道了,他拼命勸說你為什麼要去當沒有生產力的公務員(而不是繼續作任他使喚的狗)
5.路人甲說其實去科技業年薪百萬,你當公務員只有死薪水。
6.路人乙說現在科技業也沒有多好賺,而且分紅也很少,能有40K的月薪就很不錯了,所以當公務員還不錯,只是不知道以後景氣會不會比較好。
7.你的至親看不下去你天天在家念書,叫你去找工作。

由於這種事情好像是月經題吧,我也多少遇過類似的情形,就來跟大家說明一下我的作法。


case1: 面對親友的嘲笑
我的回答:人有高潮低潮,當你在高處的時候不需要嘲笑面對人生低點的人,因為你有天也會落魄

這邊要先跟大家說一聲
其實我個人跟我父親那邊的親戚相處的不是很好
由於他們很愛比較 又非常的假 自然大家關係都不太好
除了每年過年非不得已的見面 很少會見到面
自然他們的聊天就是比較跟嘲諷
有一次 當我有一位親戚發現我正準備考試 暫時沒工作的時候
他好像很久沒發現我的弱點一樣
突然眼睛都亮了
然後拼命就嘲笑我

我聽完之後很淡定的跟他說:
人生都會有高潮低潮
你看某人(我們另一位親戚)現在不錯
之前也是辛苦低潮很久
可見人都是會有高低潮的
沒必要因為自己現在處於高處
就對低潮之人落井下石
否則之後等你低潮 人家會笑你笑得更嚴重
我受得住 你承受得住嗎?
你自己之前還不是為了準備轉行 沒有工作很久
我們也都沒有嘲笑你啊
而你現在卻嘲笑別人
我想基本上 人生都已經活到30幾歲了
又不是20幾歲的小毛頭
對於人生有高有低這種事情
想必早就已經領悟也能理解了
你年紀比我大 這樣的道理也不能理解
真是辛苦你多長我這幾歲了

此親戚後來就生氣地轉頭離開
後來他離婚,就變得不太敢出現在親戚面前
有一次不得已碰到,
其他親戚也是對他落井下石(我們親戚真的很無聊!)
我也是跟他說,別理他們,人生總是有高有低的,
現在的低點就是為高點做準備,
不要去想它們說的無聊垃圾話~

case2:面對老闆說你要努力肯吃苦才能出頭天
基本上這句話是沒有錯的,問題是看是出自於什麼立場
我有一個親戚也是在當老闆,他從以前聽我要做這行
就大嘆現在的年輕人不肯吃苦等等云云
其實只要肯努力都可以拼出一片天
勸我趕快放棄公務員,去賺科技業的百萬年薪
他還說他都對員工非常好,薪資福利也很棒,
流動率很低
我只是很淡定的回他一句:如果真照你說的,
全台灣的老闆都像你一樣好的話,
國考不會報名分數屢屢創新高了
而事實上,就我的了解,他的女兒也在拚國考,
如果真的老爸的公司這麼好待,為什麼沒去待呢?XD

case3:長輩介紹你他有哪個親戚很威,請你去請教他
原則上我遇到這種情形我還真的會請問他是誰,
如果他可以回答個所以然,很熱心的幫你介紹,
那我會謝謝他,之後再跟他說的人聯絡
不過有時候總會遇到,要問細節的時候,
那種打哈哈帶過的長輩,恩~你就知道了

case4:你的同學笑你科技業年薪百萬,你當公務員只有死薪水
基本上這要問你自己了
我一開始就有講過,你為什麼要當公務員?
如果想不清楚就考上,那我只能說你真的是浪費生命
因為你很快就會離開公務借了

我剛開始因為公務員來台北的時候
以前大學的同學找我出去聚餐
他問我在做什麼工作
我跟他說:傳統產業~只是我們家老闆會換來換去而已
好的話4年會換一次,如果運氣不太好可能不到1年就...
我的同學完全摸不著頭緒
他又問我說,那你到底是在做甚麼?
我說:就在傳產當MIS阿
他們就開始批評我的工作,還有MIS有多廢之類的
開始說自己的薪水多好,工作多有挑戰性,
你怎麼會想要腦袋悾悾,現在就想養老了?
我只淡定的說了一句:
人各有志,
親愛的朋友,
如果你們不懂得尊重他人的行業,
那麼別人也不會尊重你們,
我們都已經活了這麼大了,
也應該像個大人一樣,
尊重別人的工作及職業,
至於薪水高低及報酬,
行行出狀元,
不如大家說說看,
各自的薪水是多少?
我朋友們爭相恐後的說,他今年領了2個月等等云云,月薪4萬
我也很淡定的說,我月薪5萬,不過今年第一年還沒年終
他們就開始很忿忿不平地說,
為什麼MIS這麼廢還可以領這麼多錢?
我也是很淡定的說:
你們不要小看MIS,這行要累積年資才能做,
少則也要3~5年,而且要單純MIS,
不能混其他寫程式之類的工作,其實是很專業的
(我並沒有做過,但是我有聽聞過,想當公司的MIS沒有那麼簡單)
請你們不要再去汙辱別人的工作,
如果你們要再這樣的話,
我也是可以反擊把你們的工作講得很難聽,
你們自以為清高,結果也不是幫老闆數錢,
老闆賺得飽飽的,才分你們少少的4萬元,
兩個月年終,你們就開心成這樣,
還被老闆洗腦說"像這樣能夠定期更新挑戰的工作才是高尚的工作"
被利用還幫人家數鈔票,真的很可憐
我是很不想講這些話的,可是你們一再批評別人的工作,
不覺得很像小學生的行為嗎?

後來我們當然不歡而散了
我只覺得話不投機
很感嘆為什麼以前這麼要好的朋友
後來會變成這個樣子

case5:你窩在家裡也有好幾個月了,請趕快去工作吧!
基本上這個問題我沒有碰過,因為本人都是自己去外面租屋住外面,
除了幫忙照顧家裡那陣子外,從來沒住家裡全職準備考試過,
不跟家裡拿錢,如果有去工作也一定還會拿給家裡錢,
完完全全的不靠家裡,這樣誰敢說話呢?
我個人是非常不贊同你跟家裡拿錢念書的,
除非你家完完全全的願意資助你,
否則為了這個吵架傷感情真的很不應該。


其實我在考試的時候都是很低調的,
除了幾個非常至親的人或朋友,
根本沒人知道我在考試,
我也不喜歡讓人家知道我在準備考試

講到這邊突然想起一個也很有名的月經文:
請問國考是不是要斷絕朋友關係?不能出去聚餐?拒絕一切玩樂?
本人的答案是沒有這回事
不過我天生就有一點不太喜歡跟人家聚餐
(我自己的頻率大概是1~2個月1次吧!
而且還是我男友的朋友
自己倒是天生沒什麼朋友XD)
但是我仍然會出去玩、出去逛街等等
所以也算是沒有禁止玩樂
只是我玩樂的時間會相對減少很多
可能假日一天念書,半天玩樂這樣

給大家做一個參考
基本上我覺得念書這種事情,跟減肥一樣
你要養成一個習慣,讓自己很喜歡的去"做到"
而不是用一種痛苦感一次念很多,
這樣會沒有用~

2012年9月20日 星期四

[問題]考上了之後要怎麼辦?

首先,問這個問題我還覺得蠻奇怪的,都可以考上了,怎麼會有這種問題哩?
總之就針對一些QA來回答一下吧!

Q:請問上榜後的流程?大概幾月會開始工作呢?
原則上你上網看到公告自己考上,到你開始工作,只有一個月的時間。
流程是這樣的:
1.你知道你考上:考選部公告or你收到簡訊:你考上了
2.掛號信:你收到郵差給你的掛號信,裡面跟你說,如果你填完缺公告後10日內就要報到,不然就視同失效,要做保留得趕快去申請保留。
3.填志願:人事行政局的填志願網站說你可以開始填志願了,如果有其他考試也會有填志願或是現場玩抽抽樂的遊戲。
4.志願放榜:你終於知道要去哪邊上班了.....
以上大概會離你知道你考上了只有一個月的時間而已。
我們以高考為例的話,現在9月19日放榜,大概平均每年都是10月26日前一定要報到,其實很快喔!
看到這邊聰明的同學應該知道,你最需要做的事情是,
如果你有工作,趕快提離職!!!
千萬不要再問說什麼你公司不讓你離職,你要走誰能攔你!!XD
如果你10天內不去報到的話,資格就失效了。

Q:請問我要去買西裝嗎?
不用。
最好是不要穿得過於正式,免得人家以為你是廠商。
真的是按照前輩們說的話,不要穿拖鞋掉嘎去就好了。

Q:請問我要寫履歷表,體檢嗎?
高考不用。
其他考試,如果在掛號信裡面有要叫你體檢,你再去體檢(例如關務特考要,掛號信會有)。
(我比較好奇的是,明明掛號信裡面沒有的東西,為什麼還要問?難道您看不懂中文嗎?真懷疑是怎麼考上的XD)

Q:那請問我要做什麼?
你覺得呢?
第一件事就是趕快辭職,如果你沒有這問題,
第二件事就是想填缺的事情,不要以為不重要,
行家(考上的人)都知道,那才是重點。
填缺的問題,請看之前我寫的文章。(旁邊標籤都有)

如果你覺得不重要,恩,那我有一種預感明年會在補習班再看到你。

Q:請問增額是不是表示不一定會有工作做?
一定有工作可以做。
而且行家(考上的人)都知道,增額跟增列才是大家拼命搶的對象。
你知道考上的人,再考第二遍,有多想要進增額嗎?
我們寧願不要榜首,也想要增額,因為那個好缺的機率大多了~
正額根本就幾乎都是x缺。
如果我是增額的榜首,我會比考上榜首還黑皮~
可惜我都沒有遇過T_T
我真的很想要當增額的榜首阿!
你要知道,正額不能填增額,那種明明就考得比較好,
卻因為在正額的後段,不能填好缺的感覺,真的很差........
所以考上增額的同學,你應該要更開心才是阿!
我要是你我真的會開慶功宴慶祝。

Q:請問我之前成績很差,我有xx疾病,會不會影響我不能報到?
不用擔心,只要你不說,沒人會知道的。

Q:報到注意事項?
1.請在告訴你上那裡後10天內報到。
2.請先電話過去聯絡貴單位人事,他會告訴你該注意的事項,還有要請你準備帶的東西。

Q:請問受訓的事情?
基本上去單位報到後,會教你上網(國家研訓院的網站)填受訓的班表,然後你報名中了,會有公文來你們單位調訓,也就是報到後才會受訓,時間大概是一個月左右,那是你公務生涯中最快樂的一段時光吧!請好好珍惜及把握!
假設你前面沒考過國考,
(考過應該也不會看到這篇吧!這些都早就知道的事情了)
你要變成正式公務員:
1.先在十日內報到
2.你去單位工作了
3.基礎訓:約一個月,會去一個不是你們單位的地方受訓,原則上有住宿。
你在實習期間就是4個月,含一個月的基礎訓,但是實務上可能你先做了4個月,基礎訓的班才輪到你,反正總之就是你報到後的那天開始,4個月後,如果你沒什麼問題就會變成正式公務員。

裡面是有一些規定可以減免實務訓跟基礎訓,
但是那是規定給一些又再來考國考的人,
第一次考上就沒有這些問題,
再考上的人我想自己應該也很清楚這些規定啦!

國營事業同學們的問題:
Q:請問我第一階段,比錄取分數多x分,大概會第幾名呢?
你覺得問我我會知道嗎?
這只有一個人知道阿,就是那個幫你排分數的人,
再說,我如果真的回答你,還是網友回答你,
您敢相信嗎?

Q:請問我體檢有oo問題,會不會不錄取?
原則上我們這個類科是都不會,除非是一些比較特殊的疾病。


最後再跟大家說一下,如果你真的想不到要做什麼,給您的建議:
1.趕快出國去玩
2.趕快想個辦法去玩
因為,開始工作後,你可能會覺得:"高興的時候原來只有剛考上那一個月"

2012年4月18日 星期三

100年警察特考資訊處理三等第五小題解答(下)

五、Collection Framework(即Collection其subclass如ArrayList和LinkedList)都有提供排序的功能(即sort()的method或function),但都只限於數值型態(如Integer或Double等)或String所構成的Collection。請問如何讓一般Class的物件所組成的Collection也可以直接使用Collection所提供的排序功能?(Class需做那些事情?)(15分)(警三100)


最後我們來看這個題目的答法,
畢竟寫答案跟理解是不一樣低。

答1:
一般自建Class可透過implement Comparable方式使用Collection提供的排序功能,
透過實現Comparable介面(interface),實作該interface的compareTo() method,如下例:
假設有三個學生,我們要讓他們按照身高排序:
1.學生類別(Student)設計如下:
public class Student {
   //建構子,constructor


   Student(int h,int n){
          height=h;
          number=n;
   }
   //學生的屬性
   int height; //身高
   int number; //座號
}
2.要使其可使用Collection自動排序,需implement comparable,並實作compareTo()方法:
public int compareTo(Object a) {
    if(this.height>((Student)a).height)
         return -1; //-1表示後面a物件比較大
    else if(this.height==((Student)a).height)
         return 0; //0表示相等
    else
         return 1; //1表示後面a物件比較小
}
如此一來,Collection便可透過此方法得知判斷大小的依據來排序,
即可使用Collections.sort(array)來進行排序。
整體程式碼如下(省略import部分):
public class Student implements Comparable{


//學生的屬性
int height; //身高
int number; //座號


//建構子,constructor
public Student(int height, int number) {
     this.height = height;
     this.number = number;
}


//因implement Comparable interface所以要寫的compareTo method
public int compareTo(Object a) {
    if(this.height>((Student)a).height)
         return -1;   //-1表示後面a物件比較大


    else if(this.height==((Student)a).height)
         return 0;    //0表示相等


    else
         return 1;   //1表示後面a物件比較小


}
//覆寫這個method方便我們做列印
public String toString(){
      return "身高:"height+",座號:"+number;
}


public static void main(String[] args) {
       //有三個學生,分別是a:身高160,座號1;b:身高:170,座號:2;c:身高:180,座號:3

       Student a=new Student(160,1);
       Student b=new Student(170,2);
       Student c=new Student(180,3);
       ArrayList arrayList=new ArrayList();
       arrayList.add(a);
       arrayList.add(b);
       arrayList.add(c);
       //排序前印出來看看吧
       for(Student i:arrayList)
             System.out.println(i);
      //排序中
      Collections.sort(arrayList);
      System.out.println("排序後:");
      //排序完印出來看看吧
      for(Student i:arrayList)
          System.out.println(i);
       }
}
列印結果為:
身高:160,座號:1
身高:170,座號:2
身高:180,座號:3
排序後:
身高:180,座號:3
身高:170,座號:2
身高:160,座號:1

如果是我,我當下立馬會這樣答,
不過你現在都已經知道還有其他兩種case了,
就要連同他們一起答。

答2:
一般自建Class可透過下列方式使用Collection提供的排序功能:
(一)implement Comparable:
透過實現Comparable介面(interface),實作該interface的compareTo() method,如下例:

假設有三個學生,我們要讓他們按照身高排序。

public class Student implements Comparable{
//學生的屬性
int height; //身高
int number; //座號
//建構子,constructor
public Student(int height, int number) {
   this.height = height;
   this.number = number;
}
//因implement Comparable interface所以要寫的compareTo method
public int compareTo(Object a) {
      if(this.height>((Student)a).height)
              return -1; //-1表示後面a物件比較大
     else if(this.height==((Student)a).height)
             return 0; //0表示相等
    else
            return 1; //1表示後面a物件比較小
}
//覆寫這個method方便我們做列印
public String toString(){
      return "身高:"height+",座號:"+number;
}
public static void main(String[] args) {
//有三個學生,分別是a:身高160,座號1;b:身高:170,座號:2;c:身高:180,座號:3
     Student a=new Student(160,1);
     Student b=new Student(170,2);
     Student c=new Student(180,3);
     ArrayList arrayList=new ArrayList();
           arrayList.add(a);
           arrayList.add(b);
           arrayList.add(c);
    //排序前
   for(Student i:arrayList)
         System.out.println(i);
  //使用collections.sort進行排序
  Collections.sort(arrayList);
  System.out.println("排序後:");
  for(Student i:arrayList)
         System.out.println(i);
  }
}
列印結果為:
身高:160,座號:1
身高:170,座號:2
身高:180,座號:3
排序後:
身高:180,座號:3
身高:170,座號:2
身高:160,座號:1

透過implement Comparable,實作compareTo() method,以提供Collections比較的基準依據,
即可使用如上例中Collections.sort(arrayList)進行排序。
另,在compareTo() method中不使用將兩物件的height屬性相減,改以if判斷式是為了可讀性(readable)。

(二)使用Comparator介面:
上例中,亦可使用Comparator介面來實作compare()方法,如下例:
public class CompareByHeight implements Comparator Student>{

          public int compare(Student a, Student b) {
              if(a.height>b.height)
                    return -1; //b比較高,排前面
             else if(a.height==b.height)
                   return 0; //a,b一樣高
             else
                   return 1; //a比較高,排前面
           }
}
即可在main中以Collections.sort(arrayList,new CompareByHeight());方式排序。
(三)自建Class本身已繼承自已實現comparable的class:
直接覆寫compareTo()method即可。


因本題只有15分,斟酌著寫即可,程式碼占很大部分,實在無法刪除。

2012年4月17日 星期二

100年警察特考資訊處理三等第五小題解答(中)

在上篇我們提到了第一種的解決方式。
你可能會大驚!啥!那才第一種?
事實上,寫法有很多種,端看你的應用。

寫在前頭,如果你是為了考試,看上篇跟下篇就可以。
如果你是路過想要學怎麼用comparator,可以看上跟中篇

我們來想想上篇所說的那個排隊問題,
如果你今天是想要學生按照座號排呢?
相信你也很聰明,之道要改哪裡了。
但是如果你今天有時候想要讓他按照座號排,
有時候想要按身高,
那程式要怎麼寫?

當然不是叫你自創用:
compareToByHeight()
compareToByNumber()

這些method就可達成,因為Java的Collection看不懂
他只認得compareTo()。

那怎麼辦?
相信大家還有一個印象,就是上篇有提到API中還有另外一個sort():

static void sort(List list, Comparator c)

那個Comparator就是解答。

我們上篇有提到,Collection就是那個班長幫你排順序的人,
他的工作就是用很快的排序方法幫你排序,
但是你必須告訴他,
你的比較標準是什麼,
假使你今天同時可能有需要多個比較標準,
比如說你的應用可能一下子要按照號碼排,
一下子要按照身高排,
一下子要按照年齡排,
你就需要三個比較標準,
這個比較標準就是用Comparator去寫。

先來看一下Comparator的API:
java.util
Interface Comparator
又是interface,有2個method要implement(實作):
int compare(T o1, T o2)

boolean equals(Object obj)

Comparator API中有一個T的部分,
那個就是泛型(generic),
讓你可以放進去各式類別的,
以我們的例子就是放進去Student,
強烈建議大家可以動動腦想看看要怎麼用它,
再來看我的答案。

//比較基準1:身高
import java.util.Comparator;


public class CompareByHeight implements Comparator Student>{

    @Override
    public int compare(Student a, Student b) {
        // TODO Auto-generated method stub
        if(a.height>b.height)
            return -1;
        else if(a.height==b.height)
            return 0;
        else
            return 1;
    }

}


//比較基準2:年齡

import java.util.Comparator;
//後面那個Student的前面有個小括號,請自行補上,blog秀不出來

public class CompareByAge implements Comparator Student> {

    @Override
    public int compare(Student a, Student b) {
        // TODO Auto-generated method stub
        if(a.age>b.age)
            return -1;
        else if(a.age==b.age)
            return 0;
        else
            return 1;
    }

}


在main中測試:

         System.out.println("排序前:");
         //排序前印出來看看吧
         for(Student i:arrayList)
               System.out.println(i);


         //按身高排
         Collections.sort(arrayList,new CompareByHeight());

         System.out.println("按身高排序後(比較高的在前):");
         //排序完印出來看看吧
         for(Student i:arrayList)
                System.out.println(i);
        
         //按年齡排
         Collections.sort(arrayList,new CompareByAge());
        
         System.out.println("按年齡排序後(比較大的在前):");
         //排序完印出來看看吧
         for(Student i:arrayList)
                System.out.println(i);



以這個例子的設定,
將學生按照年齡、身高排,
看起來似乎有點像是資料庫可以照各種欄位排序,
在此提醒各位正在使用Java DAO、
或是各種Java Framework來存取資料庫的捧友們,
從資料庫拿出來,再排序,這樣的方法是蠻不智的,
請直接再查詢select資料庫時寫好指令即可,
ex:select * from students order by height;
因為DBMS在查詢時通常會加速,
除非你的比較規則很複雜,
像是女神挑男人一樣,
先比年收、財產,再比身高、帥氣指數(誤),
這樣才需要自己寫。

另外還要提醒您,如果你已經繼承了具有Comparable的class,
就直接覆寫就好了,如下例:


import java.util.ArrayList;
import java.util.Collections;


public class ManStudent extends Student {

    public ManStudent(int height, int age, int number) {
        super(height, age, number);
        // TODO Auto-generated constructor stub
    }
    int money;//年收
   
    public ManStudent(int height, int age, int number, int money) {
        super(height, age, number);
        this.money = money;
    }

    @Override
    //因implement Comparable interface所以要寫的compareTo method
    public int compareTo(Object arg0) {
        // TODO Auto-generated method stub
        if(this.money>((ManStudent)arg0).money)
            return -1;
        else if(this.money==((ManStudent)arg0).money)
            return 0;
        else
            return 1;
    }
   
    //覆寫這個method方便我們做列印
    public String toString(){
           return height+" "+age+" "+number+" "+money;
    }
   
    public static void main(String[] args) {
        ManStudent a=new ManStudent(180,19,3,200000);
        ManStudent b=new ManStudent(170,21,2,3000000);
        ManStudent c=new ManStudent(180,19,3,10000);
       
        ArrayList arrayList=new ArrayList();

         arrayList.add(a);
         arrayList.add(b);
         arrayList.add(c);

         System.out.println("排序前:");
         //排序前印出來看看吧
         for(Student i:arrayList)
               System.out.println(i);
        
       //按年收排
         Collections.sort(arrayList);
        
         System.out.println("按年收排序後(比較有錢的在前):");
         //排序完印出來看看吧
         for(Student i:arrayList)
                System.out.println(i);
    }
}

2012年4月16日 星期一

100年警察特考資訊處理三等第五小題解答(上)

轉路人甲之疑問:

五、Collection Framework(即Collection其subclass如ArrayList和LinkedList)都有提供排序的功能(即sort()的method或function),但都只限於數值型態(如Integer或Double等)或String所構成的Collection。請問如何讓一般Class的物件所組成的Collection也可以直接使用Collection所提供的排序功能?(Class需做那些事情?)(15分)(警三100)

路人甲說百查不解,請女神解釋。

這個問題問得很好,我想有用過c的lib者也大概知道要怎麼回答,故可以跳過這篇說明,直接看下篇即可,這邊先針對java到底要怎麼實作這件事情來做個更詳細的介紹。

首先,我們來解釋一下題目的意思。

一般我們想要對一個數字陣列排序,你會怎麼做?

int array[]={1,3,1,5,9};

方法1:

話說我們曾經在資料結構裡面,學過一堆演算法,比如說泡沫、heap等等,當然,你可以自己寫,不過,實際工作時我們可不會這麼.....蠢,這種事情,別人當然寫過,所以你可能的做法是:

1.上網複製別人的sort method

public void heapSort(int arr[]){
...
}

2.每次要用的時候都call他

heapSort(array);



方法2:

事實上,你不必這麼搞剛,物件導向的書裡面有一句名言:別自己創造人家做過的輪子,套句鄉民的話就是:這種事還是交給專業的來吧!

Java有一個類別叫做Arrays,他裡面就有專業的sort會幫你處理:

Arrays.sort(array);

人生就是這麼簡單。
Arrays提供一些簡單的型態(int, double...etc)排序方法,讓你丟進去就可以排序,而且排得很快,請詳見API
你可以比較看看,專業的跟你自己寫的,誰排得比較快,答案當然是專業的。


方法3:

那題目的Collection是在做什麼的?

客官有所不知,一般來說,我們Java使用者,不太喜歡用array,比較喜歡把ArrayList當做array在用。
為什麼要這麼做?因為ArrayList很方便。
他有動態array的優點,你只消丟給他元素即可,不需要去管他現在總共有幾個元素,也不用配置記憶體(雖然Java也不給用),想知道array總共有幾個元素也只要call他的method就可以知道,總之,ArrayList會幫你管理array。

比如說,咱們題目的

int array[]={1,3,1,5,9};


就可以把它變成ArrayList:

ArrayList a=new ArrayList();
a.add(1);
a.add(3);
a.add(1);
a.add(5);
a.add(9);

如果你會看API(你必須同時去看ArrayList跟Arrays的API),自然不需要這麼...蠢,直接用這個
ArrayList a=new ArrayList(Arrays.asList(array));
就可以得到ArrayList a了。

然後你要怎麼排序呢?
題目說要用Collections,你查了API裡面有二個sort,順便教大家怎麼看api:

static void sort(List list)
static void sort(List list, Comparator c)

在大家不會使用2號sort之前,我們先來看1號sort,他說他只能接受List這個class。
我們查一下List的API,會發現他其實是一個抽象的interface,底下有很多實現他的class,包含我們的ArrayList:

java.util
Interface List
All Superinterfaces:
Collection
All Known Implementing Classes:
AbstractList, ArrayList, LinkedList, Vector

所以我們可以很沒有問題的塞ArrayList進去sort(List list) 這個方法,把他排序一番,使用:

Collections.sort(a);

排序就完成了。
不過就像題目說的,他只能排序一些他知道怎麼比大小的類別,比如說int,double等等一些常用的,還有Java本身提供的一些常用比大小的類別,其他你自己訂的類別,當然就要你自己想辦法了。

這個道理很簡單,Java怎麼知道你的class,到底要用什麼來當做比較基準阿?!XD

舉個例子來說,回想一下你小時候學生排隊伍升旗的情形,是不是一開始總有一個指揮者,比如是班長之類的,先按照大家的身高來排隊?

你可以想像那個指揮者就是Collections,每一個同學都是一個Student類別的Object,比較的基準自然就是身高了。

我們先來將這個例子轉化為code:

public class Student {
   
     Student(int h,int a,int n){
              height=h;
              age=a;
              number=n;
     }

     int height;   //身高
     int age;  //年齡
     int number;  //座號
}

public static void main(){
    Student a=new Student(160,20,1);
    Student b=new Student(170,21,2);
    Student c=new Student(180,19,3);

     //弄三個學生物件就好,不然好累=口="
}

現在我們把這三個學生按照身高排,問題是,要怎麼排呢?

當然你可以用方法1,把程式碼內比較的基準改成student.height:

public static void heapSort(Student s[]){
    .....
    if(s[i].height> s[j].height)
     .....
}

恩,我想你也知道,如果按照這種寫法,絕對不夠專業,這種事情讓專業的來就好了,問題是怎麼請出"專業的"Collections來幫你排序呢?

我們剛剛有提到,你把Collections當做那個指揮者,叫他幫你排序,如果你只要告訴他,我要以什麼基準當做排序的標準,讓你去幫你排,那該有多好阿!

比如說,我們告訴他比較的基準如下:

if(studentA.height>studentB.height)    
     return A比較高
else if(studentA.height==studentB.height)

     return A跟B一樣高
else
     return A比較矮

告訴他判斷的標準,然後他就會自己用Collections.sort幫我們排好,事實上,只需要告訴他這個判斷的method:

if(studentA.height>studentB.height)

          return -1; //1表示後面比較大
else if(studentA.height==studentB.height)
          return 0; //0表示相等
else
          return 1; //-1表示後面比較小

他就會自己處理了。
告訴他的方式,首先,你要透過Comparable這個interface去跟Collections溝通,跟他說你準備有一個判斷標準,寫在compareTo這個method中,叫他去用:
public class Student implements Comparable{

     Student(int h,int a,int n){
           height=h;
           age=a;
           number=n;
     }

     int height; //身高
     int age; //年齡
     int number; //座號

     public int compareTo(Object o) {


             if(this.height>((Student)o).height)

                        return -1; //-1表示後面比較大
             else if(this.height==((Student)o).height)
                        return 0; //0表示相等
             else
                        return 1; //1表示後面比較小
       }
}
簡單的說明一下在這裡實現compareTo()這個method的技巧:

1.API裡面寫到
int compareTo(Object o)

所以我們要實現,你就一定要照這個介面寫:

   public int compareTo(Object o) {

   }


2.但是compareTo竟然接受的是Object類別!所以我們只好靠強制轉型((Student)o),以取得他的身高屬性height,所以才會有:

if(this.height>((Student)o).height)



這樣的寫法。
做完這樣的設定後,你只要按照剛剛的ArrayList寫法,就可以讓他們按照身高排序了:

ArrayList arraylist=new ArrayList();
arraylist.add(a);
arraylist.add(b);
arraylist.add(c);


Collections.sort(arraylist);

因為後來作者跑去護膚了,所以你看不到我,有人今天寫信來跟我說我有弄錯,如果你需要完整的程式碼,請洽下方:
import java.util.ArrayList;
import java.util.Collections;


public class Student implements Comparable{

    //學生的屬性
    int height;    //身高
    int age;    //年齡
    int number;    //座號
  
    //建構子,constructor
    public Student(int height, int age, int number) {
        super();
        this.height = height;
        this.age = age;
        this.number = number;
    }

    @Override
    //因implement Comparable interface所以要寫的compareTo method
    public int compareTo(Object arg0) {
        // TODO Auto-generated method stub
        if(this.height>((Student)arg0).height)
            return -1;
        else if(this.height==((Student)arg0).height)
            return 0;
        else
            return 1;
    }
    //覆寫這個method方便我們做列印
    public String toString(){
           return height+" "+age+" "+number;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student a=new Student(160,20,1);
        Student b=new Student(170,21,2);
        Student c=new Student(180,19,3);
        ArrayList arrayList=new ArrayList();

         arrayList.add(a);
         arrayList.add(b);
         arrayList.add(c);

         //排序前印出來看看吧
         for(Student i:arrayList)
               System.out.println(i);


         //排序中
         Collections.sort(arrayList);

         //排序完印出來看看吧

         for(Student i:arrayList)
                System.out.println(i);
    }
}
已compile測試過沒問題。
有問題再跟我說,這篇還會有中跟下,上跟中適合java學習使用者,下集會講怎麼寫這個題目,至於更新時間嘛...看我的心情XD。

補充:對了!順道提起一件事情,事實上,c++的得意使用者,可能會跟我說,compareTo()那個這樣寫就好了:
public int compareTo(Object o) {

        return ((Student)o).height-this.height;
}

的確這樣也是有同樣的效果,但除非你是因為要寫driver(有人會用java寫driver?),是效能導向,否則很不建議你做這種事情,因為"可讀性",請體諒一下接你code的人,在沒精神之下還要幫你看code的同事吧!。

2012年3月25日 星期日

再論資訊處理選填志願

再論資訊處理選填志願
這有啥好論的?XD
基於許多人來信說:"自由心證,求神拜佛"八字太過抽象,
希望我加以解釋,
加上本人的"經驗"又較他人多豐富一咪咪(淚),
只好提供拙見供大家參考,
以下拙見,為本人以己之淺見觀察,
不符之處,請多包涵體諒。

1.交通資位制:
交通部所屬的都是這個體制。
沒有月退,薪水聽說不高。
進去之後"聽說"不能轉調其它非交通部的單位。
工作操勞程度不知,沒待過。
原則上應該要特考特用的單位,
但考試法規定他們可以"寄生"高普考的缺,
所以你會在近年來看到他們的缺在高普考上。

2.央行:
聽說不錯,有行儲13%,但沒有月退俸。

3.港務局:
這個不算公務體系吧?
要變成法人了。
聽說薪水高、工作較為合理,
但一樣沒月退俸。
同理,不能亂調別的地方。

4.關務體系:
常調動,新人如果不是在總局,
就是要幫忙驗估,風險較大,
但薪水較高。
三年可調財政部底下所屬單位,
三年後可調至外機關,
(本項綁約規定已經從2+4改成3+3了)
另外,外機關想調進來這體系是不可能的,
這裡一定要特考特用。



5.榮民醫院體系:
行政院退輔會底下的單位,
因為長期使用聘用人員領導資訊室被糾舉,
這兩年才開放此缺。
醫院體系,多要on call,因為有急診及夜診。
此一兩年榮民醫院體系多有整併,
故職等不高,但會有額外醫院津貼。

6.地方政府:
除地屬偏僻外,現地方政府資訊人員相當辛苦,
有的屬xo局處底下,一人要掌管所有資訊系統。
如你在民政局,要統籌規劃民政局專用系統業務,
資訊人員又不多,
還要配合資訊中心網頁、公文等等的系統業務推動,
可能還需要負責設備問題。

看到資訊中心也別太高興,
現在幾乎所有地方政府資訊中心、資訊處,
負責全地方政府,包含所屬公所的電腦設備、系統,
網頁、公文系統都要全包,
有的地方政府還要幫忙辦理人事處、財政局、xo處等等的系統,
加上除台北市以外,幾乎都是隸屬於研考會底下,
職等不高、工作辛苦,
在此向這些單位人員深表感佩之意。

7.中央單位:
中央單位的總部,如財稅資料中心等,
大部分體制良好,高職等的缺比較多,
有"向上提升職等"者可以考慮。
但工作相對繁重,加班單位多。
採購及業務推行都非常有制度,
"黑"的情形不多,個人認為新人練功,
如不考慮地點,可考慮中央單位。
中央總部的缺點就是都在台北市。

中央單位的地方缺,
體制也不錯,
所以如果有缺,
多半是有'原因'的開缺,
建議填缺前先詢問,
以避免誤入歧途。


這些考試缺怎麼來的?
大家考試進入了這個體系就會有更深刻的了解,
綁約結束後就可以商調,
當然單位有缺人,一定會先走商調的體系,
用商調的人,比用考試缺來講,
不用等分發,自然快得多。

什麼缺會"必須"或"願意"等考試缺分發?
你仔細想想自然可得知。

如果你想要一張入門票,當然沒問題。
但是想說進來就可以"涼爽",
如同外界對公務界的誤解一樣,
想要魚與熊掌兼吃,
那你可能要換個人生計畫方向比較快。

以上這些都是僅供參考,
資訊也不一定正確。
我想,不會有人比你更清楚知道你想要什麼缺,
要記得,每個人想要的條件不一樣,
別人的"好"不等於你的"好",
像我覺得"好",就是在我家附近,
或許你可能覺得,往上升得快才是重要目標。

打聽沒有關係,但打聽完了,
請回到八字奧義:
"自由心證,求神拜佛"。

2012年3月20日 星期二

100年關務三等資料結構第一大題前三小題解答

100年關務三等資料結構第一大題前三小題解答
有人來信問到此題,在此做個整理解答,希望可以幫助更多人。

題目請參閱考選部考古題

答案:

第一大題:

建議你先找binary search tree有關successor定義的資料
wiki說:
As with all binary trees, a node's in-order successor is the left-most
child of its right subtree

也就是,successor是那個點的in-order排序下來的下一個,
換句話說就是指,binary tree拿去排序的話,
就是下一個比他大的。

這樣問題1,2小題,在問什麼就很清楚了,回答數字即可。
(一)35的successor? 那當然是50了~
(二)50的successor? 那當然是55了~
(三)pseudo code:
successor會在哪邊?

有兩種情形:
1.他右子樹(right sub-tree)的最左邊的child node,亦即比他大,根據binary tree定義,
會在他的右子樹,但是又是剛好比他大一點點,所以是右子樹裡面最小的,
也就會在最左邊的子樹。

2.萬一他沒有right sub-tree?表示他是這個某個元素左子樹中,最右下端的元素,找到那個元素即可,
亦即,往上尋找他的父點(parent),直到找到,此元素在他的左子樹(left sub-tree)中。

Goal: 尋找某一Entry e的successor
Input: Entry e,根據此Entry找successor
Output: Entry x,為e的successor

Entry successor(Entry e){


if e has right sub-tree, //情況1:如果e有right sub-tree

//successor x在他的right sub-tree的最左下端的元素

find the left most element x in e's right sub-tree. 


else //情況2:e沒有right sub-tree

//successor x為:往上找此e元素的父點,直到找到第一個讓e在x的left sub-tree中。

find e's parent node x until e in x's left sub-tree. 

return x. //x即為e的successor


}

老樣子,綠色部分是答案,如有錯誤,請指正。

心想事成的秘密--考取發願篇

認識我的人,知道我最近正熱衷於靈修,
原本我也很排斥,覺得這是很無聊~想打哈欠的事情。

記得前幾天,我曾經寫了一篇動機篇,
後來又刪除了它,原因無它,
只因它是我負面能量之下的產物,
不要讓它再去傷害看到的你。

我很感恩上天讓我認識了張德芬老師的書,
透過他的「心想事成的秘密」一書,
我慢慢知道,為什麼我雖然會考上,可是卻不如我願。

因為動機不對。

這是一篇混和我自己的故事,
如果你有興趣,可以再往下看,
或許你可以藉由一些蛛絲馬跡,
來找尋自己的動機,正確的發願。
希望這篇也能夠幫助你自己正確的發願,如願的走上你想的路。

考試的時候,很多人專心一志,
沒有想過關照自己的心靈,
我也一樣,
我想考上的動機,出自於怨恨、不要什麼什麼,
那是一種負面能量,當然不成願,
或許表面上我成功了,但我還是不快樂。

一開始我想考公職,
是因為我"不想要那種業界不好的風氣",
我當時遇到的都是"不好的上司",
所以我發願:"我不要再遇到不好的上司了",
因此我考公職。

這個動機發的願很有趣,
根據宇宙的定理,你越專注於不好的能量,
祂就會回應"那個"給你。

對於考試能不能上,
我倒是沒有想法(也就是零),
樂觀的覺得沒有問題,
宇宙的運行法則也回應了我,
祂讓我考上,
但是考上的缺,
卻是不好的上司。

因此,即使我考上再多次,

我還是會遇到"不好的上司",
因為那就是我的"人生功課"。

僅有一次例外,
就是去關稅總局,
他們上上下下真的對我很好很好,
我非常感恩感念,當時的時光,
我的上司、我的學長學姊、我的科長。

現在回想起來,這個例外,
對我來說其實是個意外,
我對這個考試的想法完全是個"零",
考上也好、考不上也不差,
真的就是個"沒有欲望"的考試。

難怪宇宙回應我,讓我考上,
還給我這麼好的安排,
然而我卻不懂得珍惜,
又因為一些怪原因跑掉了。

宇宙真的很奧妙,
我向祂下了訂單,我說:
我想要考上,因為我不想再遇到不好的上司。
 
祂回應我:
我讓你考上,還有不好的上司。
 
你越不想要的,它的能量越專注,
於是宇宙回應你。
 
太有趣了!
 
所以你用"不要..."去發願,那個不要的東西必定實現。
 
那要怎麼發願才會如願?
 
很多書上說,不可專注於"不要....",
因為那是負面能量,也會實現。
把它轉化成正面肯定句,例如:
"不要加班"-->"我要正常上下班",
但是這樣還是不會實現,
因為你沒有達到"讓大腦享受達成的狀態"。
 
大腦分不清楚,到底有沒有實現,
就算你沒有正常上下班,
也要想像你已經實現正常上下班的樣子。
 
把句子改成:"我已經正常上下班了"。
 
然後去想:假如我做一個正常上下班的工作,
那會怎麼樣?
我會在下班時看到夕陽,
它真的很漂亮,這時我可能會感恩,它好美,
感謝我的工作,這麼正常,還仍讓我看到夕陽。
下班後,你跟家人一起吃飯,很快樂,
你也感恩上天給你一個這麼正常的工作,
讓你有時間可以陪家人,飯後還可以散步運動,
還可以慢慢沐浴、冥想,享受充足的睡眠。
 
不要忘了要感恩這一切。
感恩,他所散發的愛的訊息,
讓宇宙會用盡所有能力去幫你把事情實現。
 
你為什麼要考公職呢?
有人說因為想要穩定的生活。
 
什麼是穩定的生活?
你仔細想過嗎?沒有仔細想過,
宇宙也不會幫你,那太籠統了,
搞不好你的願望還互相有矛盾呢!
 
想像你考上後的生活,越細越好,
感恩讓你考上的這一切。
 
你的發願必須充滿愛,利他,才有可能實現。
不要充滿著負面的能量,
否則也會實現考不上的願望。
 
除此之外,還必須要"清理"你考不上的"情緒"、"思考"、"記憶",
可能是"恐懼",你害怕你考不上,
你越害怕,真的就越考不上,
不要去壓抑你的害怕,不要罵他,不要責怪他,
就是跟他相處,然後跟"害怕"說:
我看到你了!我很愛你!我可以接納你!
 
我不會有這種恐懼感,
(我從來不覺得自己考不上啦!根本連想都沒想過)
所以我很容易考上。
假設你有這種恐懼感,不妨每日做個練習,
考前的十分鐘也可以做個冥想,
去接納你的"害怕"。
害怕只是一種情緒,他會來,也會消失。
所能做的,只有愛他、接納他。
 
願你也能夠破除你的模式,早日考上。

2012年3月7日 星期三

考試進階技巧之一--問題背後的問題

考試進階技巧之一--問題背後的問題

接下來這個奇怪的系列是在講比較進階的考試讀書技巧,
預計應該不會很多吧?
反正我不知道該放在哪的就會擺這就是了XD

這篇要講的是"如何問問題"。
怎麼問老師、問教授、問同學、問高手,
在這篇都會跟你說我的看法。

你對於問問題有什麼想法?

1.「啥?問問題有什麼難的?」這是第一種人,有勇氣問問題的想法。
2.「我不敢問問題......」這是第二種人,為數也不少,根本就不敢問。

問問題人人都會,
但是能夠在問完後,
學習到你問題的解答,
這種人卻非常少。

為什麼?因為你不會問問題。
問問題是有技巧的。

你覺得老師不會教書嗎?只要你會問問題,所有老師都是名師

很多人對於名師的意義,
就是很會教書的老師。

有的老師很厲害,
其實他懂得不多,
可是他很會了解不懂的人的心理,
可以幫助學生從不懂到懂,
這種人你看補習班的名師就可了解一二。

但是再怎麼會教的老師,
你還是會有不懂的地方,
可能是你沒仔細聽,
又或者是你就是沒辦法參透,
可是有些人,就是不敢去問老師。

其實只要你鼓起勇氣去問,
就算你真的很不會問問題,
你也會發現,
至少會比原本多了解一些

如果你鼓起勇氣去問老師,
你就會發現,
原本你認為很不會教的老師,
他們回答你問題的時候,
甚至比補習班老師還強,
他們懂的東西,常常很多、很廣,
學到的東西,往往比上課得到的更多,
所以,如果你不敢去問老師問題,
那你真的是虧很大。

學習考試,你發揮老師最大的功能了嗎?

求學時代,每一科都有老師,
不知道你喜歡問老師問題嗎?
還是你覺得:老師好煩?
本來我也覺得老師沒什麼,
可是等我自己因為要考國考,
自修自學時,才發現老師真的很重要。

有老師來可以做什麼?
我們來看看孔子對老師的定義:
「師者,傳道、授業、解惑也。」
意思就是說老師的工作就是,
要教書、告訴你道理,
還有最後一個,也是我認為最重要的:
要解決你的疑惑。
你不去問問題,就等於斷送自己的分數,
也浪費了老師存在的最大意義。


有老師可以問,真的很幸福

為了國考,
有一些科目我必須自學,
但是我常常會覺得:我到底了解的對不對?
以前求學時代還有老師,
現在,要怎麼樣才能找到一個老師讓我問?

這一直是我自修時的課題,
很無奈的,
如果沒辦法找到一個該領域的教授來問,
光靠自己的學習,
真的很難突破閉門造車的瓶頸,
會反映在你的分數上,
就是那麼的固定,
很難突破性的上升。

所以如果還有教授、老師、甚至是補習班,
可以讓你問的,真的很幸福,
請你一定要把握問問題的機會,
不要再害怕了,
套一句比較市儈的話:
你繳的錢,有一部分是要拿來付問問題的費用,
不問的話,就浪費了。

以上是寫給不敢問老師的人,
跟你說不問問題,光靠自己,
不但分數沒辦法突破,
還浪費自己的錢,
這樣都沒辦法說動你,
我也不知道要怎麼辦。

至於本來就敢問老師的人,
你會問問題嗎?


問問題的技巧:先說自己的解釋,再聽老師的說法,聽完再自己解釋一次

你有沒有遇過一種人,
他會直接問你:「我就是不會這裡。」
「我整個都聽不懂。」
這種問問題的方式,
你會得到老師再播放一次剛剛上課的內容,
如果你是因為剛剛上課沒仔細聽,可能會聽得懂,
可是如果你剛剛就很認真聽了,
那我保證你再聽一遍也是聽不懂,
很多學生聽完後,會說個:「喔!我懂了!」,
然後問題就到這裡就結束了,
還是沒弄懂你的問題。

上面模式的問題出在哪?
原因是你沒仔細思考你的問題點,
沒把你的解釋告訴老師。

你會想說,阿我就真的整篇都不懂阿!
我親愛的捧友,再怎麼不懂,
管他三七二十一,
先就標題,還有你剛剛囫圇吞棗吸收的,
亂掰你自己的想法給老師聽,
在你亂掰的途中,
你就會漸漸發現自己最不懂的點在哪,
老師更有經驗,
他會比你更快發現,
慢慢幫助你解答。

所以拜託你不要隨便丟一句:「我整個都不懂」
少說也要隨便掰個幾句,讓老師知道你大概問題在哪。

如果你順利展開你的問題,
老師就會很順利的解決你的疑惑。

但是!霸特!
你以為問完,這樣就結束了嗎?

這時,你一定要再重複一次你剛剛了解的東西,
我都會跟老師說:
「老師!你聽看看我這樣了解的對嗎?」
然後我就又重新用自己的話,講一次給老師聽。
這時才是重點。
非常有學問的老師,會在聽完後,
告訴你,你的錯誤盲點在哪,
聽完討論完之後,
記得還要再次重複你的說法給老師聽,
就是這樣不斷的迴圈repeat,
直到老師說:「沒錯!就是你想的這樣!」
才可以告謝老師離去。

如果你每科的疑問都這麼做,
我保證你每一科都會很高分,
因為你得到老師的真傳了阿!
相較於別人只會聽課,
你吸收的,可是更多更多呢!

而且附加的優點是,
你會跟老師非常好,
假設你有需要他的一天,
(通常是寫推薦函)
他絕對會義不容辭的幫助你的。

記得保持你的禮儀,
不要叫老師:喂!
還是用很跩的三七步問他,
不過,我想你不會吧!


勸你最好問老師,不要問同學

求學階段我都會用上面問問題的方式,
不管是人家說多爛多不會教的老師,
我都會去問他,問久了就會發現,
他們真的很強!滿腹經綸,等待你開發呢!

以前學校曾經派我跟學弟妹說明我怎麼讀書的,
我跟他們說:一定要學會問老師問題!
還有盡量不要問同學,最好問老師。

台灣的學生不知道為什麼很害羞,
好像很怕老師笑自己不懂,
只敢問同學,不敢問老師。

我親愛的捧友阿!
你是學生耶!你當然不懂阿!
你如果懂的話,那你就當老師就好了,
幹嘛他當老師?
老師就是用來讓你問的阿!
他怎麼會笑你?

相反的,因為台灣學生太不愛問問題了,
所以老師反而會很喜歡問他的學生。
(前提是你的禮貌要好)
我問問題這麼久,
不管是再怎麼嚴肅的老師,
從來沒有遇過,
一開始會跟我說過:「怎麼連這個你都不會?」的老師,
老師總是脾氣很好,很有耐心的跟我解釋。

在這邊要提點大家一件事情,
老師裡面也有情緒控制不佳者,
他們也是人,如你很倒楣遇到這種老師,
請洽別的老師詢問,通常一個學校裡面,
不會只有一個領域專家。

但是請記得盡量不要問同學,
為什麼我說不要問同學呢?
因為她們跟你一樣,
也是原本不懂的人阿!
功力跟老師根本不能比,
如果你不想得到錯誤解答,
就不要問同學了!

以前我同學都會來問我,
我都會跟他解釋後,
跟他說,要不要我們一起去問老師?
就是怕他理解錯誤。


錯誤的問法一:不要想考倒老師,只要專注你的課堂或題目疑惑點即可

有些學生很奇怪,
似乎很喜歡跟老師做對,
偏愛問老師尖銳的問題,
以考倒老師為樂。

恩~這對你沒有用好嗎?
別再做這種事了,
先把你的課業搞懂吧!


錯誤的問法二:上教授的課,不要亂問國考的題目

捧友們!如果你很有福氣,
不是去上補習班的課,
而是可以上到正規教授的課,
請不要直接拿國考的題目去問他,
他沒有義務幫你解答這些問題,
真的想問他,
請口頭提問題,想好解法,
再去問他。

改編問題的技巧不好,
通常老師會問你:這題是從哪來的?
你怎麼會有這種問題?

你可以老實回答你要考國考,
或是編個你要考研究所、博士班的考題之類的,
但是老師也有權利不回答,
不過我很少遇到,看到你連解答都想好了,
還不幫你的老師就是了。


總歸一句,誠意最重要
你有求於人,人家會不會幫你,就是看你的誠意了!

100年關務資料通訊第八題(二)

100年關務資料通訊第八題(二)

八、(一)試說明NAT伺服器的運作原理。(10分)
(二)試問何謂靜態NAT與動態NAT?(5分)

我們來看看被作者發懶遺忘的第二題。

在作者找理由休息的同時(爆),
好友甲、乙都自動幫忙蒐集好資料了,
我們就來看看準上榜者發表的內容。

首先,我們就先請各位對第二題的內容先有初步的了解,
請詳見這裡
(對作者真的很不好意思,如果作者覺得不妥,我可以移除)

這一題對當時的考生,大部分都是新考題,
從來沒看過NAT會這樣考,所以大部分都亂答,
包含本人,上篇也說過,我得到0分,
但友人丙也不知道,
亂掰卻得到滿分,
等下會公開他口述後的答案。

回來的時候我有稍微查資料,
可能是關鍵字下錯,
查到的資料不太對,
在這邊提供大家關鍵字:"dynamic NAT",
可查到上面那篇文章。

強烈建議你查到剛剛那些資料,
可以多看多想這幾點:
1. static跟dynamic的差別在哪?
2. 這兩個是要拿來做啥的?
然後在自己蒐集整理你的筆記,
接下來,你就可以來嘗試自己解題,
再來比較跟我貼的這三位捧友,
還我個人的答案有何不同?


答案一:(友人甲提供)

(1)靜態NAT:

簡單來說就是內部私有IP個數等於外部IP個數。而外部IP會對應到固定的內部IP。

(2)動態NAT:

則是私有IP個數大於或等於公有IP個數。IP的對應方式是藉由維護一份動態表格,而每次外部IP對應到的內部IP可能都會不一樣。
(綠色部分為友人甲提供)

解析:
原則上當年因為大家都不會,
所以這樣寫有可能得滿分,
但是建議可以加上藍色部分排版。

答案二:(友人乙提供)
(二)
1.靜態NAT

    (1)定義:採用一對一組態設定,即一台設備使用的Private IP對應到一個Public IP
    (2)優點:較少維護NAT Table,傳輸效率較動態NAT佳
    (3)缺點:單一Public IP的使用僅限某一設備,無法彈性使用

2.動態NAT
   (1)定義:有兩種作法。
        a.採用多對一組態設定,即多台設備使用數個Public IP來連線到同一外部主機
        b.採用多對多組態設定,即多台設備利用數個Public IP與Port來連線不同主機
   (2)優點:
        a. Public IP的利用率較靜態NAT佳
        b.可隱藏內部設備的連線,避免被入侵破壞
   (3)缺點:需時常維護NAT Table,傳輸效率將會受到影響

解析:
很OK的做法,當年寫這樣應該就會得滿分了吧?
 
友人乙另外提供表格式做法,因很難弄在這個blog上,所以就不附了。


答案三:(友人丙提供滿分做法,此為口述,原答案友人丙早忘了)
(二)
  1. static NAT:
      每個內部網路未註冊private IP,
      皆只會對應到一個註冊public IP,固定不會更動。
  2. dynamic NAT:
      每個內部網路未註冊private IP,
      對應到的註冊public IP,會有所更動,
      並非固定不動,而為浮動的IP。


據友人丙的說法,當時他還有畫圖,
圖形是啥友人丙說他早忘光了,
所以不得而知。

解析:
雖然友人丙當時只是依照"static"和"dynamic"的修飾字,
(本來static在computer science中就是"固定的",
相反詞為dynamic,就是"浮動的",
至於哪裡是固定的,哪裡是浮動的,
友人丙就猜是對應到外面的ip)
在完全不知道的情況下,
猜猜看其定義,但是被他掰中了。

如果是這樣寫,
依當時大家都不會的狀況下,
難怪會得滿分。

這也就是我說,
就算不會也要掰的原因,
考卷上一定會有一兩題不會的,
不要緊張,
看一看題目,
想一想有沒有靈感,
亂掰就是了,我也常掰中,
只是這次沒猜中。


答案四:(自製)

你喜歡哪個呢?

誰會得滿分?
依照當時的標準,
或許四個都可以吧?
但是這題已經考過了,
你就要想想,
再出的話,
你要怎麼寫,
才會贏其他人

綜合解析:
本次題目因為只有5分,
所以我想只要你的排版還ok,
內容上面,這四種答案都沒有問題的,
有些篇幅太長,
不符合"只有5行"的限制,
但是因為這題是最後一題,
考量你最後的時間、考券空間,
來思考你所需要的答案吧!

給還需要考試的考生:
看完這題請趕快去蒐集NAT的資料,
整理成筆記,
接著再去做NAT五年內的考古題。

2012年3月6日 星期二

100年關務資料通訊第八題

100年關務資料通訊第八題

越來越多人來信問我個別問題的解答,
捧友阿!你問我沒有關係,
不過麻煩你可以看一下我的成績,
如果你來信問的那題,剛好我抱鴨蛋,
那我也只能提供"參考解答",
僅供參考,老師不喜歡,不負任何責任。

如果你想知道老師大概會怎麼改分數,
請看這裡

我們來回歸看來信的題目:
100年關務資料通訊第八題

八、(一)試說明NAT伺服器的運作原理。(10分)
(二)試問何謂靜態NAT與動態NAT?(5分)


本題個人拿9分,
考試當時因為第二小題完全不知道那是啥,
所以估計當時應該是(一)拿9分(二)亂掰得0分
到這邊你可以知道,可能我等下的第二小題,僅供參考,
有誤者,請見諒。


Step1:拿題目先看要寫多少篇幅

如果你忘記或是沒看過怎麼估篇幅,請看這裡
根據理論,第一小題有10分,
所以寫大概10行。
同理,第二小題有5分,
所以大概寫5行。
可以多寫,不要少寫。

如果你已經超越不知到要寫什麼的階段,
可能會來到不小心寫過多的階段,
考卷甚至還不夠用,
親愛的!你要學會節省篇幅寫答案。

10行的答案,大概最多15行已是極限。
5行的答案,最多寫10行是極限。
要學會控制好時間篇幅,才有機會寫其他的題目。


Step2:寫題號

你一定覺得我在講廢話,
但是有人真的不知道題號怎麼寫。
如果你有考過,你就會知道,
答案卷最左邊那一行,
是給老師改分數用的,
不能寫字。
第二行,是給你寫題號用的,
通常我會寫大標。
如下:

┌─┬──┬──────────────────────┐
│     │八. │(一)、                                             │
│     │      │             ......                │
│     │      │(二)、               │

某位好友,這段就是寫給你看的啦!



Step3:寫答案

我們先來看第一小題,
信手拈來路人甲的答案是:
(一)
當內部電腦想連接至外面的網路時,
NAT會將其轉換成外部正式IP位址,
當外部伺服器回應此台電腦時,
再查表將欲傳給其外部IP位址的封包,
轉傳給內部電腦。

以上並非原來信者的答案,
為本人自創編寫。

本人答案是:
(一)NAT server的運作原理如下:


NAT server主要為提供轉換public IP與private IP的服務,
舉例如下圖所示:


NAT轉換public IP與private IP的服務步驟如下:
(1)內部電腦對外部公有網路(public network)的某server發出request,
例如http request取得網頁資料等。
(2)NAT將其packet的source IP,
從192.168.32.10轉換成public IP:140.117.123.34,
然後丟到public network中。
並且在NAT table中建立此public IP與private IP的對應。
(3)外部server處理完後丟回packet,NAT收到後,
查詢table得知其private IP為192.168.32.10,
並將此packet的dest. IP(目的IP),改成192.168.32.10,
再丟給內部網路中。

我親愛的朋友們!
如果你是老師,
你要給路人甲和我的答案,誰比較高分呢?
我想不用我說了吧!
但是你說路人甲比我不懂嗎?
那可不一定喔!搞不好人家還是NAT driver programmer呢!

這就是寫答案的眉角啦!

重點一:看清楚人家的問題

NAT是一個網路大重點,
有在看考古題的人都知道。
事先準備當然不在話下。

不過有人很喜歡把準備的都"貼"給老師,
讓老師自己撿喜歡的看,
以為準備的萬無一失。

但是老師可不這麼想,
他會覺得你沒看懂題目問什麼,
隨便亂回答想要虎攏他,
成績自然拿得很低,
給你2分3分同情分已不錯了。

所以很多人會覺得自己已經準備的很多、
念得很多、寫的也很多,
為什麼分數這麼低?
捧友阿!題目你看清楚了嗎?

人家問你的是:server的運作原理。
你如果貼上NAT的定義、優缺點、應用在哪邊,
你覺得會得幾分?
最重要的server步驟一定要寫出來,
其他如很重要的優缺點、定義、應用等等,
有空閒、有空間再寫也不遲。

重點二:一圖勝萬語

這個理論我之前文章也提過,
想辦法畫個圖吧!
人類很不爭氣的,
都會比較想要看到圖,也就是真相啦!

你問我考試怎麼畫出像上面這麼精美的圖?
我考試還畫得比這個精美呢!
工具就可以啦!畫個長方形,甚至是那朵雲,不用1秒。


重點三:有圖一定要說明

不要以為畫圖就可以矇騙老師,
還是要講解一下的,
就如同我下面的文字,
很清楚,老師自然就沒意見了。


第二小題靜待晚點分曉,
希望你可拿著我寫好的解答,
參考我去寫的這幾篇,
好好想想,你要怎麼寫答案。
1.考試技巧基礎系列之三--寫答案是有技巧的

2.考試技巧基礎系列之四--考題配分與作答時間及篇幅的關係

只要多加練習,你的答案很快就會超越我了。

考試迷思系列之五--別人的筆記比較香?要不要借給同學筆記?

考試迷思系列之五--別人的筆記比較香?要不要借給同學筆記?

你猜不透我,我一天更新兩回,也可以發懶半個月都失蹤。
捧友阿!你們要來信阿!不然我會沒靈感更新的。
(這百分百是實話)

老慣例,來檢視你有沒有這些想法:
1.同學的筆記好完整,借他的回去影印就好了,反正自己也沒作的比他好。
2.跟考上的朋友要到筆記,再拿去印,我也可以看到"武功祕笈"而考上。
3.同學好討厭,又來跟我借筆記,我才不想借給他我的心血,免得他考比我好。
4.老師上課好快,黑板上的筆記都來不及抄,我還是先抄筆記好了,免得抄不完。

照往例,提供我的想法供你參考:
1.借回去的筆記,影印完後,真的仔細翻過的有幾次?
2.同上。就算你有翻,你真的有看懂嗎?
3.我的好捧友,人家可以借你的筆記,沒辦法借你的腦袋,不要擔心,如果他沒有自己重做筆記,絕對不可能考比你好。
4.上課狂抄筆記完全不推崇。


筆記可以借,整理筆記的頭腦不能借

相信你一定聽過考上的人講過:做筆記很重要
不過好像很多人都不了解,
為什麼做筆記是考不考得上的關鍵,
甚至連考上的人,可能也不了解,
更別說是沒考上,會錯意這句話的人。

所以有許多人,汲汲營營於收集各式各樣的精美筆記、
考上的人的筆記,
花大錢者,甚眾,
有些人,也抓住此心理,大賺一筆。

「做筆記很重要」這句話的真實涵義省略了幾個字,
原本應該是:
做筆記的整理過程很重要
也就是說,做筆記為什麼重要?
就是因為在自己做筆記的過程中,
你要看各種聖經書,或是補習班的講義,
吸收過後,整合各方論點,
才能整理成精華做在自己的筆記上。


整理筆記,是要那個過程,不是結果

筆記上的內容,不過是其中提示你的整理過程的文字,
別人就算看了這個文字,
也沒辦法領略你其中整理的過程。

為什麼這個過程那麼重要?
你實際上體驗一次你就知道了。
實地拿一科,或甚至某個熱門考題重點,
自己蒐集資料,整理筆記,
接下來再去考試,然後考完看自己那一題那一科的成績,
你就會了解了,
或許你根本不需要等成績出來,在考試的過程,你就可領會,
那種「懂」跟「熟」的程度,
絕非看別人講義筆記者,
可以體會。


考場上帶自製筆記者,考上只是時間問題

這也就是我說:考場上你可以觀摩各位考生看什麼東西,
大部分都是補習班講義、聖經書,
如果你看到那種看自己筆記的,
而且看到那種帶越少、越薄、整理好且整齊筆記的人,
那才是你的對手,
其他人,都不是你的對手,
現在你知道上面這個理論後,
你已經知道,
他們已經下了多少整理功夫跟苦心,
所以,為了讓自己成為考上候選名單,
趕快去自己整理筆記,
讓你成為別人可敬的對手吧!


整理筆記的過程要靠自己,別人無法代勞

看到這邊,我想很多疑惑都不攻自破了,
別人如果要借我的筆記,
只要你有誠意
(註:不是指錢喔!是你真正的誠意,請看後面的說明)
我都會大方的出借,
反正他如果只是借筆記,
沒有打算自己整理,
他絕對沒辦法考上,
這種人的心理,大概不出幾種:
「反正我借那個整理好的筆記來看就好了,考前再看一看就會上」
「整理筆記的人是傻瓜,我借他們整理好的比較快」
「我懶得整理,我不會整理筆記,看別人的比較好」

那這種借筆記的下場又如何呢?
1.第一種:
影印後,束之高閣,從來沒打開過,僅做為安心用,書架上的鎮架之寶?

這種情形不消我解釋,老實說,我自己也做過這種事情,
如果你不看,還是別借了吧!

2.第二種:
考場上臨時抱佛腳,自認為聰慧過人,可及時參透。

有沒有發現,通常你到考場上再看,
幾乎都看不懂?
就算你有小叮噹的記憶麵包,
可以完全背起來,
考場上,你也不知道怎麼用那些知識。

3.第三種:
借回去馬上看,當作製作筆記的參考。

這種人好一些,
但是我也必須告訴你,
還是沒什麼路用,
因為你還是看不懂原作寫這些話的真義,
有時候你還有可能會得到錯誤的理解,
我過去就曾為此所苦。

借別人的筆記真的沒有用,
因為我你借不到,別人做筆記的過程及腦袋。


出借別人筆記要看人

相信你看到這邊,
就會知道借別人筆記,
其實沒什麼,
你現在想跟我借,
我也可以借你喔!
不過我想如果你懂我上面那一番話,
你不會跟我借,那會誤了你自己。

但是,我在這邊,
要提醒大方出借筆記者,
請看人再借,
我曾經有因為太大方,
出借筆記還有出售我個人的書籍,
弄得自己很不愉快的經驗。
(有興趣者請看※註)

畢竟會借筆記的人,
很多人都是偷懶心態,
不值得信任,
為了避免你的筆記借了他不還你,
或是弄得自己一肚子氣,
我現在已採用我男友的說法:
我會看人才借,就算是賣,我也會看人才賣。
沒禮貌的、自以為出錢就是大爺的,我完全一律不理,
這種人你理他,只會氣死你自己而已。


上課不要狂抄筆記

我想這個是老話題了,早在我們高中考大學的時候,
你就曾遇過這種事情,到底我們要不要狂抄補習班老師的板書?
答案我想你也很清楚,很多人都告訴你,
上課絕對不要狂抄筆記,
先聽懂最重要。

我包括高中、國中,上課時是絕對不會狂抄筆記的,
除非老師要求,老師有要求者,絕對會留時間讓你抄。
但是不是叫你上課不要抄,
而是老師講解的時候,
你專心仔細聽,一次聽到懂,
筆記,待會再說。

那你會問啦,筆記怎麼辦?
我知道你會想到同學裡面,
總有一個細心、可以整理得很好的人,
通常那種人不太聽課的,
上課只想著抄筆記,
難道是叫我上完課借他的筆記來抄?

希望你不要是那種上課抄筆記的人,
還整理得很漂亮,
如果你是,你很容易變成人家的工具,
而且還犧牲自己聽懂的權益,
一定要改過來這種習慣。

不是叫我不要借筆記,
要自己做嗎?那什麼時候做呢?
難道還要看補習班錄影檔?
如果沒補習班錄影檔怎麼辦?

別緊張,通常你會可以同時聽到課,
又同時寫到筆記的。


現在的補習班都很厲害,
名師大部分都會考慮到這一點。

第一種老師會再講完重點,再叫你抄,此時你再寫筆記即可。

第二種老師會先寫板書,再說明,
老師在寫黑板不說話的時候,
這時就是你跟著寫筆記的時間了!

第三種老師他講完一個重點,必講笑話,
此時如果你跟著他聽笑話,
你就完了,親愛的捧友們,
這就是老師精心安排讓你抄筆記的時間阿!
還多麼貼心怕你抄的無聊,
編幾個笑話來讓你聽聽,
難道你要老師講的那麼白嗎?

很會念書考試的人,
都很會抓老師上課的節奏,
他知道什麼時候要專心聽講,
什麼時間可以利用來抄筆記,
所以他上完課可以同時抄完筆記,
也可以聽得懂老師講的重點,
回去只消複習。

你不相信的話,
下次可以觀察你們上課的同學中,
是不是我說的那些老師沒講課的時間點,
他們都在寫筆記?


上課真的沒時間抄筆記要怎麼辦?

是的!
我想你會有一個疑問,那就是如果那個大師真的很厲害,
可以邊寫板書筆記,邊講重點,
不需要休息,一氣呵成,
那什麼時候才可以抄筆記?

這種情形,據我所知,好發於大學教授,
而且多為該領域的大師級,
不會教書,但是心得很多,
善於分享做筆記,
恨不得把所學都傳授,
不懂為什麼他的學生永遠都不能吸收?
因為他們都不知道學生沒時間吸收啦!

大師們又有怪癖,
不能忍受同學們好心的架設錄音錄影,
好像似乎深怕自己的身影,
留存於錄影中,
會招受到該領域的粉絲追崇,
一旦被認出,會像明星般無法從該地脫身。
(純粹亂編,切勿對號入座)

此時不要緊張,
你還是要以聽課為重。
筆記,你有兩套方法可解:

1.偷帶錄音筆在口袋,筆記回家再回想整理:

現在的錄音筆都那麼小,
老師總看不到了吧?
回家的時候聽錄音筆的內容,
輔以回想老師寫在黑板的東西,
自己整理筆記。
前面有說,自己整理筆記,比抄別人、甚至是大師的筆記還有用。
記得要回去馬上整理,才不會忘了。
真的忘記了,想不起來該理論,
老師都會很開心你去問他問題的。

2.單純回想老師在黑板所寫,不懂再問老師。

理由同上,
老師都有office hour,
此時不問,更待何時?

順道跟你說,
你去私下問老師,保證會問得更懂,
問到更多老師上課沒教的"眉角",
大師們很愛學生問問題,
因為台灣的學生總是不問問題,
讓他們教得很沒勁。

至於怎麼問問題,下回再分享,
本回已經寫太多了,連系統都變很慢。XD


看到這裡,如果你還想要借我的筆記,
不想自己做,那表示你沒看懂,
罰你再看這篇文章一次


※註:我還記得那多不好的經驗,

批踢踢寫信問我有沒有要賣的考用書,
我想說可以幫助網友,因為剛考完,
不假思索就說有,
已經寫信告訴他版本,他自己不做功課,
還來信一直拼命問說是不是最新版
整個過程殺價再殺價(2本很厚才賣他不到300元吧!),
我還使用露天拍賣遵守規則
(現在還挺後悔的,早知道我當時就不要那麼快開露天拍賣,
還可以停止這項交易)
他都已經下標了還討價還價,
問一大堆問題,
明明說明上就寫著沒有郵局帳號,
用很爛的語氣,還打電話罵我,
叫我給他郵局帳號,
我還跟他勸說,那我不想賣你,
你可以不用那麼麻煩,
竟然還自己搞不清楚怎麼匯款,
多匯錢叫我退他錢!
自此之後,我決定聽我男友的話,
有誠意的人,我才會幫助他。