赞
踩
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
对于 P 帧、I 帧、B 帧有了解过
P 帧:参考帧。解码时依赖于前面已解码的数据
B 帧:前后参考帧 B 帧后面的 P 帧要优先于它进行解码,然后才能将 B 帧解码
RGB 和 YUV 区别
有了解过哪些直播协议
rtmp 传输方式:tcp 流,格式:flv,连续流
hls 传输方式:http,格式:TS 文件,移动端兼容但 PC 不兼容
dash 这个不太常见只知道传送方式是 http
flv 和 mp4 区别有了解过吗
flv 是属于流式文件是可以边传边解的,不需要通过索引分包,但是 mp4 是需要依赖索引表
MediaSource 规范有了解过
然后还问了一下别的东西,但是我不是很懂就不知清楚了,感觉这一轮面试好奇怪。前端基本没面,反而音视频处理问了很多。
webSocket 和 ajax 的区别
xss、csrf 有了解过吗,如何防范
有了解过 React 的 fiber
能简单介绍一下 react 执行过程吗
beginWork
completeUnitOfWork
jsx 经过 babel 转变成 render 函数
create update
enqueueUpdate
scheduleWork 更新 expiration time
requestWork
workLoop大循环
Effect List
commit
能介绍一下 hook 吗
useState、useEffect、useRef 用法
优化 usecallback、useMemo
情景题,做一个直播弹幕
requestAnimationFarme 和 setTimeout 区别
弹幕节流问题
socket 和轮询优缺点,弹幕池的设计
如何避免弹幕碰撞(这个我答得不好,后来搜索一下有一个飞机场算法)
这一面就是聊人生,扯得比较远。讲了一下产品一般盈利套路,如何拉新、留存、激活、转换和收益。以前在网易 CC 电竞做的事情。对中国电竞前景的看法。
由于是年前面的,所以在会议室面
介绍项目
你项目用到线形代数,我来考考你记不记得可逆矩阵的逆矩阵求法。
求一下三个三元一次方程
然后写一下 matrix.js 里面的优化方程(虽然我也不知道他是什么原理)
如何使用尽可能少的空间做矩阵的转置
技术征文图
然后有白板写了一下
能讲讲欧拉角和旋转矩阵吗,还有他们的相互转换
做到上面,我就十分懵逼,我是不是面错岗位了。
技术征文图
然后是情景题,当场设计系统。
情景以下:
这是一个多人在线协同网页
主要做的是视频标识系统,用来训练 AR 用的模型
并且同一时间,用一视频帧可以有多个人标识
emm。。。。那我大概知道为何之前问我这么多数学问题
这个项目的难点有以下
视频的时间帧的确定
但是视频信息又对应地方 DTS 即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据,和 PTS 即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。我们只需要拿到 PTS 就可以了
绘画过程中 canvas 的优化
对于不规则图形,选择判断方法使用射线法思路,带入公式就可以知道图形是否被选择
多人协同问题,他们之间如何互相通知
如果两个人以上同时对一个标签做处理,这种冲突如何处理
面完情景题,就做算法题,题目也是很奇怪的。
第一题:洗牌算法,这个可以
第二题:假设有偶数位的整数,将整数分开两边,然后对每边的每个数组的每一位求总和,当两边的总和相对就认为这组数符合要求,求2n位数的符合要求数占总数的多少。。。。。有点晕
例子:287962 可以分成 287 962,其中 2 + 8 + 7 = 9 + 6 + 2,那么他就是符合要求的。
可能一面比较难,二面就比较随便:
浏览器缓存策略
跨域处理
https 握手
http2 特性
tcp 三次握手
从 url 到页面显示
redux 和 mobx 的差异
tree-shaking
项目的性能优化
css 的 BEM 规范
当场设计一个 toast
LRU 实现
DNS 的路径选择用了啥算法
聊得比较广,没啥重点
mvvm 和 mvc 模型区别
mvvm 的实现
了解 fiber 吗
了解 hook 吗
为何 react 点击事件放在 settimeout 会拿不到 event 对象
setState 是异步还是同步
由一个是是否批量更新变量来决定
放在 setTimeout 就能实时改变
有用过 node 吗,讲讲流
koa2 和 express 区别
koa2 能使用 async await,express 不能
koa2 有洋葱模型和 ctx 上下文,express 没有
讲讲洋葱模型
实现一个函数 compose([fn1,fn2,fn3…]) 转成 fn3(fn2(fn1()))
koa2 和 egg 的区别
egg 有 controller,service,router
约定了文件目录结构
鉴权有了解过了
Token
OAuth
SSO
还好项目都涉及过,虽然不是我用node写的,是后端写的,但是那时候好奇问了一下,并且查了一些资料,勉强答出来
浏览器缓存策略
跨域处理
https 握手
xss 和 csrf 攻击
Typscript 有了解吗,能讲讲吗
枚举
泛型
webpack 优化
tree-shaking
HMR 实现原理
nginx 有了解吗
缓存策略配置
地址重定向配置
场景题,做一个页面下雪
一个粒子控制器 Class,包含粒子数量、分布情况,粒子的下落速度
用 requestanimationframe 绘画动画
用 css3 开启硬件 GPU 加速
三面也是聊得很广,基本木有前端。
学习过程
其实也没有太过特意去准备面试,其实都是靠平时积累的,在 2019 年开始我就制定了自己的学习计划了,并且每天都坚持学习。可参考 lien的每日学习
以下会分为:
计算机基础
前端专业知识
学习心得
顺序有优先度之分,之所以把计算机基础放在第一位,是因为经过这些面试发现计算机基础考察还有比前端还要多,甚至有些公司面试都不怎么问我前端了。
tip:里面涉及很多都是极客时间的课程,然而我并没有打广告。推荐是因为我看完后真心觉得讲的好,当然好是指容易让初学者了解和上手,深度还是去看专门的权威书做普通吧。
学习办法不是一开始就刷题,要先学点入门。
入门方式有很多种看书看视频,边看边敲。
然后就可以上网看别人面经和一些 leetcode 大神总结的经典题目,按照分类开始刷了。
每道题至少做 3 次,第一次时候遇到不会就不要想很久,8 分钟没有思路就看答案。因为大家一开始都是没啥思路,只有做多多总结才会慢慢有思路。做完后一周后再做第二次。准备跳槽时候再做第三次。
算题顺序为算法面试通关 40 讲、剑指 offer、字节跳动专栏、自己总结的高频题。
我刷的题目也不多,就 100 来道,和别人比起就差远了。
技术征文图
但是我做的题目范围比较广,而且都是自己总结高频再去做,命中的几率比较大。
基本数据结构
数组
队列和栈
链表
二叉树
hash
堆
常见的算法
DFS
BFS
滑动窗口(双指针)
回溯
动态规划
贪心(其实动态规划可以解决)
排序
二分查找
参考资料:
JavaScript版 数据结构与算法,这个适合新人学习,入门基本。
极客时间- 数据结构与算法之美 在有基础上看这个会更好,里面github有js实现方式,自己动手敲一遍
极客时间- 算法面试通关 40 讲这门课真的是好,里面都是高频经典的题目。
leetcode 字节跳动专栏
leetcode 剑指 offer
blog:
awesome-coding-js用 JavaScript 实现的算法和数据结构
labuladong这个动态规范讲得真的好
YaxeZhang/Just-Code针对面试训练算法题, 目前包括字节跳动面试题、 LeetCode 和剑指 offer
网络是前端重要中的重要,也是面试高频的范围。很多人都是一开始就去看计算机网络、TCP/IP 协议、这些书入门,也不是说不好,但是对于新手入门门槛可能太高,还没看几页就放弃了。可以一开始看点视频跟着作者一起来抓包,慢慢熟悉。
观看顺序:
极客时间-透视 HTTP 协议HTTP 作为前端最经常接触而且相对独立,可以先学习这个,再学期其他层。
极客时间-趣谈网络协议作者生动用例子解释网络各层的作用和他们之间的关系,在此形成一个整体的架空,方便后面细节的学习
极客时间 - Web 协议详解与抓包实战。这门课从高层到底层,讲解每一层的细节,由于里面讲解很详细也有很多理论知识,如 RSA 算法、基于椭圆曲线的 ECDH 算法等等可以考虑跳过
最后补充的书籍
图解 http 协议
图解 tcp 协议
TCP/IP 详解(第一卷)
tips:
对于前端来说,http,http2,https 的握手是高频题,要主要复习。
本来想聊聊计算机组成原理、操作系统和编译原理,但是一个我学得不精,第二面试也没有怎么问,操作系统就问 linux 的一些简单指令和写一下 Jenkins 的脚本而已。或者后端对这方面会问得比较多。
以下必须要十分熟悉:
类型,涉及以下:
判断
转换
深度拷贝
闭包,涉及以下:
v8 垃圾回收
变量提升
异步,涉及以下:
async await 原理,generator
宏任务与微任务区别
原型链,涉及以下
prototype
和 __proto__
继承
oop 编程思想
模块化
AMD 与 CMD 区别(比较旧可以忽略)
ES6 特性
箭头函数
Set、Map、WeakSet 和 WeakMap
之前提及的 Promsie,async,Class,Es6 module
参考资料:
先做一份自我检测,一名【合格】前端工程师的自检清单。然后根据自己薄弱点去看相关资料。
书籍:
入门
《JavaScript高级程序(第三版)》
《你不知道的JavaScript(上)》
《JavaScript 忍者秘籍》(一定要买第二版)
《阮一峰 ES6入门》
BLOG:
前端进阶之道
前端面试与进阶指南
ConardLi 的 blog
木易杨前端进阶
FE-Interview
冴羽的博客
掘金好文章:
(1.6w字)浏览器与前端性能灵魂之问,请问你能接得住几个?(上)
(建议收藏)原生JS灵魂之问, 请问你能接得住几个?(上)
(建议精读)原生JS灵魂之问(中),检验自己是否真的熟悉JavaScript?
(2.4w字,建议收藏)???原生JS灵魂之问(下), 冲刺???进阶最后一公里(附个人成长经验分享)
中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)
(中篇)中高级前端大厂面试秘籍,寒冬中为您保驾护航,直通大厂
(下篇)中高级前端大厂面试秘籍,寒冬中为您保驾护航,直通大厂
付费好东西:
对知识付费其实是好事情,站在巨人的肩膀上看东西才会远。
前端面试之道|比较基础的前端知识,适合新人
前端开发核心知识进阶| 从基础出发,由浅入深,还有关于很多工程方面的文章,十分推荐。
有以下比较经典的问题:
缓存策略:协商缓存和强缓存
页面的渲染过程
页面性能优化
参考资料:
浏览器工作原理与实践。这个也是个人十分推荐,因为本人看过《webkit技术揭秘》,发现书上很多东西都是讲浏览器一些实现方式,一堆 C++ 十分难受,但是这个专栏却用十分简单生动的方式来讲述浏览器本质,个人收获很多。
《webkit技术揭秘》
css 选择器优先度
rem、em、vh、vw 和 px 的关系,以及移动端适配方式
清除浮动
盒子模型
flex
层级上下文
各种布局
provide / inject
pros emit
listen
event bus
自行实现 dispatch 和 broadcast 方法
vue 的生命周期
vue 全家桶使用,vuex,vue-router
data,computer,watcher使用
组件通信
第二层:原理
new vue 时候发生什么,每个生命周期对应的源码做了什么
data,watcher,computer的源码实现
nextTick 的原理
指令的本质
vue 的性能优化
Diff 本质
第三层:组件的实现
参考资料:
jspang的vue教程
Vue2.0开发企业级移动端音乐Web App
前端成长必经之路 组件化思维与技巧
源码:
技术征文图
技术征文图
尤雨溪教你写vue 高级vue教程 源码分析!!!这个我特意去fronted master冲了几百元,没想到居然有搬运。
最后看完就做一下题目,看看自己能达到那种水平吧。12道vue高频原理面试题,你能答出几道?
《深入浅出Vue.js》, 这本书真的好,作者每单介绍一个部分的时候,都会由最简单抽象的一个demo,一步一步变成框架实际的样子,最后拿你写的demo和框架实际的对比,分析双方优缺点。
要先看剖析 Vue.js 内部运行机制把手教你如何写一个最小mvvm模式,mvvm是最核心的思想。当你能懂下面的图时候,那么可以进入下一步了
组件
View
先看一下别人的写组件的经验 Vue.js 组件精讲。看完之后就开始动手自己模仿别人的组件了。
推荐模仿对象:
使用:- Class 的生命周期 - Hooc 高阶组件 - Hook 的使用 - react-router 的使用 - Context - redux(包括mobx或saga)
参考资料:
jspang的react教程
Hooks 重构旅游电商网站火车票
React.js 小书先来简单实现一个mvc模型的react吧。
然后 react 最难就是 fiber,fiber 的代码实现十分复杂,这时候无需太过关注代码,只需要知道,fiber 是解决什么问题而诞生,以及相关的概念就好。
推荐按以下顺序阅读文章
这可能是最通俗的 React Fiber(时间分片) 打开方式这文章如标题,真是最通俗易懂。
Fiber 内部: 深入理解 React 的新 reconciliation 算法
如何以及为什么 React Fiber 使用链表遍历组件树
有能力者,可以直接科学上网看原文吧
Lin Clark - A Cartoon Intro to Fiber - React Conf 2017
Inside Fiber: in-depth overview of the new reconciliation algorithm in React
In-depth explanation of state and props update in React
The how and why on React’s usage of linked list in Fiber to walk the component’s tree
Practical application of reverse-engineering guidelines and principles
以下按自己喜欢挑选吧:
【React深入】React事件机制
谈谈React事件机制和未来(react-events)
web浏览器中的javascript
window对象
计时器
浏览器定位和导航
浏览历史
浏览器和屏幕信息
对话框
错误处理
作为window对象属性的文档元素
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
eact 最难就是 fiber,fiber 的代码实现十分复杂,这时候无需太过关注代码,只需要知道,fiber 是解决什么问题而诞生,以及相关的概念就好。
推荐按以下顺序阅读文章
这可能是最通俗的 React Fiber(时间分片) 打开方式这文章如标题,真是最通俗易懂。
Fiber 内部: 深入理解 React 的新 reconciliation 算法
如何以及为什么 React Fiber 使用链表遍历组件树
有能力者,可以直接科学上网看原文吧
Lin Clark - A Cartoon Intro to Fiber - React Conf 2017
Inside Fiber: in-depth overview of the new reconciliation algorithm in React
In-depth explanation of state and props update in React
The how and why on React’s usage of linked list in Fiber to walk the component’s tree
Practical application of reverse-engineering guidelines and principles
以下按自己喜欢挑选吧:
【React深入】React事件机制
谈谈React事件机制和未来(react-events)
web浏览器中的javascript
window对象
计时器
浏览器定位和导航
浏览历史
浏览器和屏幕信息
对话框
错误处理
作为window对象属性的文档元素
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-dGK2eH8Q-1713018146963)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。