網站首頁 工作範例 辦公範例 個人範例 黨團範例 簡歷範例 學生範例 其他範例 專題範例

技術筆試的備考經驗

欄目: 筆試題目 / 釋出於: / 人氣:2.84W

就說說對技術筆試的看法。多數公司考的很基礎,在參加筆試前,問問自己:你對線性表、二叉樹、堆、棧、雜湊這些基礎資料結構有多少了解?你能迅速的寫出常見的各種排序的一般實現麼?你對演算法的時間和空間複雜性有概念麼?你對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這些經典常考的演算法給出了很多題目和解答,幾乎包含了筆試可能考到的一切。比如有道高階程式設計題中的區間覆蓋問題,即是其中的原題,而另一道凸包問題是計算幾何的經典問題,只要涉及到計算幾何的書都有講。

技術筆試的備考經驗