本节主要分类型罗列并讲述一个前端至少应该掌握的知识涉及广度和深度。按照你自己的能力来匹配自己在每一块需要掌握的深度。下面的每个类型的相关学习资料都可以在 materials 中找到。
除了数据结构和算法以外的都应该降低优先级,例如编译原理,它对于前端来说也很重要,但是要记住,本仓库的核心是如何准备面试,要在有限的时间内收益最大化。编译原理,计算机组成原理等等这些应该是放在平时,你工作稳定并且不需要跳槽的时候好好去做。下面给想到急速过这块内容的同学画一下重点。
每一种数据结构都要刷一遍,为了你更好的刷算法,这里给两个途径:
- 阅读短小并且利于前端扫盲的一本书《数据结构与算法JavaScript描述》
- 可以在 LeetCode 找到官方的数据结构教程,其余的可以自己搜索
- 计算机体系结构
- 进程管理
- 内存管理
- 磁盘与文件
- 设备管理
- I/O
- 计算机网络架构模型
- TCP
- IP
- HTTP
- HTTPS
- Websocket
- 系统架构基本概念
- 高并发
- 系统设计
- 分布式
- 大数据
建议: 对于计科和软工的同学我觉得可以跳过这个板块,相关专业的同学,建议也不要花太多的时间,这块收益不大,等面试成功后花时间好好补也是可以的,但是还是特别推荐你看完这个 计算机科学速成课 ,不需要很多时间就能看完。
这里定义的前端基础是:HTML、CSS、JavaScript 的基础知识。
这部分是前端的罪基本要完全掌握的地方,到中高级前端开发者的水平,其实面试官可能不会太去侧重问你这方面的内容了,并不是说不重要,是默认你已经完全掌握。一般情况下都是会挑选几个难度稍微高一点的来检验你对这部分只是的掌握情况
建议:
- 这三块每块都要通读文档或者书籍(如果已经通读过可以直接调过这个步骤),我们建议你通读一本经典书籍,推荐如下:
- HTML:《HTML5权威指南》
- CSS:《CSS揭秘》(时间紧选他)、《CSS权威指南》(时间不紧选他)
- JavaScript:《JavaScript 高级程序设计》(更推荐)、《JavaScript权威指南》(时间不紧选他)
2.JavaScript 还需要更进一步,你需要读完书后系统性的来个总结,所以会建议你阅读一遍别人的系列文章,资料在 materials 中可以找到
3.你需要在进行 1 和 2 的过程中去刷题可以去本仓库的
question-back
文件夹中找到题库。
特别提醒: 你要深入理解 JavaScript 语言的话可能需要花费你巨量时间,比如一个闭包问题就能牵扯出非常非常多的知识点,你一定要权衡自己的时间是否允许,如果时间不允许,建议先做到通读,然后时间如果很充足再考虑深入理解。
上面步骤结束后,你应该将时间花在研究开源库的源码和学习数据结构和算法去。
可以有一个小认知:要想学好 Vue ,那你就去研究用 Vue 实现的开源库,比如element-ui、ant-vue等;要想学好 JavaScript 那你就去研究用 JavaScript 实现的开源库,vue、react 等等。
那要想不怕问算法方法就很简单了啊,刷 LeetCode 就行了。
如果你是刷过很久算法的人,你直接日常继续刷就是了。针对数据结构薄弱的同学,这个板块对于你来说很重要,难度也是最大的一块。首先要确定自己的水平到底是纯小白,还是有点基础但是没有怎么刷过题,如果是纯小白的话,你要在这一块应付面试,你必须得先扫一遍数据结构的基础。可以按照两个步骤来做:
1.这里直接建议看一本简单的入门书籍《算法图解》或者《数据结构与算法JavaScript描述》,建议后者因为是针对 JavaScript 语言的,你阅读起来更快。
2.每天刷一题 LeetCode,刷题攻略参照 LeetCode 刷题建议
有些基础的同学直接做第2步,根据自己时间决定每天刷几题。
建议: 如果你的基础没问题,自我感觉其他模块准备充分的情况下,强烈建议多刷算法。先定一个小目标,刷他 200 道再说后面是要继续刷到 500 还是 1000。
要想说自己熟练掌握或者精通 JavaScript ,你没有研究过几个库的源码你好意思写到简历上去吗?这基本是你的核心竞争力之一,但是要注意量力而行把控难度并且要找对方法。在这里我们列举了一些比较值得阅读的开源项目,并为你做好了难度划分,请参考 源码阅读资源 。
建议: 无论你基础好不好都至少要有阅读开源库的经历,最好是有自己手写的自洽的源码。