非科班普通院校的我,如何自学前端斩获多份大厂 offer,最终走进阿里巴巴

16,361 阅读16分钟

前言

首先我事先声明,对于这篇文章,是我写给和我一样是非科班,但是又很想从事前端工作的对未来前途感到迷茫的同学们的。希望你们在看到我的这篇文章之后能够坚定自己的方向,做自己喜欢的事情。

写这篇文章之前先介绍一下我自己,我是来自中南林业科技大学的一名大三学生,我叫罗霁鑫,专业是地理信息科学非科班出身。自学前端大概有一年的时间,在 2020 年寒假结束至现在我先后收到了滴答清单、小米和阿里巴巴的实习 offer,腾讯的面试流程处于最后一面 hr 面。最后我选择了阿里巴巴

起初寒假的我是准备考研的,觉得还是考到一个好的 985/211 院校提升自己的竞争力吧,非科班的我想要挤身进大厂,说实话我很没有信心。但是后来我偶然收到同伴给我发的一个阿里实习内推的链接,他叫 王家祺计算机科学与技术专业。当时我试着投了下简历,先是通过了初面,虽然只是一个初面,但是确实给了我很大的信心。之后我就开始花时间准备接下来的面试了。我想我可以花一个月的时间去沉淀我学习了一年的前端知识,去努力争取一个跻身进大厂的机会。而最后的结果相信大家也猜到了,那就是我们俩一起通过了面试,加入了阿里同一个团队。

为什么我不去考研?

相信很多人现在考研是因为觉得毕业后自己找不到一个好工作,想要考到一个好的大学,提升自己的学历,为以后找到一个好工作打下基础。起初这也是我最真实的想法。那么问题来了,想要通过考研找到一个好的工作有必要吗?或者说考研对于找工作的意义大吗?

就比如说我吧,普通院校,非科班出身,想要从事互联网前端开发。我们先来看看近几年全国报考考研的人数走向:

考研报名人数走向

由上图可以看出考研的人数逐年上升,其中也包括了很多二战甚至多战的考生。同时我们知道 2020 年的考研人数更是达到了 340 万!,而又由于疫情原因,对于 2021 考研的学子们更是一大难题。学校不开学,只能在家里学习,这个在家里学习呢,相信大家都明白。我也是在家复习过考研一段时间的,个人觉得家里确实不是个很好学习的地方。每次我在认真的看网课学习的时候,家里的大人们聊天,小孩啊吵闹的声音确实让人很难静下心来。我身边不少小伙伴们也和我吐槽这个。确实由于疫情原因,考研形式越来越严峻,不光是考研,高考也推迟了。

那么我们回到正题:考研真的对于找工作的意义很大吗?当然我这里说的是针对那些和我一样想找前端工作职位的同学们。如果你真的想要从事互联网前端工作,那么我建议你可以试着去找找实习,而不是优先考研。当然你如果不是很想从事前端这块,而是真的很想去转计算机专业,多学一点计算机专业的知识,想要从事研究型的工作那你可以尝试考研。而对于我来说,我很喜欢前端,想要多学习前端这块的知识,但是考研并没有相关与前端这块的专业。那么我会想到去公司实习,去公司提升自己的价值,扩宽自己的知识面,让自己成就感 up up。

所以我真心建议那些和我一样还在犹豫不知道是考研还是找工作,真心喜欢互联网前端工作的同学们尝试着找找实习,并不会耽误你太多时间。

怎么准备前端面试?

如果你现在准备开始找前端实习的话那么面试是一个很重要的环节。接下里我会具体讲一下我在这一个月的时间里是怎么准备面试的。后面都是满满的干货,建议精读

在我面试的准备过程中发现,面试无非就是这么以下四点:

一基础,二项目,三简历,四心态

一、基础

首先是基础,那么到底是什么样的基础呢?小伙伴们可以参考以下我总结的几个要点(ps:并不是很全面,但是很有用):

前端面试

接下来我主要就是就以上几个大点做个说明:

  1. html:知道 html 的语义化标签,html5 新特性以及一些标签的作用。
  2. css:建议去过一遍《css 权威指南》,布局、定位、盒子模型是重点。
  3. js:这一块内容比较多。如果你 js 学的不怎么好,那么就要加把劲了。把基础、算法、数据结构这块搞懂,多去LeetCode上刷题。相关的应用如:防抖和节流、xmlhttprequest,js 动画这块。建议把《JavaScript 高级程序设计》精读一遍。
  4. 网络:网络这块我主要就是把《图解 http》看了一遍。如果心有余力的同学可以去看一下《深入浅出 https》,这块内容比较复杂,涉及到密码学,网络安全攻防这块。关于网络安全也是重点,特别是 xss,csrf,以及 sql 注入这块都是需要去深入理解的,知道他们的原理,攻击作用以及如何防御。
  5. 框架:这一块也是重中之重,由于我本人的技术栈主要是 vue,所以我主要介绍我是怎么准备 vue 相关面试的。首先你要对 vue 的使用非常熟练,这个就体现在你平时做项目的过程中了。一些基本的 api、mixin、插槽、组件传值、生命周期这些都是基础了,同时你也可以了解 vue3.0 的一些新特性:基于代理机制的观察者模式去监听属性等等。最重要的是:你得要去看看源码,知道 vue 的一些底层实现原理,这在面试过程中是非常加分的,主要的可以去看看mvvm 实现的源码vue 实现响应式监听的源码以及vue-router 和 vuex 的源码
  6. 性能优化:这方面也是一个重头戏,我面试过的这几个公司里没有一个不考一下性能优化这块的。关于性能优化的话,主要就是这么几点:浏览器缓存,这是你必须要答到的!如果让你谈前端优化,缓存都不说,说明你项目经验不够,其他的什么预加载和懒加载,webworker 线程这些都可以了解一下。
  7. 工程化:主要是考 webpack 这块,plugin 和 babel 的使用,解决了什么问题。由于我自己写简历的时候只是说了了解过 webpack,所以面试官并没有就这个深入的追问。

如果各位小伙伴时间充沛的话可以去b 站找找视频看一看,当然如果你是土豪可以去慕课网看看,(ps:其实也可以去百度花钱买盗版的看)我这里推荐几位慕课上的老师:双越老师和 dell 老师,这两位老师讲课非常有深度,循序渐进。特别是 Dell 老师每次课后都会说一句:“我们一起加油吧!”。每次听到,自己内心都在说,加油加油加油!不是你一个人在战斗!哈哈哈哈内心戏有点足了我。

二、项目

第二个便是项目了,项目是你简历吸引面试官的一大亮点。这个其实也不是一个月就能做到那么好的,主要还是靠平常做项目的积累起来的。但是这些项目必须要成为你的一个亮点,你就要知道你做的项目最好是要有实际应用价值的。不只是你看了一些网上的实战课程动手去跟着做的这些什么后台管理系统,仿简书,仿去哪儿网,仿美团外卖啥的。这些都不是你的亮点,也不足以成为你的亮点。你的亮点是你做的这个项目是根据实际的需求做出来,你必须明白一点:一切项目都是由需求而生

正确的需求分析决定了产品的方向

——来自百度百科

我在大学期间先后做了那么几个项目虽然不是很大,但是有几个也是产生了相当不错的价值的。

  1. 走进林科大微信小程序:这个小程序算是我正式参与制作项目的第一个成品,现在由我们 gis 协会的会长在维护这个微信小程序,(ps:不过最近他在努力准备考研,服务器那边出了点问题,以后要交由学弟管理了)。而我是协会的副会长,主要负责小程序的前端的制作。现在小程序的用户使用量达到了 191 位,主要是我们学院的 19 级新生开学时使用过,我们院是个小院,新生人数大概在 300 人左右。差不多有 2/3 的占比。

  2. 森林虚拟仿真防火教学平台:这个项目主要使用了 cesium 以及 jquery 制作的一个三维地球项目,主要功能是将处理后的遥感数据展示在三维地球上。现在挂在学院内网上,主要是供老师教学使用。

    Cesium 是一款面向三维地球和地图的,世界级的 JavaScript 开源产品。它提供了基于 JavaScript 语言的开发包,方便用户快速搭建一款零插件的虚拟地球 Web 应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。

    ——来自 CSDN

其余的比如说还有肺炎疫情分布图,个人资金管理。这些主要是由于个人的需求制作的。

三、简历

自己的简历要写的丰富一点,特别是对项目的描述。要写清楚自己担任的职位,项目的源码地址,如果是上线的项目可以写上线上地址,还有项目使用的技术栈、主要功能以及技术难点都要写清楚,这样面试官可以通过你的项目经历做一个初步的评估。所以项目经历越丰富越好,但是也不要什么项目都往简历上写。还是像我说的那样,写有实际应用价值的项目

还有最最最最重要的一点:千万不要在简历上坑自己!在写自己的技能项时,了解,熟悉,熟练,精通要分的清。自己不会的技能项或者是只是听过这个东西有过一点点的了解,那就不要写到自己的简历上了。切记!

四、心态

保持一个良好的心态也是面试成功的一个关键,不能太过于紧张,当然像我这种第一次面试的肯定会很紧张,不过随着面试的次数增多,面试的深度逐渐加深,我也渐渐的没有第一次面试时那么紧张了。但是适当的紧张还是要有的,这可以让你保持一定的清醒,大脑时刻运转。

如果你在面试过程中因为一道面试题没有接触到答不上来,你可以先向面试官求助,让面试官给你一点提示。面试不像考试,考试你做得出来就做,做不出来那就没办法了,面试不同,在你没有头绪的情况下,你可以请求面试官给点提示,提供一点思路。如果还是答不上来,那么你就不要再纠结这个,选择虚心的像面试官请教。面试官会非常愿意给你解答这个问题。但假如你死磕这道题,面试官无疑觉得你在硬撑着浪费时间,会给面试官留下不好的印象。所以千万不要这样做,学会有答必应,无答则问。

我是怎么学习前端的

前面说了那么多其实都是我自己在面试过程中总结出来的,分享给大家就是不想你们也踩坑。那么接下来就说说我是怎么学习前端的,先放一张我学习前端到现在的路线图吧(未来一段时间在阿里可能会注重移动端的前端开发):

Eric的前端学习路线图

第一次接触前端是我们协会的前任会长给我们上课时,看着一些简单的 html 和 css 代码却实现出了一些漂亮的效果就觉得很惊艳,也是第一次感触到了前端的魅力。于是我就开始走上了前端的道路。利用一切课余休闲时间以及寒暑假的时间自学前端知识。

起初我主要是通过在 b 站,慕课网上看视频学习前端。后来发现如果只通过看视频学习的话,容易遗漏一些知识点,所以我渐渐开始去网上找一些电子书来看(ps:电子书用 ipad 看方便一点,关键是免费哈哈哈哈)。这边可以推荐大家去看看这些书(ps:其中包括一些 webgl 的书,如果有兴趣的伙伴们可以去看看):

  • 《css 权威指南》
  • 《JavaScript 高级程序设计》
  • 《JavaScript 权威指南》
  • 《你不知道的 JavaScript》上、中、下,很厚的一本书,讲的非常细,建议可以挑着看。
  • 《图解 http》
  • 《WebGL 编程指南》

上面这些书小伙伴们都可以去拜读一下,当然《WebGL 编程指南》这本书如果有兴趣的也可以去了解一下,主要是我现在在读这本书觉得还不错就推荐给你们。

其实我相信很多和我一样非科班的小伙伴们自学前端的时候,都会有一个疑问,那就是:我现在专业课程都那么多了,专业课都学不过来,我自己自学前端还那么吃力,那我学了前端到底有没有用呢?

我曾经也有过这样的疑问,我当时一度陷入瓶颈,自我怀疑,不自信,觉得自己学了那么多东西到底有没有用啊。就算我那么喜欢前端,但是我也不禁自问:我学这些我以后能找到工作吗?能找到一个好工作吗?毕竟面临毕业,要面对的是自己的生存问题。我真的还能这么笃定的坚持不懈的去做自己喜欢的事情吗?

解答这些问题之前,我想先送给各位一句话:

时间可以证明一切,你所坚定不移的,在未来的某一天终将会毫无保留的回馈给你

我记得我当时和我的老师说过我的这些疑问,我老师回复我说:“不要把时间浪费在纠结上”。是啊,我为什么要把时间浪费在自我的纠结中,我有这些时间我不知道我多学点知识吗?为什么要浪费时间!时间是挤出来的,就算专业课程多,我总还是有休闲的时间,那么我就可以抓住这些零散的时间去学习我喜欢的东西。

渐渐的我走出了这个死胡同,同时在学院的一次项目经历中我找到了属于我自己的方向,第一次我将我自学的前端知识与我的专业——地理信息科学相结合,走向WebGL 编程

WebGL,是一项用来在网页上绘制和渲染复杂三维图形(3D 图形),并允许用户与之进行交互的技术。该技术结合了 HTML5 和 JavaScript,允许开发者在网页上创建和渲染三维图形

——来自《WebGL 编程指南》

在 WebGL 中我将地理数据作为数据源,在前端进行可视化处理。第一次的专业知识与自己自学的前端知识相结合,让我感到了满满的成就感。

所以在这里我想告诉和我一样是非科班自学前端的小伙伴们,不要质疑自己,勇敢地做自己喜欢的事情,并且坚定不移地走下去,终有一天你会找到属于自己的方向(现在的前端和以前不一样了,前端的方向太多了真的)。如果你和我一样不知道是考研还是找工作,犹豫不决的时候,我希望你也可以腾出一点时间去面试一下,去争取一下。其实现在并不是说什么大厂非要 985/211 不可,大厂注重的还是个人实力和经历。

结语

最后我要特别感谢我的一位校友兄弟 王家祺,起初要不是因为他我到现在应该还在复习考研吧哈哈哈哈。关键我当时也是考研实习之间纠结,他就叫我去试一试,结果咱哥俩就一起进阿里了,莫名的缘分呀哎。还有还有就是全世界最好的元泉师兄,在阿里的这一系列的面试流程中,师兄真的帮了我们好多忙,真的太感谢元泉师兄了!还有我的室友罗振华,他现在是在字节跳动做产品经理呢,他也给了我好多的经验,让我不要踩哪些坑呀哈哈哈哈。当然还有前端未来之星群里面的各位大佬们解答我内心的疑惑。总之就是非常感谢我身边的人对我的帮助与鼓励,谢谢你们!

如果你也想加入东半球实力最强的前端团队,可以加我阿里师兄的微信:wuxiaorui86,我和 @17 级计科 2 班王家祺 同学两个人就是在师兄的帮助下走到最后的!如果已经有幸加入了东半球实力最强的前端团队,师兄还会辅导你的转正答辩,转正率几乎 100%

如果你也想跟我一样进入阿里这样的大厂,欢迎关注我们的公众号:Hello FE,我们会定期在公众号发一些自己的学习心得~

公众号

除了我的这篇文章,我的同门师兄弟也做了总结,面向科班的同学: