career複習

複習計劃:
    算法值得單獨拿出來說一說,這倒也不是說在工作中能有多大的作用,只是很多公司都拿這個來作爲區分標準。畢竟其他可能大家都學過,可能區分度並不大。經常聽說某人成績一般,實驗室項目一般,實習一般,但是看了半年算法就去了牛公司的故事。而且做算法題也有能鍛鍊一些編程技巧,這種一百行以內的代碼正是筆試面試喜歡問的。可以將算法題做一個簡單分類:adHoc類,也就是沒有太難的算法,主要考察分析、抽象問題的能力,需要把一些稀奇古怪的場景用計算機語言描述出來並解決題目要求的問題。數據結構類,需要用一些數據結構課程上學的東西,本質也是對問題的建模,用到的結構常見的也就是線性結構和樹形結構,一些高級的數據結構也偶爾出現。動態規劃類,在筆試題裏算比較難的了,面試時候倒是時常會遇到。主要還是要培養思維方法,掌握一些書上的經典題目是必須的。貪心和回溯在算法題裏很多,但是找工作的時候幾乎沒遇到過,也不知道是爲什麼。如果有比較多的時間《算法導論》(CLRS)是必看的,就算不爲找工作,仔細研讀一遍也絕對對得起你花的時間,它的課後題幾乎都是經典問題,能熟練做出它的課後題的話,水平就很不錯了。還有一些面試題總結類的,比如《編程之美》,列出的一些題也算常見問題,看上兩遍做到心裏有數。此外還有經驗總結型的如《編程珠璣》、《代碼之美》都是一些有經驗的大師寫得,看一下也會很有收穫。如果水平再高,可以看劉汝佳寫的《算法藝術與信息學競賽》,反正我到現在也沒怎麼看懂。看了這麼多書,還得花時間做點題,北大的POJ就是很好的地方,題庫很大,而且有以前很多牛人總結的分類。個人認爲adHoc類、數據結構類能做中等偏難的題,動態規劃類能做中等的題就不錯了,悟性好的當然挑戰難題更好。也看到有的牛人推薦NOI集訓隊的論文集,只是我沒找到。從數量上看,如果決定做題,一個月刷100題應該是可以達到的。當然數量也不是絕對,找一些水題練手,然後每類做10到20題是必要的。如果時間實在不多30到50題應該也能有作用。就我而言,我從06年的暑假就開始做題,當時也沒什麼目的性,專找簡單題做,研究生期間也做了一些,到找工作前這幾個月又找針對性的題做了一些,雖然最後數目不小,但其實水題爲主。
    寫了這麼長主要因爲這個是準備的重點,首先是這些都需要個積累的過程,除非悟性很高的,不然做題的感覺很難速成。其次,如果讀書期間課都上的很認真,那麼其他課程都是一個複習重點的過程,每門課有2天到3天時間也就差多了。做題完全可以提早很長時間就開始準備,而且做題的過程充滿樂趣又很能感受到自己的提高,說不定你會欲罷不能呢。
    就課程來說,除了上面的算法外,重點要複習的自然是操作系統和網絡。這兩門都可以從理論知識和實際應用角度來準備。理論知識自然就是經典教材上寫的那些,以操作系統來說,進程管理(進程、線程、進程間通訊、同步與死鎖)、存儲管理(內存、外存、分段分頁、緩存的置換)、IO系統自然都是要複習到的。總得來說找來本科教材,本科課件看幾遍應該就夠了,網絡也是類似。除了理論還要有實際應用,對於操作系統,要熟悉起碼一種主流操作系統的操作,以及一些系統編程。比如面試常被問進程間通信,如果能熟練的答出windows和linux進程間通信的方法,應該就是很好的表現了。對於網絡,除了理論還能熟悉TCP/IP協議的細節當然好,但不是誰都有心思去看《TCP/IP詳解》的,順便說一句,stevens先生的幾本著作能啃下來都是不錯的。
    除了課程需要複習之外,還要考慮編程語言。一般筆試面試都會C++、Java二選一。對於我來說,兩個都會點,又都不算精通。算法題都是用C++寫的,學校的項目、實習的項目都是Java的。所以很難說我擅長哪個,這其實挺鬱悶,一般越到後面面試自然越難,也就會問更多的細節。畢竟寫Java多得多,所以通常我都會選擇答Java的問題。另外由於有些申請的職位要求必須考C++的,所以也要準備。除了基本語法之外,還有一些細節、性能、編碼規法之類的問題,主要就是通過effective java, effective c++之類的書來看,再加上自己的一點實踐經驗。
    設計模式也是一個常見的話題。稱它是話題,主要是說這類問題通常要結合理論和具體場景描述一個完整的故事,要熟記幾個經典的模式和應用場景。head first design patterns是本好書,雖然有點貴,但是圖文並茂,很精彩。看完一遍用不了多久,看上2遍再記住幾個模式,應該也夠了。
關於知識點,我自己總結過一個,放在https://sites.google.com/site/zldiablo/ ,其實這東西還是自己總結比較好,看別人的沒太深印象。

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