前端工程师学习路线(给大家整理了JavaScript、Vue、React、node、HTTP、HTML、CSS、ES6、Webpack、TypeScript、Linux、小程序、算法、项目等全套学习资料)
一、入门前端三剑客
1、HTML
html 学起来还是挺简单的,无论你是否有编程基础,我觉得都可以快速入门,对于新手,我推荐找个入门的视频看一下,然后跟着视频打代码就可以了,入门教程随便在网上找个免费的视频就可以了,随便搜索「html入门」即可,或者看菜鸟教程的一个入门教程也行。
看完视频,也可以看一下文字版的教程,不知道大家有没有看过阮一峰写过的教程,我觉得他写的教程都很棒,所以这里我也推荐下大家看一下阮一峰写的这份 HTML 入门教程,可以让你理解的更加透彻:HTML 教程
2、CSS
没啥好说的,和 HTML 相辅相成,你在学习 HTML 的过程中,其实也一直都在接触 CSS,所以你学了 HTML 之后,感觉几个小时就可以学完 CSS 了,还是一样,推荐找个视频快速入门,不多说。
html 是一门标签语言,里面有各种各样的标签,很多初学者学了之后可能就把这些标签忘了,有人可能会问,老是忘了怎么办?
忘了就忘了,没事的,不需要强行记住这些标签,你需要的是:脑子里有个印象,当你这实现某个功能的时候,你知道 HTML 有某个标签可以实现这样的功能就可以了,然后翻开对应的教程,你能够根据教程使用这个标签即可。
用的次数多了,也就记住了,所以学完 HTML 和 CSS,一定要多多实践,随便打开一个网页,对着葫芦画瓢,自己写一个和它类似的就可以了。
3、JavaScript
比起 HTML 和 CSS,JavaScript 会难一些,不过如果你有其他编程语言基础,例如学过 C 语言,Python 或者 Java 啥的,那学起 JavaScript 也是分分钟的事。
前面的 HTML 和 CSS,我的推荐大家找个视频快速入门即可,但是对于 JavaScript,假如你时间不是很紧,那么我推荐你用书籍系统学一下,有些知识,趁着有时间,一定要系统学,这样可以打下很深的底子,如果你觉得难的话,也可以先用视频快速入门,之后再回过头来钻研书籍,系统过一遍,通过系统学习,你会明白很多原理,学到很多设计思想,我看过一本《高性能JavaScript-中文版》,感觉还好,就推荐这一本吧。
学了 JavaScript 之后,可以学一学 ES6,面试貌似也经常会问到,可以看一看阮一峰写的一份入门教程:ES6 教程
二、框架
目前前端用的比较多的主要有 Vue 和 React ,在学习框架之前,一定要先用 HTML + CSS + JavaScript 这些做一些项目,因为这些框架的底层实现,其实就是 JavaScript 实现的,然而,居然还有人知道如何使用 Vue,但没学过 JavaScript,这显然不合适,只有你体验过 HTML + CSS + JavaScript ,你才能更好着明白 Vue 和 React 的好处。
不过对于初学者,可以先学习 Vue,Vue 可能更好入门一些,之前实习的时候,被迫学习了几天的 vue。你可以去B站找一些课程或者购买
不过你看了课程之后,你去做项目的话,其实还是会遇到好多问题的,特别是在网络请求那块,在解决问题的过程中,你就能更加理解一些原理了。
学到什么程度?
对于初学者,我的一半建议就是,跟着一份教程,过一遍,然后做对应的项目即可,之后遇到啥,就去搜索啥,不用纠结这个学到什么程度。
Vue 和 React 随便选一个重点学习即可,我推荐 vue,不过学了 Vue 之后,有时间的话,我建议可以了解下 React,快入通过视频了解,感觉几个小时或者一两天就够了。
三、数据结构
无论你是走什么岗位,数据结构都是必须学习的一门课程,从面试的角度来讲,面试基本比问,特别是校招;从个人的提升上来看,学好数据结构与算法,可以让你走的更远。
但是,数据结构与算法这玩意,可深可浅,不过我觉得至少得掌握如下基础知识:
1、时间复杂度、空间复杂度
2、链表、队列、栈
3、树:初级:二叉树,查找二叉树,进阶:AVL树,红黑树等,至少掌握初级吧。
4、图(图有好多种算法,深度/广度搜索,最短路径、最小生存树等),对于图,其实无论是面试还是工作,都挺少用到,学起来也有一定难度,假如你时间不多,我觉得可以先不学。
不过如果你是科班的,那么这些我觉得你大一第二学期把这些都学完是最好的了,没学完也问题不大,有些人可能是先教《离散数学》这本课,为数据结构与算法做铺垫。
书籍推荐:你学过 JavaScript,所以可以用 Javascript 来写这些数据结构,至于书籍,其实我也不知道推荐啥,网上根据目录找一本:
把基础数据结构学了之后,我觉得你要保持刷题,这个还是挺重要的,例如可以每天保持刷一两道,刚开始刷会挺吃力,但后面熟练了,就会快很多,不过很多人在吃力的那会,就放弃了,所以也就有了人与人之间的差距。
我觉得至少把《剑指 offer》刷完吧,刷完之后,可以去把 leetcode 中 top 100 的热门题做了。
当然,如果你想更加系统着学习算法,可以看我之前写的算法学习路线:谈一谈算法学习之路
四、计算机网络
无论是前端开发还是后端开发,说到底都是数据通过网络在多台主机之间的交互,而且对于前端,计算机网络的知识,用的可能比后端还多,特别是 HTTP 这块,所以呢,计算机网络必须好好学,而且还得重点学。
五、浏览器工作原理
学前端,基本天天和浏览器打交道,因为网页上的各种界面,都是由浏览器来渲染的,所以还是非常有必要学习一下浏览器相关的知识。
如果你在浏览器按 F12,会出现一个「调试」的界面
里面有很多东西,例如各种网络请求数据,各种脚本数据,感兴趣的话,可以去研究研究。
那么具体要学习哪些呢?
我觉得至少得了解一下本地 cookie ,localStorage,SessionStorage 存储吧,还有就是,如何查看一个 http 的请求状态,浏览器关闭后会做哪些处理之类的。
总的来说,就是,从我们发起一个 http 请求,到页面展示如初,浏览器都经历了哪些逻辑处理?
六、进阶
学完了上面这些,可以学一些帮助我们更好着构建一个前端项目的工具,比较常见的有如下几种:
Node.js:这个必须学,主要就是可以帮助我们很快着构建出一个 web 项目,一条命令就搞定了,入门可以在B站/腾讯课堂看视频。
进阶或者更甚层次了解,一般都得看书,自己网上搜一本吧。
Webpack:不同浏览器对 JavaScript 的特性支持的不一致,可以通过构建工具把 JavaScript 代码转换成浏览器能支持的。使用构建工具也能够做到性能优化,比如压缩代码,这个 webpack 可以了解一下,在以后做项目的过程中,还是经常用到 node.js 和 webpack 的,我觉得刚开始会使用就好,后面遇到问题了,在通过问题驱动的方式去深入了解。
七、学习顺序问题
这里讲一下学习顺序的问题,就是说学习了 html + css + javascript 之后,我是先学习前端的一些框架好啊,还是学习数据结构与算法好啊,还是学习计算机网络,浏览器工作原理好呢?
我觉得这个和你时间有关,假如你还是大一大二的话,学校会有数据结构,计算机网络的课程,我觉得跟着学校的顺序学就行,然后的话,像刷题,我觉得有些东西同时做并不会存在矛盾,例如我就建议刷题这个时期,长期保持,然后一边做其他的。
总的来说,我觉得也可以按照我说的这个学习顺序来学,然后算法那一块,当你学习了 Javascript 之后,就可以穿拆整个过程了。
1339页前端面试模块笔记

主要内容:JavaScript、Css、ES6、Vue2、Vue3、React、Node.JS、小程序、HTTP、TypeScript、Webpack、Git、Linux、算法与数据结构、设计模式等
需要的同学转发本文+关注+私信【前端】即可获取,那话不多说,咱们开始正文
JavaScript面试题


Css面试题
css3新增了哪些新特性?
css3动画有哪些?
介绍一下grid网格布局
说说flexbox (弹性盒布局模型),以及适用场景?
说说设备像素、css像素、设备独立像素、dpr、ppi之间的区别?
说说em/px/rem/vh/vw区别?
让Chrome支持小于12px的文字方式有哪些?区别?
怎么理解回流跟重绘?什么场景下会触发?
说说对Css预编语言的理解?有哪些区别?
如果要做优化,Css提高性能的方法有哪些?


ES6面试题
说说var、let、const之间的区别
ES6中数组新增了哪些扩展?
函数新增了哪些扩展?
对象新增了哪些扩展?
你是怎么理解ES6中Promise的?使用场景?
你是怎么理解ES6中Module的?使用场景?
你是怎么理解ES6中Generator的?使用场景?
你是怎么理解ES6中Decorator的?使用场景?
你是怎么理解ES6新增Set、Map两种数据结构的?
你是怎么理解ES6中Proxy的?使用场景?


Vue2面试题
Vue项目中有封装过axios吗?主要是封装哪方面的?
是怎么处理vue项目中的错误的?
你了解axios的原理吗?有看过它的源码吗?
vue要做权限管理该怎么做?
说说你对keep-alive的理解是什么?
你对SPA单页面的理解,它的优缺点分别是什么?如何实现sPA应用呢
SPA首屏加载速度慢的怎么解决?
vue项目本地开发完成后部署到服务器后报404是什么原因呢?
SSR解决了什么问题?有做过SSR吗?你是怎么做的?
vue3有了解过吗?能说说跟vue2的区别吗?


Vue3面试题
Vue3.0所采用的Composition Api 与Vue2.x使用的Options Api有什么不同?
vue3.0的设计目标是什么?做了哪些优化
用vue3.0写过组件吗?如果想实现一个Modal你会怎么设计?
vue3.0性能提升主要是通过哪几方面体现的?
Vue3.0里为什么要用Proxy API替代defineProperty API?
说说Vue 3.0中Treeshaking特性?举例说明一下?


React面试题
说说React diff的原理是什么?
说说对React Hooks的理解?解决了什么问题?
说说你是如何提高组件的渲染效率的?在React中如何避免不必要的render?
说说React性能优化的手段有哪些?
说说你对React Router的理解?常用的Router组件有哪些?
说说React Router有几种模式?实现原理?
你在React项目中是如何使用Redux的?项目结构是如何划分的?
说说对Redux中间件的理解?常用的中间件有哪些?实现原理?
说说你对immutable的理解?如何应用在react项目中?
说说React服务端渲染怎么做?原理是什么?


Node.JS面试题
说说对Node中的process的理解?有哪些常用方法?
说说Node中的EventEmitter?如何实现一个EventEmitter?
说说Node文件查找的优先级以及Require方法的文件查找策略?
说说Node有哪些全局对象?
说说对中间件概念的理解,如何封装node中间件?
说说对Nodejs中的事件循环机制理解?
Node性能如何进行监控以及优化?
如何实现文件上传?说说你的思路
如何实现jwt鉴权机制?说说你的思路
如果让你来设计一个分页功能,你会怎么设计?前后端如何交互?


小程序面试题
说说你对微信小程序的理解?优缺点?
说说微信小程序的生命周期函数有哪些?
说说微信小程序的登录流程?
说说微信小程序中路由跳转的方式有哪些?区别?
说说微信小程序的发布流程?
说说微信小程序的支付流程?
说说微信小程序的实现原理?
说说提高微信小程序的应用速度的手段有哪些?


HTTP面试题


TypeScript面试题
说说你对TypeScript中高级类型的理解?有哪些?
说说你对TypeScript中接口的理解?应用场景?
说说你对TypeScript中类的理解?应用场景?
说说你对TypeScript中枚举类型的理解?应用场景?
说说你对TypeScript中函数的理解?与JavaScript 函数的区别?
说说你对TypeScript中泛型的理解?应用场景?
说说你对TypeScript装饰器的理解?应用场景?
说说对TypeScript中命名空间与模块的理解?区别?
说说如何在React项目中应用TypeScript?
说说如何在Vue项目中应用TypeScript?


Webpack面试题
说说你对webpack的理解?解决了什么问题?
说说webpack的热更新是如何做到的?原理是什么?
说说webpack的构建流程?
说说webpack proxy工作原理?为什么能解决跨域?
说说webpack中常见的Loader?解决了什么问题?
说说webpack中常见的Plugin?解决了什么问题?
说说Loader和Plugin的区别?编写Loader,Plugin的思路?
如何提高webpack的构建速度?
说说如何借助webpack来优化前端性能?
与webpack类似的工具还有哪些?区别?


Git面试题
说说你对版本管理的理解?常用的版本管理工具有哪些?
说你对Git的理解?
说说Git常用的命令有哪些?
说说Git中HEAD、工作树和索引之间的区别?
说说git发生冲突的场景?如何解决?
说说Git中fork,clone,branch这三个概念有什么区别?
说说对git pull和git fetch的理解?有什么区别?
说说你对git rebase和git merge的理解?区别?
说说你对git reset和git revert的理解?区别?
说说你对git stash的理解?应用场景?


Linux面试题


算法与数据结构面试题
说说你对图的理解?相关操作有哪些?
说说常见的排序算法有哪些?区别?
说说你对冒泡排序的理解?如何实现?应用场景?
说说你对二分查找的理解?如何实现?应用场景?
说说你对快速排序的理解?如何实现?应用场景?
说说你对选择排序的理解?如何实现?应用场景?
说说你对插入排序的理解?如何实现?应用场景?
说说你对分而治之、动态规划的理解?区别?
说说你对归并排序的理解?如何实现?应用场景?
说说你对贪心算法、回溯算法的理解?应用场景?


设计模式面试题
说说对设计模式的理解?常见的设计模式有哪些?
说说你对工厂模式的理解?应用场景?
说说你对单例模式的理解?如何实现?
说说你对策略模式的理解?应用场景?
说说你对发布订阅、观察者模式的理解?区别?
说说你对代理模式的理解?应用场景?



转发本文+关注+私信【前端】即可领取