也说面试(原创,原载博客园)

原文在博客园链接:http://www.cnblogs.com/DesignPatterns/archive/2007/07/15/interview.html

前两天跟着项目经理参加了一个面试。虽然不是第一次参加面试,但是还是有点紧张:)

我觉得我们面试的题目已经基本的不能再基本了,但是还是找不到一个合适的人。现在真的成了一种普遍的困境,很多人找不到满意的工作,很多公司找不到满意的人。

闲话不多说了,说说我们的几个题目吧。同时也说说对即将参加面试的兄弟的建议,从一个面试者的角度。

第一个题目:自我介绍。

自我介绍,几乎是每个面试的必备的题目(99%以上)吧。但是,我仍然遇到非常多的人连这个题目都“不准备”。我说的是“不准备”,而不是“准备的不好”。这个题目要准备的出色,是比较难的。我们是外企,我知道很少参加外企面试的兄弟参加外语会紧张,特别是刚开始。所以会出现这样的开头:“Thank you for giving me this oppertunity. It's my honor to talk with you. The following is my self-introduce”。没关系,面试官会理解你,但是,你要背熟,至少要背完。我遇到过好几个连自我介绍都没有背完的,你说怎么会有心情继续!

通常,很难靠自我介绍给你加多少分。但是自我介绍给你减分却非常快,快得出乎你的意料。第一,如果自我介绍没有准备充分,说明你对面试不够重视,当然面试官也会觉得自己不受重视;第二,如果自我介绍没有条理,说明你的总结能力不够;第三,如果自我介绍和简历里面有哪怕一点点的冲突,说明你的人品有问题,不够成熟,或者不够细心。一般来说,说明自己的姓名,年龄,工作年限。再说一下上一家公司就职期间的一两个项目就好了。项目这块是重点,不要云山雾罩,如果你里面有太多的术语,面试官多半是不了解的,除非你们在一个非常相近的领域。说的越简单易懂越好。

第二个题目:你最近在读什么书?或者你毕业后都读过哪些书?

这个是很难作弊的题目。你读过什么就说什么,千万别吹嘘,而且向金瓶梅这类的书就算了。如果真的没读过也就说没读过好了,如果读得一知半解,自己衡量,碰上面试官读过那本书可能会以为你不诚实,或者至少自学能力差。人文类的书也可以说,但是只提一句,看面试官的表情再说。如果面试官一脸茫然,见好就收,不要企图用这个时间向面试官灌输你关于文艺复兴的认识。多说一些经典的书,当然前提是你要多看书。或者你实在没看过什么书,也可以说经常上的网站和论坛或者邮件列表。CSDN这个年头最好不要重点提,因为大抵专心做事的没有多少时间泡在上面。

第三个题目:你认为OO和面向过程的区别是什么?(OO有哪些特点?)进而,多态是什么意思?能不能写一段代码展示一下多态?

这个题目的关于多态的部分是我们项目经理的保留题目,所以别人跟他一起面试通常会跳过这个题目。或者问完了OO的特点,就转过身用期望的眼神看着他?他也就知道该自己了:)。这个问题很基本,OO的特点基本上都能回答上来。至于和面向过程的区别,却比较难回答,但也很难出错:)仁者见仁,智者见智。

多态,我觉得是OO里面一个很基本的概念了,从某种程度上过去我们有些过于强调多态和继承,甚至有说法说理解了多态就理解了OO。写代码的部分,能完全没有错误的很少。不过也减不了多少分,但是要是完全没有体现多态就不好了。

到此为止基本上是个分水岭,如果前三个问题答得好,后面多半不会为难你了。如果答得特别不好,后面的也不会为难你了。

第四个题目:你最熟悉的设计模式是什么?能不能随便找其中一个画个类图或者序列图或者协作图?

这个题目我几乎每个面试都可以问。因为几乎每个人的简历里面都回写上“熟悉OOD”,后面紧跟着“和设计模式”,下一条则是熟悉UML。对于大多数人,所谓的熟悉设计模式不过是Factory(而且是简单工厂,而不是GOF所说的工厂方法或者抽象工厂)、Singleton(千刀万剐的设计模式,被最广泛误用的模式之一)、Observer(因为jdk里面有Observer和listener)、MVC(好有名啊,但是你问到C的几种用法和适用情况就傻眼了,所以我也几乎从来不问)、Visitor(不知道为什么这个也这么出名)。

画类图,绝对不是要求背过GOF的书上的原图。只要差不多能反映模式的含义即可,因为我也记不清楚那么多经典图。顺便会问一下这个图里面的几个箭头表示什么。以经常被选中的Factory为例,要能看出返回的是接口(不管是那种工厂模式,除了简单工厂)。

第五个题目:OO的设计原则能说上几个?随便找其中一个说说。

这个题目用的比较少,一般是前三个题目答的比较好,所以有兴趣继续聊聊稍微深入的话题。或者前面的问题时间太短,用来占用时间:)OO的设计原则有很多,也不要求局限于bob列出的OCP、DIP、SRP等等。像什么面向接口编程啊、封装变化啊等等都可以说。可是就这样能列出一两个的很少,能进一步说两句的就更少了。

说了半天,我希望这是我们公司遇到的特殊情况。如果国内的程序员真的这么不禁面,实在是一个不好的事情。我曾经跟国外的一个实习生一起做一个项目,他所表现出来的素质比我不知道高多少。我们公司虽然在软件行业没有什么名气,但是开发实力在全球还是很靠前的。公司正在把很多的开发移到中国来,但是从我们的面试情况看却很不乐观。

我在软件行业也是一个新手,谁让咱们这个行业吃青春饭呢。建议大家多看书,现在的气氛仿佛过于重实践、轻理论了。要勇于深究理论,理论联系实践。

与大家、与自己共勉。

===================用一条华丽的分割线提醒您的注意====================

本文仅仅是描述一个特定的公司,本着一个特定的目标,由两个特定的面试官面试了一个特定的程序员,这也仅仅是可能的面试中的一个特定步骤,所以请大家不要激动,不要浮想联翩!

非常欢迎中肯的讨论包括批评,但是带有攻击性语言的评论是非常反感的!自嘲为吃青春饭不过是一个调侃,别当真好吗?(又不是小学生了)

文中对CSDN的评论实际上也是因为对近几年的变化表示失望,绝对不是贬低CSDN上活跃的MVP和星星们,再次致以崇高的敬意!

感谢大家的评论,但是不要以偏概全。

不必猜测我的公司,也不必问我给得起多少钱,作为OO程序员至少要对得起OO两个字母。

再次提醒注意的是,第四个和第五个题目要求高了些,但是我也说了这也就是聊聊天而已。而且一定是简历上注明的才会问到。至于前三个题目,我坚持认为这是OO程序员的基础(其实就第三题跟OO有点关系,就是多态嘛,难道您认为一个OO程序员可以不了解多态)。

★★★★★★用另一条更为华丽的分割线结束,并提醒您如果没有看完不要随便评论,特别是不要BS别人★★★★★

 

你可能感兴趣的:(面试,设计模式,oo,uml,mvc,工作)