前段时间我面试了一个朋友,前面当然也是问了一些常规的问题。可能是他实在不太合适我们的需要,又感觉人家大老远的赶来,如果几分钟就结束实在也不合适。于是我突发其想的问了一个(严格来说是两个)问题。过后回顾,发现这个问题可大可小,有值得深思的地方。所以就写出来与大家分享一下,虽然没有标准答案,但是回答得好坏与否还是很好判断的。
以下对话内容大半真实,部分搞笑属于虚构。
伍迷:现在我有一个项目想交给你做,是写一个信息发布的网站。要求很简单,就是有个后台有个可以增删改查信息的管理页面。前台是一个查看信息列表和查看信息内容的页面。给你一天时间,你打算如何做?
面试者:只有一天,不太可能吧?
伍迷:一切皆有可能!
面试者:这个,我想想!……这样吧,我去网上Google一下,下载个开源的代码就搞定了。
伍迷:啊?,你说得没错,不过我的意思其实是……
面试者:我知道,你是要我自己写。我自己写,一天估计是不行,三天差不多吧,可以写出来。
伍迷:你如何做呢?
面试者:先建数据库,再写后台的界面,拖拉一些文本框和按钮控件,然后把这些表单的数据通过sql语句存入数据库。修改也是同样的,删除就在列表那个页面进行,列表用的是select。前台显示用select查询到的结果绑定到控件就可以了。
伍迷:OK,可这些工作为什么要三天,如果我想让你半天就完成任务,你如何办?
面试者:半天?老兄,拜托,程序员也是人,不是神。那真是要下载代码了。
伍迷:,我还没有问你,如果只给你一小时,你如何办呢?
面试者:一小时!你不会还有一分钟的需求吧?
伍迷:一分钟当然是不可能的,不过一小时是绝对可能的,而且是自己写,不是下载代码,当然,从结果导向的角度讲,下载源码的方法也是可以的。
面试者:嘿嘿!完成任务就行。
伍迷:现在我还是这样的需求,写一个信息发布的网站,给你50万的项目经费,给你一年的时间,你打算如何做?
面试者:一年时间是不是太长了点?我用不着。
伍迷:,你没明白我的意思,就是一年时间,但是显然不是说,你花三天完成后,然后用50万去北海道逍遥一年少三天,回来后告诉我,任务完成了。对这个网站要求也许会高很多,我希望它可以被任何做信息发布的网站使用。
面试者:任何网站,难道像新浪、搜狐这样的?
伍迷:对的,就是这个意思。要做到连他们这样的网站也可以用你写的这个平台。
面试者:人家早就有了,不需要的!
伍迷:嗨!,我是在出题,又不是要你真的去做!
面试者:哦,明白了,那当然首先要招人了,然后对需求也需要好好整理,编程前估计也要架构一下,完事后还要严密的测试,最后还需要市场推广把它卖出去。
伍迷:哈,好,可以详细谈谈吗?
面试者:…………
好了,我的情景还原基本就差不多了。其实我写这篇文章的目的是想让大家思考这样的问题
- 写一个信息发布的网站。就是有个后台有个可以增删改查信息的管理页面。前台是一个查看信息列表和查看信息内容的页面。给你一天时间,你打算如何做?(其中一天只是表示时间短的意思,对没经验者可以是一周,对有一年经验者,是一到三天,对两三年及以上经验者,应该是半天甚至一个小时。)
- 写一个信息发布的网站,给你50万的项目经费,给你一年的时间,希望它做到可以被任何做信息发布的网站使用,你打算如何做?
显然这两个问题不会有标准答案,不过大家讨论一下,这个问题要深入下去,应该有很多可讨论的地方。比如第一个题目可以考查面试者的基本功,可以细化到sql语句是拼接字符串还是用参数传递,用控件绑定还是生成html,甚至是否考虑过IDE的那些SqlDataSource控件来进行数据连接达到不写一行代码实现功能的目的。而第二个题目就考察得更广了,如何项目管理,比如成本,时间,人员招聘,团队建设等,如何需求调研,需求分析,系统如何设计,系统如何架构,如何分层,需不需要分布式,开发时如何源代码管理,中期如何单元测试,后期如何功能测试和性能测试,软件如何推广等等,我也很难说全。不过看似一个小题目,我觉得它的确可以考查一个面试者的各方面的综合素质。
来吧,还等什么,做题试试看!
备注:
由于本文引起了很大的争议,所以不得不在此做些补充声明。
- 这个面试者,有五年多的编程工作经验,有一年多的项目管理经验,所以不是大家所谓的菜鸟。开始面试时,我也是按照先自我介绍,然后谈谈自己的项目经历的传统方式进行。可是几个问答后,发现水平和简历中所写的相差很大,我也不清楚他到底水平如何。于是突发其想了这两个问题。
- 可能是我的文章题目或者是当中的一些小小搞笑的语言让读者感觉我对此次面试非常不严肃,在玩弄这位面试者。那这些误解的读者真是错了,上面的表述中,有很大的虚构成分,现实中没有任何戏弄的成分。事实上,这位面试者不但没有很生气的离开,反而应该更清楚的认识到自己的不足(至少应该让他觉得没有白跑一趟)。和一些让面试者大冬天请假跑很远过来只是笔试几道题就让人家等回音的面试,我觉得我做得还可以。
- 本文只是一个想法,并不是要真的推广这种面试题,请较真的人放松放松,没必要这么认真。
- “信息发布网站”这个词的确太宽泛,不够准确,其实我的本意是企业级内容管理系统(CMS),我承诺有误,谢谢指正。