1、一個IT工程師應該擁有的技能 我認為實用技能包含3個方面,如圖1所示: 圖1 這些都是很重要的: ●編碼:你必須能夠在限定時間內寫出高品質的程式碼。 ●經驗:具有相關經驗顯示你對該行業的熱情,並且能夠在一開始就進入工作狀態。 ●理論:理論知識是IT工程師的基礎,好的理論知識能讓你快速解決新出現的問題。
而準備工作面試的過程是一個提升自己各種能力的絕佳機會。 1、提升你的理論知識
(1)學習C語言 C語言是程式設計的基礎。因此,學習C語言能為我們了解高層概念打下堅實的基礎學習C語言的基礎知識並不會花太長時間,只需要幾個星期的時間一般就能夠掌握。 C沒有太多的抽象封裝,這就使得C語言相對簡單,和其他人一樣我學習C語言是看《C Programming Language》這本書(我們可以看譚浩強的書)。 一旦你能夠真正理解C語言中的指標和記憶體管理,C就會變成一門有趣的語言,因為它將幫助我們從處理器層面(底層硬體)來理解語言,而這正是其他大多數的高階語言所不具備的。同時了解這些概念,也將有助於你了解更高層次的語言工作。 (2)了解資料結構與演算法 雖然在網站/應用程式開發中編寫複雜的演算法和資料結構比較少見,但是資料結構和演算法在我們編寫複雜系統的時候將會影響我們的思考。即使你不需要編寫自己的資料結構,你也可能會在程式設計中使用到他,因此,了解基本的選擇是至關重要的。 我推薦這本書,《演算法導論》。由於這本書是很長,如果你沒有時間把他讀完,那也要學習其中的排序,哈希表,二叉樹,字串匹配部分。 一旦你很好的掌握了資料結構和演算法,你會發現這些概念將只是將你所做的每件事都總結成問題而已。 2、比較程式語言 一開始,你會經常接觸多中程式語言。你可能還需要快速學習新的語言和概念。 為了加快學習,學習不同語言有助於我們了解他們的概念以及他們的相似性和不同之處。 最好的方法是在下面每種風格的語言中學一門語言: ●底層:C語言。 ●物件導向:JAVA,C 等。 ●動態語言,高層次的語言:python, ruby 等 ●函數式語言: Lisp, Erlang, Haskell等(之前將其翻譯為功能性語言,感謝zzljlu的修正) 3、至少精通某一種語言和一種框架 這能夠說明: ●你既然能在一個領域成為專家,就表示你同樣能在其他領域做得一樣好。 ●你理解這些語言/框架的細節可以讓你根據不同技術的優缺點來做決定。 ●你有熱情去深究一個專案並且深入語言的最底層。 想要成為專家需要花一定的時間和經驗。這裡有一些建議: ●嘗試做不同的項目,這樣能夠幫助你理解程式語言。 ●閱讀其他人的技術部落格。 Hacker News是一個很好的技術部落格。 ●為開源社群做出自己的貢獻,例如在GitHub上能夠查到你的程式碼。 4、提升實際編碼能力 在這裡我們在面試時主要透過3中方法來測試工程師的程式設計能力: ●你貢獻到開源社群的程式碼(例如,在GitHub上) ●現場寫一段程式碼 ●連續2小時編寫程式碼的挑戰 一個工程師的編碼能力的品質和速度是重要的,而這只能來自於實務經驗。 另外,使用適當的語言和架構對於一個專案也是很有幫助的。例如用Python和Ruby等腳本語言可以比使用像Java、C 這類靜態語言的許多情況下更快。因為我們知道一個求職者可能在動態腳本語言方面沒有太多經驗,所以我們面試的時候並沒有將其作為重點。 做一些有挑戰的程式測試可以磨練你的技能。網路上可以找到了大量的資源,這也可以測試你的程式速度,讓你可以進一步提升你寫程式的速度。 Google Code Jam上面有一些不錯的題目。 5、提升您的相關技術經驗 有一些相關工作經驗是很重要的: ●這表示你對程式設計有一定的熱情 ●你的開發經驗可以引導公司裡的其他人 ●你將會在工作中一鳴驚人。 ●你有能力可以探究更多的現代技術,並有一個更全面的視角
6、結論 當然,在技術方面只是一個硬幣的一面。在第2部分中,我將探討非技術方面。
最後就看你們的了,歡迎加入賣萌創業群:438012030 |