[轉]程序員面試,你準備好了嗎?

對於每一個.net 程序員面試,都是相當不容易的,畢竟這個時代知識更新的非常快,考察的也多,本站收集了一些別人的面試經歷,希望能對正在求職的.net程序員有所幫助!

 

    今天看到幾篇面試相關的文章。面試是我最近想的很多的問題,有所思,有所得,從小部門面試的角度談談所思所得吧。

面試就是在短時間內對應聘者的經驗、能力、潛力進行評估。我一般比較關注這些方面:(1)品格;(2)經驗;(3)解決問題的能力;(4)技術特長;(5)潛力。面試時間一般爲1小時,筆試+機試+面談。

下面結合偶常用的一份C++/C#程序員面試題談談體會。

面試題一般分爲3~4部分。第一部分是自我評估,第二部分是上機編程,第三部分是領域相關的東東,第四部分是考查能力與潛力的選做題。

(1)自我評估

自我評估一般有三道題:

(a)請估計你的編碼量,在合適的選項上畫上√。(機器生成的代碼不算)

(b)你使用過什麼源代碼管理工具?(只使用過一、兩次的不算,可多選)

(c)你習慣使用什麼樣的開發工具/IDE?(可多選)

主要考查個人經驗和品質。如果這一部分胡填瞎吹,在後面會露餡。這裏面還能看出一個人解決問題的能力。有一個哥們折騰了半天,問:這個√我在“插入”(word)怎麼找不到啊!(偶想:不會copy嘛!)。這種哥們,顯然解決問題的能力不強,可以直接拒之。可能會冤枉他,但冤枉的概率很低。

一般來說,偶覺得需要評估擬採用語言及其相關語言的編碼量,比如招聘c#程序員,偶一般評估其java, c#, sql, vb.net的編碼量。有時候這哥們不會c#,java和sql很熟其實也不錯。

IDE和源代碼管理工具評估大概能評價一個人的技術風格。比如,用dreamweaver的側重於頁面,用visual studio的側重於後臺,linux下用vi, emacs, cvs的具有一定的黑客特質,用kdevelop, eclipse/cdt的側重於實用主義。

(2)機試

一般來說,就一個hello world題。主要考察基本的OO設計及編碼風格。下面是原題:

C#版:

(a)寫一個類Message,該類具備以下成員:

·一個名爲message,儲存消息文本;

·一個方法Show(),打印消息文本;

·一個構造函數,根據傳遞的字符串,初始化消息文本。

·其它你認爲需要的東西

(b)調用Message的實例,打印“hello world”。。

C++版:

(a)寫一個C++類Message,該類具備以下成員:

·一個名爲message,類型爲string(或char*)的私有變量,儲存消息文本;

·一個方法show(),打印消息文本;

·一個構造函數,根據傳遞的字符串,初始化消息文本。

(b)寫一個程序,通過調用Message的實例,打印“hello world”。編寫make文件;make;運行程序。

大家寫出來的結果真是五花八門,精彩之極。能在1小時內寫出實現功能的C++應聘者不到50%,C#的高一些。在10分鐘內寫出,並且寫的讓人看的很舒服的,大概只有20%,沒有一年的編碼經驗是寫不出很漂亮的代碼的。

以前常用一個較難的題:界面上有一條線段,鼠標在線段的附近點擊,寫一個算法,判斷是否會選中線段。發現效果不好,一般人在一小時內搞不定。

(3)領域相關

這個和應聘的職位相關。如果招聘網絡程序員,偶會讓他講講幾種IO的區別,抓幾個包分析分析。如果招聘Asp.Net Web程序員,偶會讓他講講DataTable, DataSet, DataAdapter的角色與功能。如果他說不會,用NHibernate什麼的,那就讓他談談這方面的體會。這種題目相對開放。主要考查他有沒有相關領域的開發經驗以及經驗的深淺。到這裏,不出大差錯的話,差不多就可以錄用了。當然,如果應聘者較多,就需要比較選擇題的成績了。

(4)選做題

選做題是非常開放的題目。基本上分模式、算法、庫的考查。

C#版的如下:

(a) 談談你對facade模式的理解與心得

(b) 談談你對.net framework的理解與使用心得

(c) 想產生一個數列:T(n) = T(n-1),n,T(n-1),T(0) = 1

比如T(3)是1,2,1,3,1,2,1

T(4)是1,2,1,3,1,2,1,4,1,2,1,3,1,2,1

不用遞歸有什麼效率高的算法嗎?

C++版的如下:

(a) 談談你對facade模式的理解與心得

(b) 談談你對C++ 程序內存管理的理解與心得

(c) 談談你對C++ 標準庫的理解與使用心得

(d) 想產生一個數列:T(n) = T(n-1),n,T(n-1),T(0) = 1

比如T(3)是1,2,1,3,1,2,1

T(4)是1,2,1,3,1,2,1,4,1,2,1,3,1,2,1

這些問題很開放。有些人上來能談的有條有理,這個人大概在這些方面進行過思考過。如果一上來不知道怎麼談,可以誘導他,慢慢的談出他在這方面的經驗、心得和體會。比如談.net framework,可以問問常用的類,談談framework的結構,你覺得什麼地方好用,什麼地方不好用,怎麼選擇、試用、使用、擴展第三方庫?

對於“精通”。一般來說,在簡歷中寫精通的人90%都是吹牛,直接拒掉冤枉的概率只有10%。就算一個人是真正的精通,那也不是企業最需要的人。企業最需要的是能解決問題,有思路的技術人員,其次纔是精通某項技術的技術人員。《.NET方向高級開發人員面試時應該事先考慮的問題》中的題目,一半偶不會用來面試人,一些可能放在選做題裏面,一些可能放在領域相關題裏面(假設我要招聘這方面的開發人員),一些是用來考察一個人的品質是否誠實,權重不會很大。當然,偶招聘的一般是一般開發人員,不是高級開發人員。:P 不過,對於高級開發人員,偶一般也不會面試這些,偏架構的一般會從《企業應用架構模式》,《without ejb》中選題,還有就是開發過程。偏技術的可以給他一個問題讓他解決,或者給他一段IL彙編代碼,讓他看,或者在可上網的條件下問他一個現實中可能出現的非常刁的問題。

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