當前位置:學識都>好好學習>考研>

談談我準備筆試的經驗

學識都 人氣:2.23W
談談我準備筆試的經驗
年前找工作的熱潮差不多已經過去,經常在版上逛,看到一些同學被bs就怨天尤人。對公司破口大罵的,對考官人身攻擊的都不乏其人。
    冷靜下來想一想,爲什麼會被bs?當然能否拿到筆試資格,筆試了能否進面試,在數輪面試中能否過關斬將有些運氣的因素。但如果屢屢敗在簡歷篩選上,就應該考慮一下自己簡歷與公司要求是否相符;如果筆試常常折戟,就應該好好補補基礎知識;如果面試一再受挫,就應該多學學面試技巧。
    找工作這幾個月來,我也筆了不少。筆試難麼?對有準備的人來說,未必。我是cs偏技術的,C/C++經驗比較多,就說說對技術筆試的看法。多數公司考的很基礎,在參加筆試前,問問自己:你對線性表、二叉樹、堆、棧、散列這些基礎數據結構有多少了解?你能迅速的寫出常見的各種排序的一般實現麼?你對算法的時間和空間複雜性有概念麼?你對C的瞭解有多深?你看過《C專家編程》或者《C和指針》麼?你的C++經驗有多少?你至少完整的看過一遍《C++ Primer》或《The C++ Programming Language》麼?你看過Effective和Exceptional系列麼?你對標準庫的理解是什麼?上面的這些問題如果你都可以做出肯定的答覆,那你已經基本可以應付技術筆試了。
    也許有人問,有這麼多東西要看,我該怎麼準備?個人認爲可以分四塊:語言、數據結構、算法和其他知識:
    語言:我熟悉C/C++,就拿它說事。語言的基礎不難,不過是變量、函數、表達式、流控制等等。譚老師的教材和林銳的書都是很好的入門材料。尤其是林銳,着重突出容易犯錯的地方,象sizeof(char*)和sizeof(char[]),都是容易考到的,而且對一些高級話題,比如,vtable、vptr等都有涉及,可以讓人對C++裏讓人比較迷惑的東西有個直觀的認識。有人把他的書和《Inside C++ Object Model》比,罵的一文不值,我覺得沒必要這樣,不是每個人都要成爲Lippman、Stroustrup這樣的大師,科普讀物會讓更多的人對科學產生興趣。
    對編程經驗在1w行以上的同學,語言基礎已經是小case。C高級編程系列,《C++ Primer》,《The C++ Programming Language》,Effective和Exceptional系列是你應該熟悉的。比如Adobe考試中的設計不可繼承的類這種技巧基礎課本里是不會提到的。你也應該熟悉標準庫,對常見的容器、迭代器、算法應該有所瞭解。我個人覺得《Generic Programming and STL》、《Thinking in C++》2e的下冊和《Effective STL》是很好的教材,當然邊看還要邊練練。
數據結構:對數據結構我沒什麼特別深入的研究。本科時候用清華嚴老師的.教材,學的一塌糊塗,研究生自己把圖書館的數據結構書差不多都翻了一遍,感覺是大同小異。基礎的數據結構《Algorithm in C++》裏講的很好,實現也很優雅。高級數據結構,象紅黑樹、B樹、二項堆、Trie之類的《算法導論》裏有所涉及。
    我認爲應付一般的筆試/面試《Algorithm in C++》已經足夠,如果想去百度之類對基礎知識要求比較高的公司,你就需要對AVL,B樹,Trie這些高級結構有比較深刻的瞭解。因爲查找和排序是百度最看重的技能之一,就拿百度今年在北郵的海筆說,那道IP地址的題可以用區間樹或者基數排序解,而另一個查找子串的題目無非是KMP(我當時寫了一個樸素查找依然過關)。數據結構的複習強調多練習,難度以《數據結構》考研題目爲準,這方面的書很多,我不多說。
    算法:算法是我最沒信心的部分,找工作前狂補了幾個月也沒什麼成效。我個人的經驗是《算法導論》確實好,但它裏面過多的證明確實影響算法菜鳥學習的積極性,第一次閱讀時建議跳過。我更加推崇的書是《Algorithm in C++》,Knuth的學生寫的。裏面不但有很多的圖示也有精巧的實現,不管是數據結構還是基本算法的學習都是相當好的教材。主要看第一本,即《基礎、數據結構、排序與查找》。看完一個算法合上書,看看自己能不能寫出來。
看了書還要做題,我沒做過多少算法題目,直接導致被有道、EMC鄙視,其實現在看來他們考的也都是很基礎的東西。我這裏推薦《算法設計與實驗題解》,裏面對遞歸、分治、dp、greedy這些經典常考的算法給出了很多題目和解答,幾乎包含了筆試可能考到的一切。比如有道高級編程題中的區間覆蓋問題,即是其中的原題,而另一道凸包問題是計算幾何的經典問題,只要涉及到計算幾何的書都有講。
TAGS:經驗 筆試