前段時間一直在和項目組的兩個同僚負責面試,感觸很多,最近又在csdn上看到了一篇關于面試相關的文章,是以抽時間寫寫自己的感受。聲明先,我隻是談談自己這段時間面試的一些感觸,旨在抛磚引玉,有不同意見的兄弟姐妹大可“磚正”,有道理的建議或者意見在下一定虛心接受,但是請勿漫罵!^_^!
我自己也參加過幾次面試,首先結合我自己的面試經曆和面試别人的經曆(有點繞口)談談做為應聘者(interviewee)應該注意什麼。
1> 首先要對自己有正确的估價。自己掌握了幾種技術,學會了幾種語句,都到了什麼層次,目前駕馭項目的能力在什麼水準上。對自己的正确估價首先要展現在履歷上,某種技術某種語言掌握的程度是了解,是熟悉還是精通?誠然,每個人對“精通”都有自己的标準,但是不要太離譜。還是拿我面試的時候遇到的一些現象做例子,有部分自稱自己精通c#,asp.net的不知道as, using怎麼用,不知道datareader和dataset的差別,session, viewstate,application,cache的差別也是一知半解,如果是這樣就不要在自己的履歷上寫精通了。當然并不是說這些東西不知道就沒有得到offer的機會!其次,正确估價自己還展現在在去申請一個職位以前衡量一下自己的水準和職位的要求到底相差多少,當然現在招聘的人也喜歡把招聘要求寫的很高,個人對這種做法不贊同。如果感覺自己的水準和職位的要求相差太遠就不要浪費自己的時間去參加面試了。
2> 履歷中不要寫無關的内容,履歷就應該盡量簡單但是要突出重點,在自己的優勢上下功夫。
有些人應聘的是程式員非要寫上photoshop,flash之類的,一點意義都沒有(如果應聘的是一個連前台和背景一個人做的職位那需要寫上)。面試過程中更有人寫上project之類的,寫上這個東西本來無可厚非,但是他自己的确不懂,問起來什麼都不知道,這樣的東西放到履歷上不是一塊贅肉,更像一顆惡性良性腫瘤。
3> 要有正确的态度,知道自己是一個interviewee。至于面試過程中要和面試官目光交流之類的我就不說了,這個是很基本的。面試的過程中要直接回答問題,不要繞着打“擦邊球”,如果真的不會就誠實的說”不會”。面試官終究是面試官,一般的在軟體公司裡面試官的技術水準還是說得過去的,不要當面試官是傻子。面試中遇到一個哥們大概認為我們隻是做測試的,不懂技術,是以總是拿出一副給我們講解的姿态。即使我們真的不懂技術也不會不知道問題的答案吧!不然如何判斷應聘者的技術水準。如果真有自己獨到的見解也就罷了,适度狂一點沒什麼不好!但是說出的東西幾乎沒有正确的,純屬瞎扯,這不是忽悠我們嘛!當問到一個哥們webservice和remoting的差別時(他履歷上寫着項目中用到了webservice和remoting,而且他是負責程式架構設計的。),扯了老半天都說的是相同點,不同點一點都沒說出來,我問他“那webservice和remoting這麼說就是完全一樣了?”。人家這麼說“我現在一般做設計,隻和interface,pattern,model之類的打交道,這些東西會用,你讓我說我真不好說!”很有意思!如果連webservice和remoting的差別都不知道如何決定在項目中是用webservice還是remoting呢?
4> 自信,誠懇,謙虛。這個雖然不是什麼技術問題,但是我認為是每個優秀的程式員應該具備的素質。對于自己不知道的問題可以詢問面試官得到答案,這并不是一個形式,對于面試經驗的積累是有好處的。
下面是從面試官(interviewer)或者公司的角度談談。
1> 首先明确是招聘什麼職位的程式員。如果招聘的是初級程式員那程式架構或者一些很少用到的技術點的考察可以适度放低,招聘的.net程式員的就不要拿java的題來浪費時間(我自己曾經遇到這樣的情況,我直接拒絕。)衡量一個應聘者是否合格不能完全取決于其技術的高低,關鍵是是否适合目前的職位(對于公司來說肯定是擇優錄取,很多時候感覺自己的能力完全可以勝任目前的職位,其他的地方也沒有出差錯,但是最後沒有得到offer,大概這算其中的一個原因了。)。面試的時候遇到一個oracle資料很強,但是.net水準比較差的哥們,面試的意見裡我們标明此人資料庫的能力很強,可以去做資料庫開發相關的工作。如果非要讓這樣的人做.net的工作對公司算是資源的浪費,對個人來說也沒有任何優勢可言。個人比較對那種出初級程式員的薪水卻想招進階程式員的公司隻能表示無語了。
2> 明确招聘的目的。招聘是為了找到适合目前職位的人才,沒有必要非把應聘者問到回答不上來為止。曾經碰到過一些也聽朋有們說過有些刁鑽的面試官會會玩一些智力遊戲或者一些非常生僻的技術點,那基本沒有意義的,你的工作中真會用到這些東西嗎?就是一些超級的大公司也隻是玩點智力題看應聘者的思維能力,對于一般的公司沒必要效仿了,如果出了10道智力題,能答對所有或者一大半的應聘者會來應聘現在的職位嗎?
3> 盡量問應聘者以前項目中用到的相關技術。問應聘者認為自己最擅長的技術,如果連他們最擅長的技術都掌握的很差,那在其他方面也好不到哪裡去。然後可以圍繞相關的技術拓展開來,最後深入到一些細節的東西。
4> 從簡單問題問起,給應聘者信心。先從基礎問起,逐漸深入,如果是做題也應該如此。對于應聘者來說第一道題都沒有思路那打擊真的太大了(一點也不懂的除外)。這樣一步一步進行一來可以檢查應聘者基礎掌握的如何,二來可以看看應聘者掌握的深度和廣度如何,還可以随機出一些沒有标準答案的題目看看他們有沒有好的思維方式。
5> 從多個方面衡量應聘者的水準。絕不能因為應聘者就不懂as關鍵字而斷言其不能勝任目前的職位。寫程式也不僅僅是對語言掌握的熟練就算最好,代碼風格,安全,性能,異常處理,日志處理(其中有些可能是交叉的)這些都很重要,就.net技術來說webservice,remoting,xml如果是web程式還會有javascript,css,html以及現在吵的很火的ajax之類的。問題要盡量覆寫到項目中用到的方方面面,同樣評價應聘者也要從多個方面着手。