軟件設計師 如何準備考試(轉載)

在下參加2004年系統設計師(水平)考試,上午66分,下午69分(滿分均75),在此將準備考試的要點與心得記錄下來,希望能給同樣打算報考的您以幫助。

上午試題

上午試題共涉及:系統結構、操作系統原理、編譯原理、關係型數據庫原理、軟件工程、數據結構、多媒體技術、網絡基礎。其中每個部分如果展開都是一本本科階段的教材,對於非科班出身的朋友來說自然無法全部通讀,考試指定教材成了我等的Bible。當時讀書看到感覺重要的地方就用筆劃出,現在回想起來完全沒必要。軟件考試上午試題可能出現在任何我們覺得不重要的地方,怎麼辦?簡而言之,不劃任何的所謂重點難點,任何教材上的內容都是重點和難點,都是必須掌握的。上午我考了66分,或許您認爲這是死記的結果,的確如此。但是在理解的基礎上死記這些,使得我們的基礎將要優於他人,並且必將使得我們從中受益。

在複習備考階段,你我喜歡coding之人常常自問這東西有用嗎?,個人感覺此類問題本身就是危險的信號,程序設計實踐中處處涉及到基礎的知識。不知道瀑布模型,寫完代碼然後寫文檔,文檔自然不能發揮應該有的作用。不知道信號量,設計的程序永遠跑一個進程一個線程。所以在下感覺先搞清是非利弊,然後投入複習,用良好的心態去面對,那我們已經成功了大半(就上午考試而言)。

分析以往考題,道是可以發現一些規律上的東西。首先,不要將自己陷入泥潭。爲了準備操作系統原理,絕對沒有必要去讀什麼源代碼分析之類的書,準備編譯原理,知道一個大概概念便能通過。高程考試上午所要求的是面,而非深度。當然,這話只適用於考試,或者說適用於你我非科班學生應付考試。

歷年考試改如何利用?做兩三遍,然後認真的看講解,沒什麼比他更加有用的了!你會發現考場上那麼多認識的朋友…… 

下午試題

下午試題包括軟件分析、Casl彙編、數據結構與算法設計。

軟件分析這部分內容比較頭痛,關鍵在於是主觀的設計,爲什麼要定一個標準去限定軟件設計的思維,難道上帝已經告訴我們某某軟件應該如何去設計?但是沒有辦法,這就是考試,承認它、熟悉它、然後迎合它、考試完成之後永遠忘記它。這部分內容在下看來完全沒有什麼方法可言,個人對軟件的理解決定了一切。所涉及到的排序關鍵字、錯誤分析等等只要看看歷年考題便能完全瞭解,但是要講那10個空格全部填對,估計除了天賦和經驗沒有什麼能幫助我們了。

Casl
的準備應該是高程考試中的一個盲點,任何人以前都不可能接觸過它,因爲世界上根本沒有Comet計算機。既然是這樣的一個公平的環境,自然可以放心的去做,就看誰的勤奮。可以參考的資料主要是復旦大學王世業老師的《Casl彙編語言程序設計》一書。先搞清楚所有的尋址方式,包括指針的指針的含義,然後是寄存器。只要學習過x86彙編或者其他彙編,您會發現Casl很簡單。在參考本部分考題的時候我建議主要看95年以後的歷年考題,其中的難度和現在相近,95年之前的則相對較難。同時,如果您疑惑何處可以得到上述書籍中提到的Casl運行環境http://www.nilei.net可以找到一個我設計的Casl解釋器。經過超過1000名用戶的使用,相信已經能滿足您的需要。

算法與數據結構佔下午的30分,即使前面的主觀部分不能得高分,Casl什麼也不懂,只要保證這部分基本拿滿分就可以順利通過考試。我認爲首先的因素是天賦,聰明的人能很快熟悉這些內容。相信準備高程考試的朋友多少有點小聰明,然後要做的便是去熟悉與實踐,這裏的實踐我依舊強調練習實考試題。不妨說個類似笑話的例子來說明實考試題練習的重要性,在準備中程的時候我做了中程的所有題目,等到複習高程的時候在那些涉及數據結構的部分即使不用看題目要求、不看程序的其餘部分,也能將所要填寫的空格全部填寫正確,有點像GRE考試中新東方學校傳授的那套?的確如此,既然目標是通過考試,那就用一切合法的可行的方法,束縛自己只有給自己帶來可能重考的麻煩。

如果您問我籠統的來講什麼是關鍵,我會毫不猶豫的告訴你:做歷年題。

FAQ 

1
)問:我需要將每個考綱上的知識點都掌握嗎? 

答:不需要,但是如果你不這麼做,最好能將掌握的東西變成熟練掌握。比如編譯原理,可以完全不看。當然,我不認爲這是一個良好的學習方法。

2
)問:上午重要還是下午重要?

答:決大多數無法通過考試的情況都是下午沒有通過(也就是80%*90%),如果再讓我準備一次這樣的考試,我將先準備下午部分,考試前用一個月突擊上午部分。

3
)問:準備這個考試多少時間足夠?

答:因人而異。我先前一些內容完全沒有接觸過,需要自學,我用了3個半月時間準備考試,每天至少3-4小時。 

考試成績出來了,上午57下午65,基本在我的預料之中,但心裏仍然有些起伏,畢竟三個多月來的努力奮鬥結出了應有的果實。我是學計算機科學和技術專業的,大學三年多也是混混,專業課隨便學了點,考試也就糊弄過去了,大四下半學期開學初,聽說有個軟設證書找工作還能派上點用場,能多塊敲門磚,我尋思報考費也不貴,一百多塊,那就來試試吧。在備考過程中,我有一些感想,寫出來跟各位備考的朋友分享。

軟設必經之路一:要熟悉歷年試題。我直接接觸軟考是從軟設的歷年試題集開始,記得我做了一遍200511月的軟設真題上午題,滿懷信心地對答案,發現我才41分,又對了一遍,還是41,這確實讓我吃驚不小-----軟設並沒有我想像中的那麼容易,即便我是學計算機的。聯繫到大學三年多我們學專業課的情景:考試的時候也就是隨便看看書,從老師或者師兄師姐那裏搞幾道題,應付一下就完事;爲了照顧大多數同學都能過關,考的大多是些概念皮毛,沒啥真的技術含量;自己也沒認真去鑽研,很多知識點只是聽說而已,要是正兒巴勁地硬拼起來,那是說這這不懂、說那那不明白。這一做歷年試題讓我自己知道到底有幾斤幾兩了。於是在以後的複習過程中,始終沒離開歷年試題,因爲歷年試題很多知識點是反覆考,抓住了歷年試題就抓住了重點。

軟設必經之路二:備考下午編程題必須上機調試實踐。我幾乎把歷年試題的下午C語言編程題、C++編程題(根據考綱,下午題中有幾道分別是VBC++JAVA,任選一道作答,我選C++)都用VC調試了一邊,沒有主函數的程序段我自己動手編寫主函數進行調試。一調試問題出一大堆。幸虧我是學計算機的,以前自學過VC,有一定的調試經驗,調試起來還算順利,不過有些程序調試起來十分費勁,因爲你得結合題目搞清楚出題者的意圖,然後搞清楚各個參數、變量的意義,真是十分麻煩,比如2003年下午試題五,關於哈夫曼編碼的問題,我就調試了整整一天,才完全搞清楚程序的來龍去脈。對於下午C++題來說,考的都是比較簡單的基礎知識,我們專業課都瞭解,調試起來不那麼麻煩。後來我發現光以來歷年試題中的編程題來調試還不夠,於是我選擇性地將數據結構、C語言程序設計教材裏的一些程序也調試了一番,對以前學過的這些知識點有了更深層次的認識。上機調試是很好的鍛鍊,光看書很多問題都隱藏起來了,自以爲是明白了,一調試才發現自己想的太簡單了,就會有一大堆意料之外的問題出現,當你將這些問題解決之後才覺得之前的那種狂妄自大是多麼幼稚。隨便提一下,我們學校用的數據結構的教材是嚴蔚敏的那本書,C語言則用的是譚浩強那本書,老嚴的這本書上有些程序還得修改成標準C語言纔可以調試。

軟設必經之路三:軟件工程的數據流圖和UML相關知識一定要學好。近幾年來,每次考試,下午題中必有一道是數據流圖或者UML,而今年卻是數據流圖和UML一起考了,可見其重要性!爲了搞透知識點,我不僅將歷年相關題做了個遍,還拿來那本塵封已久了軟件工程教材認真看起來,學得比以前混混,考試能過就行要充實得多!記得考場上一看到數據流圖和UML兩道題,我心裏就偷笑-----這還不簡單?老子已經蓄謀良久了,哈哈...

軟設必經之路四:要注意跟一同備考的兄弟們交流。這就涉及到交流平臺的問題,我一般在希賽社區的資格水平考試欄目跟大家交流,我學習過程中也遇到過不少棘手的問題,我就在上面發帖子,有的高手會很熱情幫助解答或提供相關資料。在那裏你也可以問問其他同行複習得如何,相互鼓勵,氛圍不錯。

考完了一身輕鬆,預計自己基本能過,只是超越分數線多少分的問題,我把自己認爲的軟設必經的四條路寫出來,供後來者參考。

 我的計算機學習過程是與考試同步進行的,參加了一系列大大小小的計算機考試有十餘次,其中有成功,也有失敗,最大的收穫是不怕考試。從初、中級職稱計算機考試開始,參加過等級考試的二、三、四級考試,還參加過軟考的網絡程序員、程序員、軟件設計師、系統分析師考試,還考過計算機專業在職碩士、統招碩士研究生入學考試及計算機專業自學科目的考試等。在考試的同時,也嘗試着把所學知識應用於實際工作,設計過一些小軟件,初步實現了學以致用。

計算機學習要經歷一個從理論---實踐---理論的認識不斷深化的過程,下面談談本人通過軟件設計師考試的一些體會。

軟件設計師考試大綱中計算機與軟件工程知識

(1)首先基礎知識中涉及到計算機硬件的內容和多媒體知識以及語言知識問題,這是一個量的積累,最後實現質的飛躍。

(2)數據結構部分,這是首次學習線性表、數組、廣義表、樹、圖、查找算法和排序及算法的分析等。這部分的學習,要吃透理論、適當加大習題量、最好能結合上機,深化理解。數據結構好比是武功中的內功,數據結構學習用了我一至二年的時間,以自學教材爲主。吃透理論就是反覆讀書,以一本書爲主(目前清華大學嚴蔚敏老師的數據結構是一個經典),可能的話,再蒐羅其他版本的教程,這樣可以互相印證,就同一問題,多看幾本書這一做法,也可推廣到其他學科的學習中。

(3)操作系統知識,主要從資源管理的角度來分析系統功能的實現。假設你要設計一個新的操作系統,如何實現它?操作系統理論就是向讀者逐步介紹和解釋。重點是五大管理職能的實現及其原理。

(4)計算機網絡中對ISO/OSIRM七層的劃分以及各種協議的功能。傳輸理論、互聯設備、Internet知識,除參考模型理論外,其他的比較比較凌亂。

(5)系統安全問題是目前社會關注的問題,也是應用價值較高的知識,可結合現實中的相關問題來加深理解。

軟考中的信息化、標準化知識是新增考點,是對基本素質的考查,也要重視。

專業英語,不是軟件考試特有的,是專業知識+英語水平,考前不需專業準備,平時有意識地上網讀點英文專業資料。

軟考的考試內容既是大學計算機本科專業的必修課,同時又有着鮮明的側重點,這對於沒有經過系統學習的朋友們來說,無疑是一次全面、深入學習的機會,無論是自學或是參加培訓,只要去學了就會對計算機有更深入全面的瞭解,而不只是停留在過去那些膚淺的認識上面。

以上是專業背景知識,是對軟件設計師基本素養的要求。

軟件設計師的專業能力

軟件設計師,關鍵是設計軟件的能力。考試大綱要求:要熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;熟練掌握軟件設計的方法和技術;掌握C程序設計語言及指定的四種面嚮對象語言中的一種。這部分專業能力嚴重依賴工作實踐,要求有一定經驗的積累,是具有工程師的實際工作能力和業務水平的體現,但目前大量在校生參加考試,雖沒什麼工作經驗可言,但通過學習和借鑑,仍可以取人之長,補已之短。

這部分內容主要體現在下午的考試題中,現就如何應對下午的考試進行分析:

在近幾次考試中,下午試題分五個題目,一個數據庫、一個程序填空題、一個面向對象的語言題,另兩個題目分別爲數據流圖、UML或流程圖等。

數據庫題目,要求補全SQL語言,這要求考生熟悉SQL的語言,無論對上午題目還是下午題目都很重要。這是學習和複習的一個重點。

數據流圖,DFD是一種分析系統數據流程的圖形,意在讓用戶理解系統的功能、輸入、輸出和數據存儲等。請認真弄清其應用後,在畫出數據流圖的情況下,系統的功能也就確定了,再經過細化,逐步向物理結構邁進。考覈時,試題多從父圖和子圖的平衡來分析。這部分內容,解題的關鍵是高度重視題目說明,務必正確、深入理解其內容,必要時要讀幾遍,同時對於給出的圖表,也要務必看懂。這樣答題就輕鬆了,答案實際就蘊含在說明中。

流程圖類題目,是大家再熟悉不過的了,它就一個具體問題的解題思路進行描述,是面向過程的。但所求問題是千差萬別的,因此應理解思路,細心作答。

程序填空是答題形式最簡單同時也是難度最大的。爲便於閱卷,這類題目以程序填空形式出現,這不僅要求理解問題本質,同時也要弄清作者解題思路,這一點比自己獨立完成程序設計要難得多。依個人經驗,首先要針對問題,設計自己的思路,解決問題,確定先後順序;然後試讀程序,如果思路大體一致,題就容易解決了,如果思路不一致,就要設法弄清每一段代碼的功能及其邏輯結構,進而弄清命題人的解題思路,再順勢解決問題。人們常講,答案就在題目中,這是對的。在分析問題過程中,找到所求答案。不過前提條件是考生要熟悉這種語言,又要明白解題思路,這樣才能正確作答。

近年來對於統一建模語言UML考查較多,已引起了考生的注意。它代表了軟件工程的發展趨勢,目前是可視化建模的事實上的工業標準。人們對於圖的理解相對其他形式更容易一些,圖能更清晰地描述和說明問題的本質,因此,UML體現了這一特點。這類題目難度與數據流圖相似,自然解題思想也相同。從形式上看,數據流圖更樸實一些,UML類的題目則透出一種新穎、現代的氣息。
最後的題目面嚮對象語言是一個選做題,給考生以自由,可以發揮個人的優勢。命題已注意到不同語言的考查難度的一致性,要求考生就同一問題回答,實現了形式上的公平。

應考的核心問題

要高度重視近幾年的試題。試題是對考試大綱的外化,是對相應知識的梳理,直接體現考查意圖。如能把歷年試題研究幾遍,通過考試不成問題。因此,一個高效的學習方法,就是先研究歷年考試題,通過做題,鞏固已有知識,強化能力。針對試題不同內容,進行歸納總結,找出自己的優勢和不足,然後帶着問題去讀書,查找相關資料,做到有的放矢,針對性強。從應考角度講,這種方法效率可能最高。

考試是對參考人的綜合性評測,每個考生只要答對60%的題目就能通過考試。考過了,意味着一個學習階段的終結,另一個學習階段的開始,是對個人知識體系和實踐能力的檢測。

我的考試經驗:考前集中學習是必要的,研究往年考題很重要,考試信心要增強。雖然軟考的通過率並不高,但要相信天道酬勤的道理。

另外,本人是在職學習計算機的,個人的經歷不適用於在校生,但是學習過程是一致的。從無知到有知,從知之不多到形成一定的學科知識體系,通過實踐進一步強化能力,這一過程是不能逾越的。在校生基於自身條件、所處環境等因素,會更有優勢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章