免责声明: 本人前端刚刚入门,本文是在参考了很多文章后总结而出(我只是内容的搬运工,我也尽最大可能将原地址贴出)如果您在文章中看到了自己的内容,并觉得侵犯了您的知识产权,请联系我,我将立即删除。
如何成为一个合格的前端工程师?
前端需要学习那些东西?
校招会考察什么东西?
重难点是什么?
主要参考内容:
HTML
-
常用标签和常见布局
-
HTML5语义化标签
-
HTML5新特性
-
行内元素、块级元素、行内块元素
-
<script>、<script async> 和 <script defer> 的区别 -
meta标签
-
表单元素
-
canvas与svg
-
拖拽Drag
-
音视频(audio和video)
-
离线存储
CSS
-
CSS选择器及其优先级
-
BFC(必考)
-
盒子模型
-
高度/margin塌陷与清除浮动
-
flex布局和Grid布局
-
position定位
-
层叠上下文
-
CSS单位
-
常见布局方式
-
居中(水平居中与垂直居中)
-
两栏布局
-
三栏布局
-
圣杯布局
-
双飞翼布局
-
-
CSS画三角形
-
-
过渡与动画
-
移动端响应式布局
- 布局方式
- 300ms延时的原因和解决方案
-
CSS预处理器
- less
- scss
JavaScript(全都是重点)
-
数据类型与堆栈内存(数据类型,数据类型转换与数据类型检测的几种方法)
-
常用数组方法和字符串方法(数组去重和排序、字符串翻转)
-
函数执行机制与执行上下文(普通函数与箭头函数、自执行函数、构造函数的执行步骤,执行上下文,执行栈)
-
浏览器垃圾回收机制及闭包作用域(变量提升机制、作用域与作用域链、this、arguments、闭包原理、闭包的应用场景、闭包引发的问题)
-
面向对象深入应用(对象的属性和访问方式,结合this的指向(call/bind/apply)、原型与原型链、构造函数、new、继承、深拷贝与浅拷贝)
-
事件循环与任务队列、微任务、宏任务
-
Promise发展历程、Async、Await
-
DOM事件流与事件委托(事件冒泡与事件委托)
-
Ajax/Fetch/Axios/跨域
-
ES6基础语法和进阶
-
let与const
-
解构赋值
-
扩展运算符与reset运算符
-
模板字符串
-
箭头函数
-
Symbol
-
Set和Map
-
Proxy与Reflect
-
迭代器和生成器函数
-
Promise/Async/Await
-
Class语法
-
模块化发展历程(AMD/CMD/CommonJS/ES6Modules)
-
-
设计模式(如发布订阅模式,观察者模式)
-
组件插件封装
-
手撕代码
-
new
-
call/bind/apply
-
Promise/Async/Await
-
reduce/forEach/map/filter
-
instanceof
-
柯里化函数、链式调用
-
防抖和节流
-
Ajax、jsonp
-
深浅拷贝
-
继承
-
数组去重、排序
-
数组扁平化
-
字符串反转
-
千位分隔符
-
发布订阅模式
-
数据类型检测方法封装
-
-
源码解读
-
JQuery
-
Lodash
-
underscore
-
Axios
-
-
正则表达式
-
requestAnimationFrame
Vue
-
MVVM实现原理
-
基础语法
-
常用指令
-
watch和computed、methods比较
-
v-show与v-if
-
key的作用
-
组件中的data属性为什么是函数
-
keep-alive
-
插槽slot
-
-
nextTick原理
-
组件通信方式
-
生命周期
-
虚拟DOM与Diff算法
-
Vuex
- state/getter/mutation/action/module
-
VueRouter
-
hash模式和history模式
-
路由懒加载
-
动态路由
-
嵌套路由
-
编程式导航
-
重定向
-
导航守卫
-
-
组件库(element-ui/vant)和插件(Echarts等)的使用
-
项目目录配置
-
组件库的文档是否熟悉
-
技术选项、坑点总结、性能优化、需求文档、问题解决、组件和功能模块抽离、功能封装
-
-
Vue3
React
-
与Vue的对比
-
JSX
-
setState
-
组件通信
-
虚拟DOM与Diff
-
函数组件、类组件、高阶组件封装
-
受控组件与非受控组件
-
React项目中引入CSS的方案
-
redux/react-redux
-
ReactHooks
Node
-
npm包管理
-
模块查找机制
-
事件循环
-
Express
-
Koa
-
MongoDB
前端工程化
-
Webpack
-
loader和plugin的区别
-
有哪些常用的loader和plugin
-
tree shaking
-
-
Gulp(*)
-
Git
-
Babel
-
Eslint
网络/安全/浏览器/性能优化/操作系统
网络
-
OSI与TCP/IP模型
-
HTTP
-
HTTP请求报文与响应报文
-
HTTP状态码
-
HTTP缓存
-
HTTP1.0/1.1/2.0/3.0
-
Keep-Alive
-
-
DNS
-
TCP和UDP
- 三次握手与四次挥手
-
HTTPS
-
WebSocket
-
CDN
安全
-
XSS
-
CSRF
浏览器
推荐资料:《浏览器工作原理与实践》《图解Google V8》
-
从输入URL到页面展示,发生了什么?
-
浏览器缓存
-
页面渲染优化
-
重绘与回流
-
localStorage和SessionStorage
-
Cookie/Session/Token
性能优化
-
网络层面
-
代码打包
-
技术方案
操作系统
-
进程与线程
-
进程通信
-
死锁
-
进程调度策略
算法
主要参考:
《剑指Offer》
《LeetCode Top100》
《代码随想录》
-
排序(必会)
-
二分查找
-
双指针
-
数组
-
字符串
-
链表
-
栈和队列
-
二叉树
-
BFS和DFS
-
回溯
-
贪心
-
动态规划
-
滑动窗口
简历/面试
该内容来自周啸天老师公开课
简历
-
简历模板(简洁大方,1-2页)
-
简历命名(姓名-学历-工作年限-前端开发-联系方式.pdf)
-
基本信息
-
姓名、联系方式、工作年限、求职岗位
-
学历、专业(教育经历)
-
期望薪资
-
-
专业技能
-
调研招聘需求,提取公共要素、核心要点
-
突出技术广度和实战经验
-
突出深度(如源码阅读、组件插件封装)
-
精简语言,突出重点
-
-
工作履历
-
突出所做贡献
-
不要频繁跳槽
-
-
项目经验
面试的时候,再不济,脑子中也要能够清晰呈现出当前项目所有板块页面的原型图,能够清楚知道该如何去实现,会遇到哪些技术难点(规划出合理的技术栈和使用的插件等)(不要写废话)
-
技术栈
-
负责的功能版块
-
不要无脑描述(如描述使用Vuex做状态管理,VueRouter做路由跳转)
-
项目亮点
-
重难点业务
-
深层次优化、插件、组件的封装
-
重构、性能优化、打包优化
-
-
-
其他
- 兴趣爱好、语言、自我评价
其他
-
自我介绍
-
介绍项目
-
项目中遇到的问题,怎么解决的?
-
项目优化
-
为什么学习前端?
-
怎么学习前端的?(学习途径)
-
如何看待前端的发展?
-
比较擅长那一块,不足的地方在哪里?
-
职业规划
-
缺点与优点?身边人对你的评价?
-
最近看的书?
-
如何看待996和加班
-
你有什么要问的吗?