【作者介紹:高洲陽,2012年浙江大學信電系畢業,2014年McMaster大學研究生畢業,畢業後在IBM工作2年,現就職於Google公司,本文所有內容僅代表作者個人觀點】
現在IT工程師是相對高薪的職業,同時就業範圍比較廣泛,特別是網際網路時代,任何企業都離不開IT技術的支持。對於剛畢業的學生、新移民要找到軟體工程師的職位可能是一個新的挑戰,今天我分享一下我個人關於如何在加拿大或北美尋找軟體工程師工作的經驗。
首先介紹一下IT行業的特點。這個行業最大的特點就是它的變化非常快,快速的變化給這個行業帶來了很多的機會,也給從業者提出了更高的要求。另一個特點是技術非常的多,現在大的方向有做前端的、有做後端的、有移動開發的、有做iOS的、做測試的、做資料庫的等等,每一個大類裡面又分很多小類,每個小類裡還有很多相關的技術。面對快速變化的行業和眾多的技術,軟體工程師需要有持續的學習能力才能跟上變化。
我周圍學習軟體相關專業的同學畢業後大都有三個職業發展的方向。第一個方向是去大公司,大公司的產品比較穩定,生活工作的平衡比較好,第二個是去小公司,發展快的小公司可以學到很多東西,缺點是沒有大公司那麼穩定,第三個是轉行,轉去可以發揮IT的特長行業,比如金融行業有算法交易,高頻交易需要軟體工程師,現在股市裡已經有相當大一部分交易都是由算法直接自動完成的,不需要太多人工幹預。我覺得找到適合自己的方向,每一個選擇都不錯。
下面進入正題,談談如何去面試軟體工程師這個工作。這裡必須提一下一些軟體工程師的基礎書籍,即便是沒有學過軟體工程專業的人士,如果能把這些書看一看的話,我覺得也能去嘗試面試軟體工程師的工作。
Thinking in Java,這是最經典的學習Java程式語言的書,講解的非常全面而且具體,想要學習Java的同學可以多看看。
C++ primer,這是學習C++最好的書之一,跟上面的Thinking in Java類似,這本書會結合具體的例子把語法講解的非常的全面,學習C++的話強烈推薦。
Introduction to algorithms,這是最經典的學習數據結構與算法的書,數據結構跟算法在面試過程中非常的重要,幾乎每場面試都必須會考察的知識點,這本書講解的非常全面,唯一一個不足的可能是書裡面的例子都是用偽代碼寫的,有些同學可能看不習慣。
Operating system concepts,這是一本比較經典的介紹作業系統的書,在面試過程中不一定會考察上面的內容,但也是一本比較基礎的書籍,有利於為工作打下一個紮實的基礎。
Computer architecture a quantitative approach,類是於作業系統,這是一本基礎書籍,在面試中可能很少用到,但對成為一個好的軟體工程師也很重要
Compiler principles,techniques and tools,這是介紹編譯器最經典的書之一,面試過程中很少考察編譯器知識,但這本書會幫你深入了解從程式語言到機器認識的二斤制碼之間會發生什麼,要想成為一名好的軟體工程師是必須了解的知識。
bash,Linux,這兩個並不是書籍,很多面試也可能不會考察但非常重要,是工作中幾乎沒天都會用到的知識,需要好好掌握。相關的書籍非常的多,就不一一介紹了,大部分書都介紹的很好。
有了上面的基礎,就可以準備工作的面試了,北美的軟體工程師面試大都需要做算法題。這裡有幾個非常經典的練習算法題的資源
Cracking the coding interview,這本書相對來說是一本比較入門的算法書,裡面大概有三四百題,每道題都有詳細的講解,很多朋友問我我就推薦這本書。
Leetcode,這是一個非常流行的練習算法題的網站,現在大概有好幾百題,幾乎涵蓋了大部分面試中會碰到的算法題,雖然題目比較多但是很多題的算法都是一樣的,練習過程中需要學會總結,提高效率,有些題目非常難,可能超過了很多公司的要求,建議大家多看看網上的經驗再練習。
最後稍微談談具體的面試過程。一般很多公司會有三到四個面試環節,一個環節是是做一個網上測試,即公司會發給申請者測試連結,進入連結完成裡面的題目,包括編程基礎知識和一些算法。第二個環節是電話面試或視頻面試,這個相對後面的面試比較簡單,一般會考察編程算法能力。電話面試後,進入到下一環節,很多公司都會邀請申請者去公司面試。一般是多輪的一對一面試,每輪的面試時間大概在一個小時左右。面試的內容各個公司都不一樣,但一般主要考察寫代碼的能力。
相對而言,加拿大軟體工程師的職位比其他領域的求職還是有多一些機會的,關鍵在於個人的定位和充足的準備。紮實的專業功底,認真的準備,拓展職業領域的人脈。