前言
作为一名前端程序猿,ThoughtWorks的面试在一定程度上冲击了我的认知,面试过程中不仅让我了解了自身优势,也对自己不足有了很深的认知,抛开面试结果来说,整个面试过程就是一次愉快的技术交流。
简历投递与试前准备
很久以前就对TW有所了解,由于自己的不自信和一些其他原因一直不敢尝试,最近收到了朋友的面试推荐邀请(内推),便抱着试一试自己与大企业的差距的心态投递了简历。开始针对TW的企业文化以及技术栈等方面进行准备,因为招聘技术站上react技术占比偏重,于是重点复习了react相关的知识(事实证明大企业需要的不是某方面的技术,而是对基础的掌握,以及学习拓展能力)。
主要复习知识:
1.react生命周期
2.react-router4
3.redux,mobx以及二者的区别
4.http协议
5.前端优化以及响应式设计
复制代码
电话面试
简历投递当天便收到了HR小姐姐的电话,问了我很多关于项目上的问题,从一个项目调研到开发过程中经历的事情,从项目前期技术准备到后期上线维护,中间问的最多的就是我对这个阶段的个人理解与参与情况。最深刻的问题是我在做过的项目中遇到的最棘手的问题是什么,如何去解决的以及除此之外是否有其他解决途径。碰巧在前不久,项目中遇到了一个关于动态路由与页面缓存问题,于是我就这个问题的解决方案以及个人想法进行了详细的描述,另外列举了解决中的不足以及后期的改进措施。
电话面试可以看出这个阶段主要是考验面试者的表达能力以及语言沟通能力,另外就是平时学习积累的途径和对问题的反思总结。
家庭作业
电话面试结束后,HR给我发了一个家庭作业到邮箱,要求在限定时间内提交作业,作业是一个有四个分辨率适配的小项目,需要高保真百分百还原设计图,另外有单元测试的加分项。有前车之鉴,所以我拿到作业之后就开始着手用自己最拿手的技术栈去做这个项目。作业过程都是很熟练的组件式开发,其中最花费时间的便是响应式设计,由于响应式这一块之前接触的比较少,所以在每个组件的各分辨率显示上花费了很多时间,超出预期所以还申请了延长时间。
笔试阶段综合考察了面试者的编码能力、学习能力以及解决问题的能力,以真实项目的完成度上了解面试者的水平。写作业最好选自己最熟悉的技术,不然时间会来不及,影响真实水平的表现。
两轮面试
1.结对编程
第一轮面试有两位面试官,这轮要求是在上次作业的基础上再添加新功能,过程就是很有特色的结对编程,在两位面试官的陪同下一起完成功能拓展。期间一位面试官会要求我先列出完成新功能的步骤,另一位面试管会对我代码不合理的地方进行指出,比如函数形参我喜欢用的params,但这是一个无实义的参数,所以建议改成实际对应的agent,诸如此类的建议。两位面试官在作业过程中的建议还会有所不同,另外我有一个失误的地方,就是在一开始家庭作业时封装的一个模态框组件提取的不够细,导致后面新增功能的时候需要复用到这个模态框组件时只能重新复制一个出来修改。
功能完成后,两位面试官与我就封装过程以及组件提取进行了意见交换,问了我一些关于vue与react的异同,与项目实践上的区别。
2.问答环节
紧接上一轮面试几分钟后,第二轮两位面试官进来了,这次带着我的简历(好像满篇简历都有所勾画),按照简历所写进行问答。两位面试官问题方向有所不同。
一位主要是问项目相关,问了许多从项目调研,技术选项到开发人员之间的交流,与设计、产品之间的沟通等问题,另外对于自己对需求的看法以及意见提出,意见是否采纳,解决途径等问题进行沟通。另外对于平时项目的完成度、加班情况进行了询问,我理解的意思是尽量提升自己的效率,在工作时间段完成目标作业,而不是靠加班去完成,不提倡加班。
另一位面试官主要是询问关于自身学习方面的问题,从最开始是如何进入前端的,学习前端的途径是什么,平时是否有阅读爱好,我写了有对新技术的调研,就问了我了解的最新的技术以及看法,我就讲了一下最近node.js作者新开源的项目deno
,然后问了一些经典的前端问题,例如css的集中居中方式,响应式设计等等。
至此面试结束,总的来说对这次面试的表现很满意,已经超出了我的预期,能够把我所了解的熟悉的擅长的东西展示给面试官,面试过程完全没有紧张感。
结语
从作业到面试整个过程都很顺利,面试反馈中也知道了自己的闪光点与不足之处,另外收到的最深刻的建议是项目每个人都会做,学会怎么让自己与众不同脱颖而出。已经收到了TW的offer,最近就会入职,在技术云集的氛围里去继续提升自己。希望这边文章对将要面试TW的朋友有所帮助。