TW来了 12/23 收到了ThoughtWorks的HomeWork, 通知我简历筛选已经过了,发给我三个题目,是写程序的题。要求我从中选择一个作答,在2-3天内上交。能够通过TW的简历的筛选让我喜出望外,对这个公司 的兴趣源于公司名称。思想工作?通过进一步了解,让我对他们平等的组织机构有了了解,于是更增加了一份向往。如今有了这次机会,实在是太幸运了。
做作业: 程序题对输入输出没有要求,从题目说明中示范的输入输出来看,用控制台足以解决问题。但是为了方便以后通过其他的方式输入,接受用户输入的函数由外 边传入一个inputStream即可,这样你用System.in就是控制台输入,用StringBufferInputStream就是从字符串输 入。程序逻辑非常简单,但如何设计的可扩展确实值得下一番功夫的。因为后面的结对编程阶段将会对这份代码提出新的需求,并进行重构。花了一天的时间研究设 计模式,用ArgoUML画了UML图。这里前列推荐一下ArgoUML,这是一个JAVA写的UML工具,界面用的是SWING,跨平台性应该不错。关 键是麻雀虽小,五脏俱全,我原来用过RationalRose,只用了1个小时就基本适应了这个工具。看完设计模式以后,有点模式上瘾的感觉,看到什么都 想套个模式……但是本着循序渐进的原则,我还是先写了一个较为简单的版本,已实现基本功能为目的。只设计了3个类。之后开始着手重构。在一番刻意的设计之 后,决定把原来的工程推倒重做……因为改动实在太大了。状态、命令模式的引入使得类的数量增长到10个,并增加了3-4个接口。设计完之后,感觉自己的程 序像是变形金刚了……甚是满意。于是写测试,写Ant脚本,写文档……经过一番体力劳动,打包上交了。静候消息……
笔试: 2008年过去了,第二年我终于收到了TW下一阶段的指示。1月6号下午让我去笔试。想了半天觉得也没什么可准备的,因为据说都是推理题。提前半小时来 到了TW在东直门的办公室。在门外观察了一下,很干净,确实是外企的风格。然后就进去了,里边的工作人员问我找谁,我说面试,然后就让我先坐下等着。TW 的办公区分为两大块,整体布局呈哑铃形状。桌子跟网上说的一样,没有隔板,是很自由的大家围着坐的布局。拿着资料看了几分钟,HR的MM就要请我进入了一 间写着'元'的房间,才意识到这里的办公室都是用中国朝代进行标记的. 一起的还有一个研究生,我们聊了聊天,气氛很融洽,也比较放松。之后就是漫长的笔试过程。首先是逻辑测试,在这个过程中还签署了保密协议,要求不能外泄题 目。题目确实还是设计的比较有针对性的,并不是平时见过的那种智力题。我想如果平时写过程序的话,应该能比较好适应里边的思维模式。但要命的是题目全部是 英文描述,尤其是碰到有一堆从句或者修饰语嵌套在一起的时候,让人想暴走……提前10分钟前偶就全部做完了,但是太过自信,就在那里等着,到最后两分钟的 时候想最后检查一下就交。结果连续发现了问题,主要是对于题意的理解……赶忙改完2道题后,卷子就收上去了T_T听后来HRMM说还改错了……之后是英文 的快速反应题,HR说题比较多,时间很短,一般都做不完。反正能多做就多做呗……一共15分钟的时间,这15分钟也比较痛苦,文字推理题换成英文的真是让 我感叹自己的英文水平,连单词都不认识,怎么选则反义词啊……只能蒙!再往后是OpenQuestion,有大概12到题目,要求用英文任意作答。主要考 察综合素质和与公司文化的契合程度。由于当时感觉又疲惫又晕又饿,所以感觉打得并不怎么好,枉费了我的口才了……我比研究生早很多就交了。HR把我单独待 到一房间,问我有什么问题么,我就问了问后边还有什么筛选环节。MM很亲切的告诉我后边如果能继续,还会有结对编程,技术面试,HR主管面试……God Bless Me,忐忑的回了家。
本来以为笔试完了 隔一天会进行结对编程,谁知道刚坐车回家就接到HRMM电话说第二天要来结对编程……得了,也没的准备了,改什么样就什么样,是骡子是马拉出去给他们溜 溜。晚上看了看Extreme Programming Cook Book 中的Junit,特别复习了一下Eclipse的快捷键,然后在期待与不安中入睡……。
迎着下午一点的太阳和北京特有的刺骨的寒风,我再次出现在了东直门的国华投资大厦下面。经过HR的介绍,我和一位TW的帅哥开始pair. 我们共用一台Mac Book,连接一个液晶显示器,两套键盘和鼠标。首先我解释了我的代码,帅哥很认真的听,不时提出几个问题。问题不断深入,考查设计模式的使用,及设计 OO的概念。我对自己这方面还是比较有自信的,回答的也比较流畅。并且在解释的过程中着重的强调了自己对于扩展性的一些基本想法。并自揭老底告诉他有可能 涉及过度了。都怪前一阵看设计模式看得有点着了魔,什么玩意都想往模式上套,一看就是新手,呵呵!之后提出了几个两个新的需求。于是我们讨论了新的设计, 当我着手开始写代码的时候,才发现这Mac的键盘实在是……具然没有Ctrl! 结果Eclipse里的快捷键全不能用了……昨天晚上白准备了。打字的时候尤其不适应,都怪我是土人一个,用Mac键盘写程序,感觉自己的动作像是小脑出 了问题一般。动不动就按错,最后小心翼翼的一个字母一个字母的按……两个需求变更,最终完成了其中的第一个,但对于第二个变更,我跟TWer进行了建设性 的讨论,并交换了意见,但是由于时间所限,最后没来得及完成。在这个过程中,我看到了我设计和开发习惯的种种不足,学到了很多。比如一定要在测试全部通过 之后才能引入新的变化,并且面向对象的概念很重要的就是根据问题域,逻辑来划分对象,应该就是所谓的领域对象的思想。真的非常感谢那位TWer的指导,花 了两个小时帮助我改进代码。
HRMM又出现了,问我还有没有其他的问题,于是我问了问安排,被告知Office Interview将是Boss战,能否通关拿到Offer在此一举了。临走之前MM说 “我们讨论之后,如果我想起来,明天就能告诉你pair的结果”,我赶紧笑着说"那就麻烦您尽量想起来。”
总算没有白等。结对编程的结果也还算不错。本以为下一轮很快就会结束,却被告知最后如果想通关,还要进行N连战……这让我想起了玩洛克人的感觉……一关一关有一关。相隔了一周左右。N连战开始了。
早上便来到了ThoughWorks办公室。开始Round1 Presentation。一共8个人。4个人一组开始做。我跟3个MM分在一组。我是最后一个讲的,为了能够更清晰的表示我的意思,我决定用中 文+ppt的形式进行表达(英文水平还不太够)。平时在学校里大大小小的课设和项目也算做了不少,所以对于Presentation我还是比较有信心的。 对于后来HR问我的问题:你认为好Presentation的标准是什么。我的解释是让听众和自己都感觉舒服,并能可取所需。具体的标准可能包括保持目光 接触;虽然有不少人说,演讲的时候把人头当作西瓜,或者朝无限远的地方延伸(这样大家都以为你是在看他)。这两种做法我都试过,效果并不好。我尝试过把人 当西瓜,但是没用,脑袋和西瓜长得实在太不像了,而且关键在于让演讲者害怕的其实不是脑袋,而是嵌在一颗颗西瓜,噢不,是脑袋上的一双双注视你的眼睛。至 于把目光放到无限远,可能人多的时候是比较实用的。但我总觉得这样做会让我感觉眩晕,而且自我感觉很痴呆的样子。我认为保持目光接触,这是最好的办法。随 机得看每个人的眼睛,就像跟同一个人在对话一样。把他们想象成一个人,这样就不会紧张了。
Round2 是协作游戏。8人分两组,每组四人。在沟通受限,时间受限的情况下,齐力完成一项手工。这个环节由多名TWer监视着。考察协作和沟通能力。我感觉我们表现得并不好。大家都有点失望:(
Round3是面谈。迎接我的是Jessie。并没有什么让我觉得特别有压力的问题。交流是在轻松的气氛下进行的。我也坦诚的回答了所有的问题。坦诚是很重要的,该什么样就是什么样,自己轻松,也防止误解。
3连战就这样结束了。经历了最长的等待(大概一周多),我终于成功了!接到通知电话的时候感觉好像范进中举……虽然找工作的这段时间,不断在痛苦,迷茫, 中徘徊。但是终于能够拿到喜欢的公司的Offer也算是老天对我不薄了。ThoughtWorks真的很不错,从我面试的一开始我就喜欢上了这个公司,平 等,开放,互相尊重。我想这是每一个热爱技术的人都向往的氛围。待遇也还可以,我觉得在这里我应该可以更好的学习技术,更好的享受技术和生活。这也是我选 择ThoughtWorks的原因吧……
1