想起来时的路
在真正拿到腾讯实习offer之前,也是看过不少人的面经,心生向往。很早在入前端坑之前,我就想着大四的时候有机会要尝试去腾讯里实习。
大一入门语言就是C++,这让我很无奈,所以我很快的就抛下忘记了,留下的只是一堆基本编程和它的面向对象的概念。那会儿我喜欢听摇滚乐,民谣,组乐队,玩音乐。其实玩音乐的人理想才是最让人崇拜的,那种自由,那种对生活的追求。可是我知道自己并不能上道,于是学会了吉他和一丢丢的架子鼓,就开始回到了编程学习。选前端真是无意中的,我只是随手买了一本HTML5的书,然后觉得CSS也不错,最后才知道有Javascript这个东西。后来随着逐步的深入,已经开始心生喜欢。
我知道有很多书都是骗钱的,于是我去豆瓣,去亚马逊认认真真比较。买了我第一本最重要的书《Javascript高级程序设计》。接下来的整个暑假,我在没有网络的新家里,每日每夜琢磨书上的知识点,因为它真的很奇葩。后来接触到知乎,自己的前端水平的深度和广度的视野也就跟着上来了,就开始知道前端这水非常深。你现在还可以在百度贴吧,看到一堆人求各种JQuery插件,或者一堆问怎么学有没有前途,却始终不肯开始行动的人。我开始知道了前端要解决各种以前从来不会有的问题和各式各样的新技术。例如:
- 自动化工程
- 模块化加载
- Node.js
- MV*框架
- 预处理器
- 还有程序员的各种学科素养,计算机网络,数据结构等
还要学会看书,很多人自学就只能接受看视频。其实也很简单,因为你并不热爱它,所以看书对你来说实在太无聊了。我到现在为止买了很多本书,大部分都是图灵的动物书,很多书我都认真看过,有的还看不懂。图灵有一句话:站在巨人的肩膀上。这是真的,他们留下来很好的经验和最佳实践都在书里,不看就真的是莫大的损失。其实这些都需要你的热情,因为没有热情的人,很难适应前端变化这么快的环境。
我个人是不畏惧新技术的,因为新技术会让我觉得很酷,那种感觉就是你可以和老外的那帮极客一起玩新的东西,不会让我觉得落伍。我也可以和很多还一直认为前台美工是混在一起的"井底之蛙"们,普及一下最新的技术和未来的发展趋势。特别是听到大学老师也逐步开始推荐大家要去尝试了解Javascript,这让我不断坚定自己的想法,做一个很酷的前端。
于是我开始不断开拓自己的视野,不局限前端于酷炫的页面效果。因为学校团队大部分还是以安卓和开发网站为主,他们其实并不能提供我想要的实践项目和前端专业指导。我只能在我闲暇之余,做一些自己想象的App。我用的Node的express框架,从Backbone玩到Angular,不断积累总结踩坑。一路上挺孤独的,因为身边的大部分都是java的程序员,他们很难知道Javascript有怎样的变化。
腾讯面试
一直到现在,我都觉得不可思议。可能因为确实来的比其他人轻松幸运。在4.7号那会儿,一位腾讯的老师说想和我单独聊聊,看看我有没有能力走内推。或许是因为我简历写的很多前端比较前沿的东西,又或者是看到了我在cnblogs里的大半年的积累,还是github里一些自己写的小项目。他给了我第一轮的电话面试,问了很多东西,都是前端我感兴趣也接触过的东西,所以我能发表自己体验经历的感受。比如各个MV*框架,前端模板引擎,自动化工具。但是到最后,问到了web安全方面,关于XSS和CSRF我是不甚了解的。只知道很多特殊的符号要通过转义显示出来,来防止恶意的代码嵌入。基本上是一问三不知~T.T。但是面试官很好人,他说让我好好写一份简历,应该是交给二轮面试官。
我之前知道二轮面试一般来说,都是技术面,如果遇到很苛刻的人,可能会劈头盖脸一堆算法和脑筋急转弯的题目。我也是揪心了很久,看了很多之前写的递归算法和排序算法。可是幸运的是,二轮面试官yg老师并不是这样的,他希望听到我对前端开发的见解,他想知道我是否喜欢并了解这个岗位。他和我说:“实习生,我更希望他们会思考”。后来yg老师出了个任务给我,让我尝试一下,一个多人web聊天室搭建的整个过程。我需要一个人,前端后台数据库的全栈开发。我当时其实心里,只是大概知道该用什么技术来做这个webApp。但是我和他说,简陋的聊天室,我需要用一个星期的时间。后来想想,这个简直是我在逼我自己
后来我选用了meteor框架搭建,我并没有用过它,但是因为它是基于Node.js架构的,MongoDB做数据库,是一个有socket.io的实时平台,所以我打算借此机会练练手。我推掉了团队一个星期的工作,一边上课,一边抽时间专研meteor。至于学习meteor的过程我就忽略不说了,基本上就是百度,stack overflow,这样子下来的。因为之前做过Backbone,对Meteor的View上的数据渲染和事件绑定都是比较清楚的。搭过express,对路由和模板渲染,Mongo数据库的使用也是挺清楚的。唯一让我花费了很多时间去理解的,便是本地数据库与远程数据库之间的关系。有兴趣学Meteor的同学,也可以关注一下,绝对大开眼界。
总之,我之前自己做的小玩意儿,自己踩过的各种小坑,这一会儿都多多少少派的上用场。后来用了4天的时间,我就做完了最基本的需求,登陆用户,单人会话,发起多人群聊。后来我给我女朋友看的时候,她对我说这个和微信差不多啊,没什么特别的,哈哈哈。在这个期间,每天向面试官报告进度的时候,面试官也是挺满意的~我知道自己已经离机会不远了。
后来的Hr电话面试也是在轻松愉快的氛围中结束的,过了一个星期,我就接到了电子offer。正式宣布我靠我的运气和一丢丢的实力,拿到了腾讯暑期实习的offer。
接下来的安排
我找回第一轮的面试官,田老师。我说感谢他给了个机会我。他就开始分配实习前的任务给我,主要是关于Node.js的。
- 熟悉Node.js
- 掌握异步编程,了解并区别async,promise,Generator
- 看实现Generator迭代的库co的源代码
我听到之后,非常开心,因为确实也只有非常好的平台才会给我机会去实践这些Js前沿技术。我现在也在不断学习中,希望到时候暑期实习时,可以得到更多更宝贵的东西。
后记
不得不说,运气也是一种实力。
谢谢4月份走运的我。
我需要更努力来证明自己并不仅仅是因为运气,哈哈。