一篇面试题文章引发的“争议”

     本来我已经感觉上一篇文章《一道或许可以通吃的面试题》回复都回得累了,并且昨天还和dudu发句牢骚,感慨自己没事找事写了篇如此有争议的文章。可今天早晨起来一看,又有一堆回复,当然回复人都很认真的回复,没有漫骂。不过他们表述的观点的确是与我的初衷有所偏颇。我想反正快过年了,大家都有空,我还是把我的想法再写出来,不管谁对谁错,写出来后大家讨论一下,总是可以让读者有所收获的。

     首先我这篇文章的标题的确就是让有些人不爽。“通吃”给人感觉就是不好,所以回复的基调一上来就是你在吹牛,我不同意。哈,但是没有人注意前面还有一个“或许”,这表示我一开始就已经意识到有可能有人不满,所以表明了要和大家讨论,所以拿标题说事的朋友歇歇吧。

     然后我出的通吃面试题如果是什么“值类型与引用类型的区别?”、“接口与抽象类的区别?”、“面向对象的三大特性是?”这些传统面试问题,我想同样会有很多的人来骂SB。这样的问题也好意思提。所以我觉得,对于那些只会骂人不讲道理的朋友,最好此文看到此就结束吧,后面还是有你不满的地方。我欢迎的是有想法的人,哪怕你的意见不同,但请讲出道理,写明你的观点,而不是污染大家的眼睛。

     回顾当时的面试过程,其实是这样的,面试者来到公司,我和他寒暄坐定,于是最传统的方式开始了。“请您先自我介绍一下”,……,约30秒,介绍完毕。“请您介绍一下您的项目经验?”……一分钟左右,介绍完毕。“请说说在这些项目当中,你最满意的是哪个,为什么?”……约三分钟,介绍完毕。然后我问了几个我比较关心的技术问题,得到的回答是“不知道”或简略回答。我觉得对方作为一个有五年编程经验,做过一年项目经理的朋友。我通过这近五分钟的问答,几乎没有得到什么有益的信息。想请问各位,此时你如何办?难道就请这位朋友回家?难道继续问一些问题,得到一个“不知道”的回答完事?

     也许你会有更好的办法,而我却突然想到了一个题目(注意是突发其想,并未深思熟虑),就是上篇文章的第一题:“现在我有一个项目想交给你做,是写一个信息发布的网站。要求很简单,就是有个后台可以增删改查信息的管理页面。前台是一个查看信息列表和查看信息内容的页面。给你一天时间,你打算如何做?”

     这个问题在前文当中引发了很大的争议,就连Cat Chen也就"一個SqlDataSource,就夠一個Microsoft員工或者MVP花上一兩天時間去看源代碼了,並且能夠寫出幾千字的分析來。一個SqlDataSource的問題,就能夠得知一個人是從拖放控件到MVP之間的哪個層次。Point是什麼?就是問題要有區分度。"这样的说辞。我感觉误解大大的了。

     这个问题如果是最牛的程序员,也许会说“给我一小时,我用记事本写代码也能搞定”(夸张了点)。最偷懒的程序员可能会说:“我下载一段代码,一小时搞定”。最善于积累的程序员可能会说:“我以前有类似的代码库,只要复用一下就行了”。还有比如用“某品牌代码生成器”、“CodeSmith”等方法。不过大多数程序员应该说,是可以在一天内通常写数据库连接,或者用我提到的sqldatasource方法实现这个需求。可我怎么也想不通,有人说,“听到这样的题目,立马走人,伤自尊了。面试官在炫耀自己的能力等等云云。”

     嗨……!容我先叹口气。请写这样回复的朋友实事求是的说,当你听到“现在我有一个项目想交给你做,是写一个信息发布的网站。要求很简单,就是有个后台可以增删改查信息的管理页面。前台是一个查看信息列表和查看信息内容的页面。给你一天时间,你打算如何做?”时,你真的觉得面试官在玩弄你?也许我老了,无法理解新一代的程序员的思维方式,但是我还是无法想像这样的问题有什么大的问题。

     当然我还是要简单解释一下为什么出这个问题,因为所有做.net和数据库相关的朋友都知道,这样的题目其实就是在问你基本功,增删改查,还有比这更基本的吗。看你如何一天内完成这样的工作,然后我可能会缩短时间,看你如何半天,一小时完成,从中看你的工作经验和适应压力的能力。答案是什么真的不重要,但通常此题目,以及后面的交互问答,是可以清楚的了解面试者的一些基本能力的。(注意这也是在前面的面试时没有什么成效的基础上问的问题)。

     另外针对weiwei-999所说的“你的面试题目其实不是在考察别人的能力,只是在考察别人的想法是不是和你一样,你以自己为中心了。说不定那个面试者比你更适合你的岗位,只是你有你自己的做法而已。不能敞开自己的胸怀是你最大的错误。”和Cat Chen所说的:“因為1個小時之內做一個CMS的方法有萬千種,他們沒有嚴格的優劣之分,如何判斷答案好還是不好?只能由你的主觀因素來確定,而這很可能就是你主觀認為正確的做法。”我觉得你们还是太在意问题是不是有标准答案了,我根本不在乎这个,只是想了解对方的思维方式和技术特点,仅此而已。我要招的是一个各方面都相对较强的人才,而不是一个可以把CMS做得很牛的专才。事实上,我要招的人,将来所做的工作有很多都是我不熟悉的技术,照你的意思是不是我不能面试了?可公司也没人懂那样的技术,是不是我们公司就不能招到这样的人才了?

     然后来谈第二个问题,其实这是一个与上题相关联的问题,没有上一题,不会有下一题。很多人就因为此题就来说我太狂,装B。如果,面试一开始,我就问:“写一个信息发布的网站,给你50万的项目经费,给你一年的时间,你打算如何做?”那么好像是有些不通人情了。毕竟这个问题太宽泛了,无从答起。可是在前面一道题的铺垫下,接着问这个问题我觉得是符合逻辑的,因为先要求最短时间完成,现在就变成较长时间(一年)完成,你又如何办?要知道,面试者是有一年项目管理经验的。这样的问题很开放,他不可能来一句“不知道”就完了,总得说两句吧,于是话题就打开了,接着聊一聊,说不定我会发现对方只是表达问题言简意赅,而并非水平不够呢。

     我再来解释这个问题为什么要提什么50万经费,有人问我到底是招代码高手,项目经理,还是产品经理,还是老板。于是很多人说我招什么人都没想好,就开始面试,所以……。也许,这些朋友认为招人吗,一定要目标明确,完全符合条件或者多面试几个后选最符合条件者才是正道,那我就要说不同观点了。其实在中国,特别是中小企业,你要一个萝卜一个坑的招人,是不科学的。事实上,中小企业什么人都缺,程序员,高级程序员,项目经理,市场人员,产品主管等等。大公司当然不会这样,不考虑这些。可小公司,照我看,只要是符合公司发展的优秀人才,没有岗位也可以创造岗位来把人招进来。我这道题目,提到了50万的经费(只是一个数字,用不着对此数字较真),是想考查对方有没有成本意识,加上一年的时间,有没有人员招聘和培养人才的意识。如果没有也没关系呀,我可以理解很多程序高手从来不考虑这些问题,那么他还可以谈谈关于一年如何架构这样的系统,如何从技术上做到足够好。至于市场推广,那是我都不熟悉的领域,他要谈了,我也可以学到东西呀。如果只是考察一个人的技术能力是否以偏概全了点?这样开放性的问题很不好吗?

     我发现我们很多朋友都认为面试就是考试。举个例子,比如历史考试时的问答题,请说说五四运动的历史意义,你必须要按照1、2、3……条来回答,如果答对了,是满分,少答了,给部分分,回来后总结,并告诉自己,一定要按标准答案答,不然就错了。可现实的面试不是这样的,我出的这两道题根本不会有标准答案。而且也不会是我说完题目,对方答完,于是我在纸上打一个分数,继续下一道题目,这样的操作方式,不是这样的。面试更应该是聊天,谈话,有交互的,你说到某个技术,我就会针对这个技术再深入的问下去,大家聊聊后,基本对对方都有所了解了。正如有些朋友的回复一样,完全可能出现,面试者说出的东西我根本不懂,那就变成我要向面试者请教了。这也是正常的呀。

     也许是我们国家的高考这种标准的考试制度,害苦了很多本是人才却因没有考好而失去深造机会的朋友。因此现在有不少最重点的高校,比如上海的复旦和交大,每年都会在高考前自主命题,面试一批学生提前录取,为什么要这样,为什么不是笔试考题,而还要增加面试?大家思考过没有呢?

     嗨!再次叹口气,打字都打得有些累了,结束吧。快过年了,大家事情也相对少了点,所以我搞出个很普通的问题,没想到引起了这么大的动静。反正也是聊,那就再聊聊吧,感谢所有认真思考并回复的朋友,你们的文字同样可以给我给大家带来思考,这是非常好的事情。不过希望不要再有什么楼主自视清高,玩弄面试者的言论,我.net的水平一定不可能进博客园的前100名,除了多做了几年工作以外,也是一个很普通很IT的软件工作者。希望不要再有漫骂,而是更多理性的分析,不要太CCTV了。

 

posted on 2009-01-16 11:02  伍迷  阅读(6001)  评论(91编辑  收藏  举报

导航