您会观察者模式吗?(面试小记)

上午9点半,如约来到面试地点,特地还喷了点阿迪男士香水。 
到地了,先填表。OK,大概填了一下,字写的我自己都不认识。
然后就是常规笔试,看了看题目类型(C#高级),题目大概如下:
1.
1.1写出一个单链表的结构体定义
1.2根据定义写于一个插入操作,假设链表是有序的(忘了是升序还是降序了),原型为BOOL Insert(Node* pHead, int value)
1.3 根据你写出的方法,写出所有的测试用例
2.给出一个函数 Char* Revert(Char* pStr),将字符串pStr逆序,然后返回逆序后的字符串
以上是编程题,是给的C++原型,可以用C#或JAVA作答。
底下的都是小题,就记得不清楚:
怎么调试ASP。NET程序?
怎么防止类被继承?
在子类中怎么访问父类的成员?
怎么判断一个dataset是不是空的?
给你一个dataset,怎么在datagrid上显示出来?
ref和out是啥?有什么区别?
viewstate保存页面的状态存在什么地方?
在ASP。NET中Redirect和Transfer有什么区别?(这个还真不会)
怎么从一个company表中选出address以“Beijing”开头的结果?
如果有用户信息,用什么方法可以最快的取出来?请写出你存储和获取User信息的方法。
给一个用户表,用XML格式表达出来。
大概就记得这么多,基本上不怎么难,相信园子里好多兄弟都能得满分。
下面就是面试,是一个HR MM。
先巴拉巴拉介绍自己,说了两分钟。
这位HR MM就开始考我的技术了。
附上招聘需求:
1、大学本科或以上学历,计算机及相关专业毕业,3年以上工作经验。
2、丰富的上C#/.Net开发经验。
3、精通Windows程序设计,精通VS.NET。
4、熟悉TCP/IP网络和多线程编程。
5、热爱技术工作,具有钻研应用新技术、新知识的能力,责任心强。
6、熟悉软件设计流程,具备良好的软件工程思想,对UML/设计模式等有一定了解。
7、有良好的沟通、协调、表达能力,能够独立完成工作,有敬业精神,具备良好的团队精神。
8、较强的英文听说读写能力优先。
9、有WPF/WCF经验者优先。
以下为大概的对话过程:
HRMM:你用过VS吗?
ME:哦。。。。用过
HRMM:你用的是几?是2005吗?
ME:继续。。。。。哦,都用过,2003,2005,2008.
HRMM:您用过TCP/IP和多线程编程吗?
ME:哦,这个真没有。TCP/IP是协议,这个知道些。多线程没有这么针对过,因为多线程编程不好控制和调试,所以基本上项目里不怎么提倡用。
       但是.NET里许多调用,像异步调用都是多线程的。还有基本上如果UI里有些比较耗CPU的操作,这样的话才会考虑多线程。
       (相信很多兄弟都知道,网络编程C++一直是首选啊;多线程的话,因为比较难以调试,需要控制很精确,像大型项目里很少用到,反正我是没用到过)
HRMM:那你对新技术了解吗?比如。NET 3.5.
ME:哦,了解一些。微软的产品升级太快,今年年底就出4.0了,新技术一般我都是稍微了解。
HRMM:那你了解WPF和WCF吗?
ME:哦,首先这两个是3.0版本就有的技术,不是3.5。我因为没做过相关的项目,所以基本上就是了解大概的原理。
       WCF就是集合了以前集中分布式通讯的方法,打包封装成新的WCF。我看过他们的几种服务类型,也就是跟WSE,MSMQ类似。
       (WPF其实就是综合了MS的几种图形技术嘛,2D,3D,流媒体等。说的不对的地方,大家帮我指正。)
HRMM:那就是没有相关经验了,对吗?
ME:哦,是的。
HRMM:你熟悉设计模式吗?(终于到重点了)
ME:哦,稍微知道一些,都是软件开发里一些经验的总结嘛
HRMM:那你都了解哪些模式?
ME:单键和抽象工厂。像在。NET 的类库里就有很多的设计模式的应用,但是基本上这种东西都用在框架设计方面,我作为技术开发人员,比较少参与。
HRMM:不是这样吧,开发模式不仅能用在框架设计方面,在很多方面都有应用吧。
            那你平时在项目里主要的工作是coding是吗?
ME:(我很无奈)是的。(偶在一30+人的组里coding,而且项目都是EADS的,研发近20年的产品)
HRMM:你会观察者模式吗?
ME:这个我真不会。
HRMM:那就不好了,我们对这个还挺看重的。如果给你个问题,你用观察者模式能解决吗?
ME:这个都是些经验的总结,有很多设计模式的书讲这个。但是不是每个项目一定都适合观察者模式,这个得综合考虑。
HRMM:那假如适合观察者模式呢?
ME:我。。。。,
HRMM:你觉得你今天的题答的怎么样?
ME:这题出的一般,我估计我能得70分吧。
HRMM:不见得,以我的经验,估计不会那么高。好多人都觉得这题出的简单,但是都分不高。
ME:主要是吧,计算机这东西有些纸上是写不出来的。可能有人善于写程序,但是写在纸上却不行。这是有很多“软”能力在里面的。
HRMM:那你觉得你的长处在什么地方呢?技术上。
ME;你这个卷子是给高级开发人员出的,出基本的就不合适了。这套卷子有很多应用的东西在里面,做过的人都知道。
      像有些代码,我确实不知道;知道也忘记了,太细了。
HRMM:你还有什么问题问我吗?
ME:没有。



OK ,在继续写点。
1.coding是程序员基本的能力
不论什么级别的程序员,我想coding都是第一位的。但是coding就真的那么简单吗?我却不这么认为,小到一个变量的命名,大到一个功能的实现,没有扎实的coding能力,难保不会出bug?bug出在自己的测试部门还好,要是出了自己部门,那可是丢面子,还有绩效的。
2.HR 基本都是照本宣科
我没有抱怨什么,也没有责怪这位HRMM。就是跟一个不会技术的人谈技术,我很别扭。不知道说什么?
就是写出来,记录一下。我可没有责怪任何人啊。
3.设计模式
DP是很多面试必问的题目,但是这个东西不是那么容易掌握的。你在一个地方应用了某种模式,不见得下次在同样的场景下还能正常应用?而且我认为没有几个大项目的锻炼。而且你确实得负责需求到功能的设计,才能对其有所领悟。我们毕竟不能因为模式而模式吧?而且我个人确实也不喜欢DP,纯个人习惯。


posted @ 2009-09-16 12:41  DiggingDeeply  阅读(5090)  评论(91编辑  收藏  举报