前端小白需要学到什么程度可以找工作?

2,958 阅读8分钟

我自学入行的前端,已经是一个有五年两家大厂工作经验的老司机了。回顾了一下我的前端自学入坑的经历~希望能帮到初学者,少走弯路。

零、入门

大二的时候断断续续的看了一些网站开发的知识,但是一直学不会,门外徘徊。直到某一天,一个老师找到我帮忙维护一个学院的网站,还说有钱可以拿。虽然心动,然而我啥也不会呀,但是老师告诉我说只需要改改文字和颜色就行,我信了...

从此走上了一条不归路。迫于答应的事情一定要办到,我每天废寝忘食的学习网站开发维护相关的知识。大约经过了半个多月,我觉得自己好像行了。

维护一个网站需要学习:

服务器

就是一台运行在机房有独立公网IP的电脑。现在,个人学习可以对应云服务器,阿里云ECS。

域名

想要通过域名访问服务器,需要添加DNS解析

Web服务

那时服务器是windows系统,用的IIS。现在,主流的就是Linux系统和Nginx了,按照官方文档安装好Nginx,使用默认配置,基本上一个Web服务就跑起来了。作为一个前端,学到这个程度就够用很多年了

一门后端语言

当时的网站是一个学长用asp.net开发的。现在可以选PHP、Python,还可以选Nodejs

数据库

当时用Access。对应到现在,可以从MySQL或者MongoDB开始学习,增删改查学会就够用

网页开发相关

就是HTML、CSS和JavaScript。其中最难的两个点大概就是CSS布局和DOM操作,初期这个是可以从网上CV的

代码管理

这个项目连代码管理工具都没有,直接一个文件夹

服务器和后端的知识,如果只是了解个皮毛的话,并不需要花费多少时间。但这些基础知识意义重大,可以让一个前端开发者清楚的了解到自己在一个项目中到底是在做什么,不至于迷路~

自学方法

  • 看书
  • 搜索引擎
  • 大牛们的技术博客

当时网络上的资源没现在这么多,主要靠看书。去图书馆借了很多相关的技术书,其中大部分书都是又古老又垃圾的,得到一个结论,歪果仁写的技术书普遍比较有货。很多大牛们的技术博客,对我帮助很大。

迫于资源匮乏和缺少指引,当时走了很多弯路。如果到现在,

  • 书籍的话我推荐只需要一本红宝书就够了
  • 网站资源,w3school和MDN Docs这两个也足够了
  • 大致的看一些理论之后,真实的参与到一个已有的项目里去,修改和维护。关于CSS布局和DOM操作,很多难以理解的理论一下就懂了
  • 学再多理论和练习,都不如亲自实现一个具体的项目

大约达到这样一个状态:一般项目的任何需求如果不会实现的都能通过搜索引擎或者翻书来解决,基本就算入门了。 如果不追求去大厂做大项目的话,其实学到这就可以开始工作了~

一、关于实习

校招前的暑假里我还去一家小公司实习过两个月,虽然也是做网站开发,每天认真干活,但在那家公司几乎什么都没学到,除了各种API用得更熟练了,技术上零成长。唯一的收获大概就是让我下定决心已定要去一家大公司。当然小公司做的产品也并不简单,同样功能俱全,只不过还是用的比较原始的开发方式~

  • 看来很多开发者工作了几年没有任何成长也是极有可能的。

至此,就可以做一个普通技术团队的主力军了~

二、校招面试的那一个多月

校招的过程基本就是被惨虐的过程,幸运的是我投的公司基本都给了面试机会。好多的概念都是第一次在面试上听说,基本前几次面试都是去听新概念的。

SEO

搜索引擎优化,这个一听就能理解,做过个人网站的都知道。对应到前端开发就是使用一些方法,配合搜索引擎录入网页里的信息。

W3C规范

原来每天看的那些文档和书,它们的祖师爷就是W3C。

闭包

这恐怕JavaScript开发者遇到的第一个没有那么直观就能理解的概念。平时的个人小项目开发里几乎从没用到,也没见过,一直没能理解。只能强行背答案了。

性能优化

性能优化是个什么鬼,能实现功能就不错了。回来上网查了别人总结的资料,发现这么做确实能优化性能,网页更快,这个理解起来就没那么难。一些书上面会有总结,但都不如网络上的八股文来的直接和完整。

深拷贝浅拷贝

可以理解,但一直没找到使用场景。

原型链

用来实现继承的,没用过,而且太麻烦,强行背答案。

事件代理

也叫事件委托,是基于事件冒泡和捕获来实现的一种绑定时间的方法。练手项目里都是直接绑定事件的,从没想过要用事件代理,但是这样的概念,听说后也就很快理解了。

盒模型、清除浮动、居中对齐

CSS的问题似乎比较少。

正则表达式

在项目中从未用过,不过看看文档也就知道了。

常用基础知识

数组、字符串的一些常见方法。由于我平时小项目还是写的比较多,这些基本用的很熟练了。

ajax和跨域

无刷新局部更新内容,这个也好理解。

常见算法,时间复杂度

这是大厂必问的,当时把常见的几个排序算法复习了一遍,基本就满足要求了。

实现一个jQuery的$函数

什么?jQuery还能自己写...原来这个也是可以自己去写的,好像也不太难。

还有一道记忆深刻的题,某个产品每天有一个亿的用户访问,服务器扛不住了怎么办?

我...是来面前端的呀!

在校招面试这段时间里主要是对知识体系的补充。了解到一些之前从未关注的概念,然后快速的学习,如果理解不了的就先背答案。有了一定基础后,理解这些概念并不会太难。现在网上会有各种面经和文章,上面的这些概念恐怕已经问不住现在的毕业生了。现在的校招算法问红黑树,手写Promise,竞争是越来越激烈了。

以前问jQuery,现在应该就是问React、Vue框架了。历史在重复。

三、正式工作

正式工作之后,才发现虽然同样是写JavaScript,但是和以前个人操作是完全不一样的。

  • 上班的第一天就深刻理解了从没理解过的闭包,因为项目代码里全是闭包。一是为了限定作用域,二是当做对象来使用。现在有了ES6场景会少很多,最能帮助理解的就是节流函数和防抖函数了
  • 公司有自研的框架,涵盖了jQuery的功能,手写jQuery也能理解了。所以面试造火箭也不是没有道理
  • 代码规范,单引号和双引号,要分号还是不要分号,缩进用4个空格还是2个,团队大了,一起维护项目,这些都是需要约定的
  • 原来在人多的团队,SVN的分支和merge功能是这么用的,真香
  • 前后端分离、CDN,静态资源和动态内容不是放在同一个服务器,为了分流,CDN有好几个域名
  • 自动化的打包工具,代码打包压缩和分割都是自动化的,而这些工具都是团队里的大佬用Nodejs开发的,崇拜
  • 性能监控,1s打开网站、性能优化这些都是有KPI的
  • ajax和前端路由基本把Web应用的体验提升到极致
  • 安全相关,防止XSS攻击,输入和输出的内容都需要经过处理
  • 表单校验,正则表达式都是要根据需求自己实现的,再也没法从网上找到答案直接CV了

大部分知识,如果只是使用的话,其实没有什么学习成本,见过了也就知道了。

接下来就是一段做螺丝钉的经历了。经过了前面的学习和校招的磨砺,道理我都懂,但是真正在一个大项目里做了第一个功能,才发现,原来100行代码真的能引发200个bug...

总结

至此,就是一个专业前端开发团队的新力军了~

从小项目到大项目,流程的要求变高、方案要求变高、代码规范要求变高,性能的要求变高,用户体验的要求变高,需要解决的问题跟着变多,但是Web开发技术的基础并没有变,还是HTML、CSS和JavaScript。