三月真是一个忙碌的季节,刚刚开学就需要准备各种面试和笔试(鄙视)。幸运的是,在长达一个月的面试内推季之后,终于同时拿到了阿里和腾讯的offer,还是挺开心的。突而想起久未更新的博客,就冒昧学一学各路大神,分享面试过程中的经验总结。总的来说,本人并不是什么超级大牛,文章更多的是经历叙述,大神可自行绕道。
简单乱入一下,本人主修软件工程专业,对Web有着浓厚兴趣,主攻Web前端
。
就在三月份刚开始的时候,各种群里面就有师兄说,谁要内推,赶紧发邮件。好在牛人师兄多,一开始就投了天猫
、淘宝
。腾讯SNG
和腾讯微信
四份内推简历。
接到的第一个面试是天猫的,在完全没有准备的情况下,就开始了长达一个多小时的电话面试。第一次难免是紧张的,在面试的一个多小时里面,多次处于颤抖状态。这里所说的颤抖是真的,原因很简单,对于这一次面试没有任何准备,加上这个面试足够有分量。挂了电话的时候,第一反应就是不断回想刚刚面试的问题以及自己回答是否正确。于是就不断回想刚刚面试官说过的什么JavaScript事件委托、HTTP状态码、前端模块化怎么实现...
和预想中的一样,第一次面完之后,然后就没有然后了。然而还没来得及失落,以及做足后续准备,腾讯的SNG电话面试就来了,问的问题很少,让你介绍一下自己的项目,为了几个常规问题(文章末尾附上所有面试题目),然后就让你开QQ,远程看你写代码..(从没想过QQ居然是面试工具)。不幸的是,写代码不给查资料,所以写的时候遇到一个闭包问题,卡了好长时间。这一次的面试长达一个半小时左右,然后就进入了漫长的等待。这一次情况不同的是,我有面试官的QQ啊!于是几天之后,我问面试官,为什么我被刷了?面试官给的理由是,你有前端模块化的思想,思路清晰,很不错,但是你写代码卡的时间比较长,必须有个刷人标准..
于是乎,在没有经验的情况下,前两轮面试就这样光荣挂彩了。
在屡屡受挫之后,我开始反思面试的流程:自我介绍
->项目经历
-> 技术问题
-> 我有何问题
。我发现在除了项目经历之后,其他环节都不是问题,毕竟我有着两年的积淀,基础还是很扎实的。
于是我去请教一些师兄,面试应该要注意什么。起初问了微信的两位大牛师兄,结果甚是惊讶。简单总结就是,在讲项目的时候,你需要展示你自己的亮点
,可以说一些装逼
的词,但装逼也是得有真材实料的。比如我在项目中使用了WebSocket,那么面试官很可能问你WebSocket是什么,底层原理你知道么?如果你当场傻掉,面试官就会觉得你只是会使用别人的东西,并不在意实现原理,终究是码农。那么事先你就应当去看看WebSocket协议的官方文档(纯英文,看得累死我了!),这样面试官一问你,你能头头是道,会大大加分。再比如,你在项目中使用了模块化,那么你就一定要知道什么是模块化,而不是说你会用模块化工具。其实要求并不高,你只要能很好说清楚什么是AMD规范,什么是CommonJs规范,各自的优缺点是什么就很够了,起码之后每次面试官问我,我都是秒回的,面试官竟无言以对,也就是对我的认同。
最后一点,也就是最重要的一点是,一定要把面试官往你熟悉的领域引导
,这真的很重要,因为如果你不引导,面试官不了解你的项目,看不到你的亮点,就只能一直问技术问题刁难你,人家在大公司待这么久了,还不是轻松碾压你。所以你在引导的同时,时不时提及一些事先准备好的关键词,技术官一问,你一回答,怎么都妥了~
上述理论其实真的是很管用的,起码我现在觉得自己是半无解了,因为在那之后的淘宝和微信面试中都顺利通过了,也可以放弃29的腾讯线下笔试了(学渣真不会C++),哈哈。
淘宝一轮的电话是一个慵懒的中午打来的,由于三点有课,两点的时候准备上去睡个午觉,还没躺下呢,就接到面试官的电话,我说我准备睡午觉,他说两点了还睡午觉...
不得不说,阿里的面试还是非常专业的,一轮的时候,花了半个小时实践我上面说的理论,然后就狂问十几个技术细节问题!没有一定的技术基础真的招架不住。面完之后个人感觉还不错,口干舌燥上课去了。后来发现阿里的面试状态是在他的招聘网上实时更新的(这一点阿里做的最好)。由于心里有底,看到通过淘宝一面并不是很惊讶,只能说要是这样都不过我就认了!最难的是二面,估计是技术总监什么的,除了常规面试流程之外会一直刁难你,这个时候需要有格外良好的心里素质。像阿里巴巴这种大公司,技术牛是没话可说的,但是我们只是一个大学生,没有做过并发量达到他们零头的应用,所以这一关考验的是思考问题的能力。有些问题是你可能是真的不会的,但是也不要出现好像是
、可能是
、我猜
之类的词眼(我之前就是这样跪掉的),而是说按照我的理解
、给过一点思考时间
、我不太懂这个问题需要我从哪个角度解析
、我以前遇到类似的问题是怎样这个问题应该也是这样
...这样给面试官的印象是,即便你不懂,但是你在全力思考,而且这样会给自己争取很多时间。
微信的面试就不多说了,只能说腾讯的广州研发中心真的很漂亮,一看就是工作的好地方!里面的设备啥的也是好的没话说!但是还是忍不住吐槽一下,腾讯的面试做的不够好,去到二话不说给你六道算法题,时间一个小时,然后又狂问你一个小时,一口水都没的喝!!好在过了,不再赘述。
个人觉得每一次面试都是一次修炼,所以每一次都需要好好总结。这一点我还是做的不错的,我把大部分面试都记录了下来,然后仔细分析研究,避免不会犯二次错误。这里附上一些面试题目和个人准备过程中的一点小笔记。然后推荐同样面试前端的同学好好看看《JavaScript高级程序设计》
和《HTTP权威指南》
,管用。
最后奉上个人的简历,供大家参考,起码没有在简历环节被刷,哈哈。我的简历
袁梓民的个人简历
姓名:袁梓民
性别:男
出生年月:1993年10月14日
学校专业:中山大学软件学院
电话:13824421386
Email:1229084233@qq.com
blog:http://www.cnblogs.com/yuanzm
英语水平:CET-4
专注并且热爱web开发,熟练掌握JavaScript、HTMl、CSS以及JavaScript框架来搭建web应用。了解原生JavaScript和JavaScript类库的使用。
项目地址: http://www.wizland.cn/wizland/index/
项目地址: https://github.com/yuanzm/Live-Chat
Home-Cloud是基于Python的Tornado框架构的一个移动端WebApp。Home-Cloud的开发并没有花费很长时间,得益于之前的Web开发经验。Tornado本身不是一个MVC框架,于是在组织后端代码的时候借鉴了Nodejs的Express框架,将整个后端代码架构成由model层、router层以及view层构成的的MVC结构。好处是显而易见的,当业务逻辑愈发复杂,这种分层架构能够保持项目代码丝毫不会紊乱。前端得益于Tornado的模板机制,在大部分模板引擎都具有继承等优点的情况下,多出了UI模块这一点,使得每一个模块可以拥有自己的html、CSS和js,能够很好符合Web组件化开发的特点。通过这个简单的项目,很好展现了近两年的Web开发经验,从刚开始的写一步看一步到今天的工程思想,感觉收获很大。
项目地址:https://github.com/yuanzm/project-qiuzudui
所做的第一个项目,项目致力于创建一个在校大学生竞赛组队平台,通过这个平台,用户可以在主页查看到近期学校的比赛并能够发出组队邀请。在这个团队里面,我与另外一名成员进行合作负责前端开发。作为第一个项目,主要问题是团队协作以及项目工程经验不足的问题。由于没有很好的组织好项目结构,以及版本控制意识的缺乏,导致后期代码结构混乱的问题频频出现。通过这个项目,领会了项目工程思维的重要性,以及团队协作的重要性。
项目地址:https://github.com/yuanzm/emitong.git
第一次做手机端的Web应用,整个项目用于展示与益米通公司合作商家的优惠信息。项目遇到的主要问题是移动端Web经验缺乏,不同设备的适配问题等。通过查阅资料以及咨询前辈,在这个项目中掌握了Web响应式应用的开发,同时了解了微信公众平台应用开发的基本流程。
项目地址:http://pro.ss.sysu.edu.cn:8080/party_affairs/index.jsp
主要任务是部署基于Java Web的网站服务器和网站的日常维护工作。
项目地址:https://github.com/yuanzm/Snake
在闲暇的时候用JavaScript写了一个贪吃蛇小游戏
从大一开始了解web技术,大二开始正式投入学习web各种技术。正处于快速增长技能的阶段,对于web有着极高的热情,每天坚持学习web。
目前为止对于前端技术比较了解,但是正在学习web后端技术,目标是成为一名优秀的web全端工程师。
拥有较强的学习能力和沟通能力,能够比较良好的和团队成员协同完成开发。