我一个人的前端自学之路

这篇文章不会有技术栈也不会有学习路线,仅仅只是介绍我大学期间的自学经历。我不知道算不算一篇水文。

本人情况:

22届毕业的本科生(不知名的双非二本就不说了);软件工程专业;前端大学纯自学(没有老师指导也没有一起学前端的同伴,真正的一个人摸索了3年)

面试

不知不觉已经大四。

最近一个月都在忙面试的事情,说实话当时也只是抱着试一试大厂的想法。后面面试下来我发现大厂的面试其实也就那样吧

我大概是从10.9才开始面试的(说实话有点晚了,有些大厂都已经找了一些人了,面试难度应该也相对难一点)

面试题我就不发了,网上都有,感觉问的都是基础(我也不知道什么才不算是基础,在我看来都是基础)

前端算法题方面看你相对于后端来说比较简单(我也没面后端不清楚,看我同学他们面的大厂题也比较简单,可能就是网上的面经写的有点难了),可能最难的难度也就是leetcode中级的样子(对于leetcode 500+题选手来说还是比较简单的,应该是时间原因吧,装起来了哈!!!)

下面是大概的面试日程。(虽然不是都过了,但是拿到offer的还是有几家大厂的)

我一个人的前端自学之路_第1张图片

自学经历

大一启蒙阶段(0基础,兴趣和自学热情都很高的一个阶段)

为什么选择软件工程专业?可能好多男生都会有一个计算机梦吗,想想电影里面那些黑客,是不是很酷?当然我也不例外。还有就是听说就业工资高。

记得大一入学的时候我还是一个啥也不会的菜鸟(连安装软件都不会的那一种)

师傅领进门,修行靠个人。

兴趣是最好的老师。

我觉得这两句话非常适合我。

大一一门叫做 “html+css” 的课程应该是我接触到编程的第一门课程(也是唯一的两门根前端相关的课程之一)

首次接触到html和css我就发现我的编程兴趣非常高,上了前几堂课我就开始在bilibili上自学了(至于我怎么在大一找到bilibili大学的,这还得感谢强大的抖音推荐算法啊,我刚刚百度完相关问题抖音就给我推送前端相关的直播。当时兴趣浓厚的我肯定是点就去了啊,然后加了一个群,不得不说,技术的拓展离不开看群里面大佬们聊天,在他们口中我知道了bilibili、慕课、菜鸟教程等一系列白嫖学习途径)

个人觉得:自学一定要多加相关的技术群,时不时就去聊聊天拓展知识面,我觉得这很重要,不然很容易变成井底之蛙和产生知识漏洞

好了,我在bilibili上自学了html和css后也跟着做了许多练习(前期不断的练习很重要,这时候我的兴趣也很浓厚,对于反复的联系并不是觉得枯燥)。

这时候学习的课程才进行到一半,我当时上课干脆就不听课去学js去了(前提是你得跟老师打好招呼或者关系比较好,我属于后者,不然小心被挂科)

学了大概自学一个月的js,大一上学期就结束了

加入工作室

我们学校的制度(每年分为3个学期,分别是春、夏(一个月)、秋)(上学期是秋学期,下学期是春学期+夏学期)

对于我来说这是一个很重要的阶段,影响也是很大的。
当时正逢老师要组建工作室(不止一个老师,我选择加入的当然是教我们html和css的老师的工作室),然后就去面试,然后可能是当时老师看我自学热情比较高吧,就通过了

迎来第一个项目(只会一些html和css和一丢丢js的入门菜鸟阶段)

第一个项目非常简单(它并不是一个商业的项目,而是老师的科研项目),我们只要根据老师的描述把页面写出来就行了,没有UI图也没有别的啥(当时连UI图是什么概念都还不知道。哈哈哈)

当时已经学期结束了,冬天,老师给我们申请了留校一个月来写这个东西(我爸还以为我是犯错误被留校了),有比较可怜的工资(好像500块吧忘记了),还好工作室有暖风机。

当时整个工作室大概有6-8个人一起写,可能自学了js的也就一两个人,我就是其中之一,html和css基础也不错,还会一些3d、过渡什么的一些当时看起来比较高级的东西。

大学第一个假期(依然还是一个在自学的菜鸟阶段)

由于留校了一个月,原本两个月的假期也只有一个月了,回家后基本都在学js和巩固html+css作业这一块(当时html+css的期末课程作业,好像是仿一个网站的布局,我正好拿来练手,别人都是不动的页面,就我做出了的页面有一些动画,一点成就感哈哈哈)

当时学的好像是DOM操作这一块,之间也夹着着一些动画效果的实现,看的是 李立超老师 的js教程视频

大一下学期

依然是工作室写网页(html+css+js很基础的那种原生的,当时技术也比较菜)。

学校教了 “C语言”, 由于我当时已经自学了js,对于if,for这些基本都是知道的,所以上课的时候就没怎么听课,而是把js视频又从头看了一遍(因为DOM的api实在是难以记住,项目里面当时也还用不到多少),后面的结构体和指针还是听了的(因为每一节课上课前PPT都会先列出要教的目录,我看到又不会的才听)

第一场比赛(ICPC省赛)

当时我们学校准备去参加 贵州省 ICPC 的比赛。你没看错,就是ACM的那个,不知道的可以去百度以下,是目前我知道最难最有含金量的世界级的算法比赛,虽然我们参加的是省级。我们系可能也是为了让我们去见见世面把,就给我们大一报了一个队(其他队都是大三的)。我们当时可是连数据结构都没学过,就学了c语言,硬着头皮上了。为了比赛当时我们几个人还自己训练了将近一个月呢。

到了赛场连求素数(签到题)都搞了接近一个小时才过,哈哈哈哈,主要是要求的范围比较大,我们之前都是在自己的电脑上训练,结果正确就行,没有怎么关注性能。

5个小时的比赛时间,我们组3个人一共搞出来两个题,荣获优秀奖(就是只要参加都会有的那种~~~)。

当时一个高中生把所有题全部做出来了,而且它是一个人一组,最后拿了特等奖。(有体验到被吊打的感觉)

通过这次比赛时解题的那种感觉(就像高中解高难度数学题那种感觉),我对算法产生了一些兴趣(这对我以后的发展很重要!!!),后面也参加了很多其他的算法比赛。

比赛结束,工作室自学方向(PHP)

比赛结束后,工作室老师开始给我们选定了几个自学的方向,然我们自己分组学习。有 Android、PHP、Js、PS其他的忘记了。

由于当时我已经学了js,老师就不让我选js了,哈哈哈。后面选了PHP(看的是黑马的视频)。我还记得他们选Android搞了好多天没搞好开发环境,据说是要下载好多个G的那个环境。

我们PHP组的另外两个同学也有点划水的感觉。

时间来到春学期快结束的时候,这时候我PHP基础也基本学完了,没有学框架(主要是不知道有框架这种东西),只学了结合mysql的一些增删改查和session、cookie这些,连类都没学

当然这段时间一直在搞PHP,js忘得差不多了,我有回去看了一遍JS的视频。

第二个项目(开始无尽的前端自学之路)

先说说来由吧,这是一个由当时大三学长们(另一个工作室的)开发了很久的项目,当时缺人手,所以来我们工作室调几个比较优秀的人去打打下手。我是其中之一。

刚开始就去学姐们就发了一个起步文档,里面安装各种环境(git、node、nvm等等)

然后我第一次使用了 git clone 和 npm install等命令(当时不知道是干嘛的,只是按照文档上复制粘贴运行就行了)

由于他们的技术比较高端(vue+eslint+webpack+stylus…),我一个只会html、css和一点js的人哪知道这些啊。少打一个缩进就是一大片报错,刚开始还经常去问学长学姐,后面发现每一次他们说的我都听不懂。没坚持几天就退出了

但是我在这个项目里面我得到一个非常重要的东西 —— 技术选型文档

上面写了vue啊webpack等等技术名称,以我的兴趣肯定是挨个百度这都是啥,然后看网上各种评论。

然后就开始学vue和相关的webpack这些技术栈了

大二上学期(PHP实战,有了基本的VUE技术栈,算是入门了)

我在假期学了webpack,npm,vue,vue-router,vuex,es6大概这几样技术

学校开始了java系列的课程,由于我有node和php的基础,学java然也是非常简单,基本上也是上课的时候学别的东西

然后还没有实战的机会就开始了我的PHP项目

第三个项目(基于wordPress的网站开发,用的html、css、js和PHP)

(我当时做的是自定义主题开发,相当于除了它的API和后台的核心功能,其他都得自己开发)

我对二次开发的厌恶感也是来源于这个项目,可能是当初技术不是特别好把,反正就是添加功能特别麻烦,基本都是曲线救国。(直到现在我依然很不喜欢二次开发,我更喜欢自研,这可能也是我技术栈比较广的原因吧

到了夏学期(一个月,相当于一般学校的实践周或者小学期什么的),学校教了js(时间原因,教得很浅,教教基本语法和if for这些,DOM都没教,更别说什么其他的高级特性了),所以基本上课我都在搞那个PHP的项目,因为这些东西我早就已经自学过了啊

第一个vue技术栈的项目(对vue技术栈的实践)

这是我当时跟老师提出了的一个项目,做的是工作室的前台官网和后台管理系统

当时也有其他的两位同学也学过一点Vue,由于我们是工作室第一届学生,我当时可能是唯一一个会后端(PHP)又会前端(Vue)的了。

所以理所当然我就成了 ‘架构师’,注意这里是带引号的,因为当时真的很菜。

经过这个项目我对 PHP 和 Vue 掌握得更好了。当时前端的技术选型大部分是参考之前学长们的那个项目,也有些变化(例如iview变成了element-ui什么的,css预处理器变成了less),但是他们都不会预处理器,其实就我一个人在用吧哈哈哈。

大二下学期

中间我也在不断的巩固 js,光是李立超的视频都看了4遍(后面是挑着目录看),其他的老师的js视频也看,也自学了npm,重新学了vue和相关的一些技术栈。

还是在继续做着上面Vue的项目

第一个企业的Vue项目(对工程化的认识提升了一个档次)

在假期,在一个QQ群里面遇到一个刚入职的前端小白不会Vue,然后他要给他们公司的项目加功能,之前这个项目是交给外包做的。后来他找到了我,我也接下这个远程开发的任务,这个项目是我接触到的第一个商业的Vue项目,我刚刚拿到源码就被其整齐的目录结构和其中的一些巧妙的封装方法吸引了。例如集中式api管理,动态路由也是在这里第一次接触到。总的来说就是对工程化的认识提升了一个档次。

大三…

后面就是各种前端商业项目,又学了小程序和uniapp,接着又是各种uniapp的项目。中间夹杂真各种js高级特性、性能优化等等的学习。也不断地丰富着我的技术栈

大三就没什么印象比较深刻的记忆了,基本上都是做项目写业务,基本上所有的前端项目都是我技术选型,不断丰富自己的架构能力。

学习路线?

我无法给出你一个完美的学习路线,我不知道我的学习路线是否适合每一个人。例如我并不知道我当初学习了PHP是不是对我后面学习其他语言带来了好处,这也可能是我走的弯路。

至于要不要一来就学后端我觉得需要看你的时间,但是我可以告诉你一个好的前端肯定是要懂后端的。你可以选择等你前端技术比较成熟的时候在发展后端,也可以像我一样前期双休,后期再来选择合适自己的方向。

但我觉得以下几点很重要

  1. 学习期长期在技术交流群活跃是很重要的,因为你可以在里面看到很多你没听过的技术名词,然后你可以去百度他决定要不要学它。

  2. 保持对技术的热爱,保持自研的精神。至少我觉得这对我理解一些 框架/库 的原理做了很重要的铺垫

最后

可能你没有注意到,我在不同的阶段都在学js,可以说学了3年的js。当然学习的层面也在不断提高。
但其实我想说:js很重要。

不断的项目历练巩固了我的基础,自研的精神扩展了我的技术栈,也让我对收获了很多优化的方法。

在一个人自学的路上我时不时也会感受到孤独,我会选择在一些交流群中讨论问题来缓解孤独。看着网友们对我技术的肯定也让我知道我的路线是正确的,也是一种自豪感。

乾坤未定,你我皆是黑马

你可能感兴趣的:(前端,面试,职场和发展)