「面经:面试 ThoughtWorks | 掘金技术征文」

前言

我是一名web前端程序员,说真的TW的面试真的颇有意思,也颇有心意,让我在整个面试过程当中不只仅了解到本身的优点,而且看到了本身的不足之处,先不说面不面得上,面试的过程都是一次很不错的经历。css

一个想法的开端

早在大学里,就对于TW有了解,技术大牛,极客思想,扁平化管理,出国经历。很是的吸引我这样一个憧憬将来的大学生,因而当时校招的时候我便投递了这家公司,但是很不幸的是,简历并未经过,与之无缘。但是那深深的执念,一直存于心中,在一直憧憬着,这是一个想法的开端。html

在毕业半年中,一直在成都知道创宇内工做学习,创宇氛围也很不错,人也不错,本想着在这个地方学习一段时间以后,再去想一想去别处学习。但是在过年以前得知有机会可以进入TW,我就开始坐不住了。前端

提早的准备

在过年期间,大概一周时间,除去陪伴家人的时间,大部分时间我都在补充以前的一些遗漏知识点,大概补充以下html5

1. css,less
  2. html5,语义化
  3. 浏览器适配,响应式设计
  4. JavaScript设计模式(工厂模式、适配器模式、发布订阅模式)
  5. react 生命周期
  6. redux 思想
  7. react-router4
复制代码

在查漏补缺的间隙,我也在阅读一本可视化的书籍《不仅是美:信息图表设计原理与经典案例》,推荐一下这本书,对于可视化的理论知识描述的还不错,运用了大量图表例子来进行理论知识的论证。react

在整个过程当中,我发现,思考给我带来的不止是知识层面的增加,还会给我带来一些宁静,安抚躁动不安的心,由于内心想的TW的面试是很可贵,我这样准备可否经过,后来总结出了一个我以为可以适用于你们的一句话:不论结果如何,我只须要在过程当中尽情的展现本身,让别人多了解我,可以让别人记住有我这么一我的,那我就是值的了。程序员

电话面试

过完年不久,我就将本身的简历发送给了TW的员工(内推),在一周以后便接到一个来电,是HR的电话面试,HR是一个大哥哥,很热情,问了我不少,固然我也是很热情的回答了问题,电话面试过程必定要让别人以为你是一个交流正常,而且谈吐都很到位的人,这样给人第一映像才会很棒,问得最可以引发我关注的问题就是问我通常写文章怎么样,可否描述一下最近写的一篇文章的内容,很巧的是我那几天正好写了一篇读书笔记,也就是上面提到那本书的一个读书笔记,我便与他讲了讲我对书中的理论的见解。整个电面过程很nice,电话面试完了以后就告诉我将会发送一套编程题给我去作。web

从电话面试中能够看出,主要考察的是与人交流的能力,还有就是平时没事儿的时候,也能够码码字,记录一下本身的所学与所得,分享与他人,在论坛上面创建必定的影响力这是提升自我价值的一个很棒的方法,这个观点在进入TW以后,更加的深刻我心,由于在这里不是suggest去创建社区影响力,而是demand或者说是force你们要去创建本身的社区影响力,这或许也是TW吸引个人一个点吧。面试

两次作题

面试题很简单,要求以下:编程

1. 按照发过来的设计图完美制做,也就是高保真百分百还原
  2. 制做一个相似todolist的功能
  3. 适配浏览器 ie9+ 以及市面上流行浏览器
  4. 响应式设计 至少保证1024分辨率
复制代码

第一次做业,我想了好久,那时候没想到可使用框架,因而在搭建完dom与调整完样式以后,我便使用原生js进行todolist的边写,想到运用react的state的方式来进行一次模拟。redux

在写代码中发现不少问题,好比以前不多使用原生js,不知道原生js获取的dom数组并非真的数组,而是类数组,须要转换,还有一些浏览器兼容的问题,也是在作的过程当中才遇到的问题,查了不少资料,最难的仍是模拟react的state的存储模式,可是因为不是虚拟dom,每次数据更换以后,都须要重刷整个页面,这样才可以绑定上相应的函数,这样子作很是的浪费资源,可是因为交做业的时间快到了,也只有硬着头皮提交了。

提交完了这一次做业以后,本身点了一首《凉凉》,后面几天都一直没有反馈,后面实在忍不住,问了一下HR,HR说我没经过,可是他们以为我有潜力,想再给我一次机会,让我重作一次做业,个人内心乐开了花。

接着我拿到做业反馈,思考了好久,想着要展现个人强项,因而开工,搭建react开发框架,最开始仍是想着使用state,但是以为state维护起来比较麻烦,毕竟有不少小组件,索性改为redux,维护store方便一些,并且这是个人强项,写起来轻车熟路,可是美中不足的是模态框我想的太死了,致使后面面试出了一些难堪的地方,稍后会讲到。完成这个只用了以前时间的一半。

提交了第二次做业以后,也仍是惴惴不安的等待着。第三天,就有了反馈,恭喜,得到面试资格。

在笔试阶段,这个发题给人作的想法很不错,不只仅考察了基础知识,还考察了学习能力,解决问题的能力,由于在解决实际业务中,不免遇到问题,如何解决问题的,这是很关键的,并且在作题之间必定要使用本身强项进行完成,否则会很痛苦。

两轮面试

到了面试的时间点,早早的来到公司等待着,当天面试的人只有我一我的,因此很快便被带进了会议室面试。面试一共两轮:

  1. 结对编程???

    首先进来的两位面试官,一个比较年轻,一个比较年长,而后面试的第一个流程就是 结对编程 ,编程的题就是接着以前写的那个做业,继续添加一个功能,这里就要重复用到以前的做业中的模态框,然而我以前写模态框觉得它的业务场景就只有那一个,因此写死了,在这里很尴尬的把那个组建复制了一个出来从新修改。很快半小时左右我完成了任务,在这个编码过程当中,两位面试官都很认真,会帮我指出不合理的地方,及时纠正,在结束以后还会讨论功能实现上的一下看法,并且两位的看法还会不一直,就是对于模态框的打开和关闭的状态是由谁去决定的这一个点,和他们讨论了一些,收获很大,并且在编码过程当中,不会作过多的干扰,让我按照本身的思路去编写代码,很棒的一次结对编程体验。

  2. 问问题

    第二轮面试紧接着上一轮面试,等待了十分钟左右,第二轮面试官进来,拿着简历,按照简历上面我所写的一些东西进行询问,这里我尽可能的展现了我在平时工做上的一些行为和看法,把平时怎么和团队之间工做协做详细的描述给了面试官,而且在询问到我专业知识的时候,因为以前的准备,回答我本身以为仍是满意的。不过有一个点,我以为是我失策了,多是由于回答得很顺利,在回答面试官问我最近看过什么书的时候,我脑壳抽了一下说的是一本设计模式的书,而后面试官让我说一下我印象最深入的一个设计模式,这里我说了适配器模式,可是说的很烂。。。让我以为很丢脸,并且我最近读的书是关于可视化的,我应该讲这本书的,脑壳抽风了,接下来就是让我用英文介绍一下本身,我整我的也是懵的,平时工做环境中根本没有使用英文对话,虽然说平时看英文文档很顺畅,听英文还不错,可是就是口语这一块缺失锻炼,张口就是一口高中生英语水平,说完第一句,我就想挖个洞钻到低下去了,后来我下定狠心,必定要好好的练习口语。

总的来讲,面试过程张弛有度,结对编程很新颖,英文介绍本身也很考验人,准备充分,而后尽情展现本身,把最好的本身展现给面试官看,让他们以为你有潜力,以为你身上有闪光点,我以为这应该是面试最重要的了。

总结

可能对于每一个人都不同,对于TW,从简历投递,到笔试,再到面试,我以为都是比较顺利的,中间没有出现很差的事情,可能我是真的运气不错吧,对于整个面试的经验总结我在上文中的每个点得最后都作了相关的总结,这里就再也不废话了。

进入TW已经4天了,感受你们氛围都很帮,有免费早饭吃,很幸福,有提供高配mac电脑,任意翻墙,常常有大牛在一块儿讨论各类听不懂的神奇的技术,上下班不打卡很自由,团队人员分工齐全(PM,BA,DEV,UX...),各司其职,完成整个项目,很专业,这也许就是这个公司很专业的地方吧,接下来就是我探索TW的旅程,start the happy journey

掘金技术征文连接

juejin.cn/post/1