javascript
- 知道
class
继承与组合寄生继承的差别,并能举例说明 - 知道
event
loop
原理,知道宏微任务,并且能从个人理解层面说出为什么要区分。知道node
和浏览器在实现loop
时候的差别 - 能将继承、作用域、闭包、模块这些概念融汇贯通,并且结合实际例子说明这几个概念怎样结合在一起
- 能脱口而出2种以上设计模式的核心思想,并结合
js
语言特性举例或口喷基础实现 - 掌握一些基础算法核心思想或简单算法问题,比如排序,大数相加
打包构建工具
- 知道
webpack
,rollup
以及他们适用的场景(了解下rollup) - 知道
webpack
v4
和v3
的区别 - 脱口而出
webpack
基础配置 - 知道
webpack
打包结果的代码结构和执行流程,知道index.js
,runtime.js
是干嘛的 - 知道所有模块化标准定义一个模块怎么写。给出2个文件,能口喷一段代码完成模块打包和执行的核心逻辑
- 知道
webpack
打包链路,知道plugin
生命周期,知道怎么写一个plugin
和loader
- 知道常见
loader
做了什么事情,能几句话说明白,比如babel-loader
,vue-loader
- 能结合性能优化聊
webpack
配置怎么做,能清楚说明白核心要点有哪些,并说明解决什么问题,需要哪些外部依赖,比如cdn
,接入层等 - 了解异步模块加载的实现原理,能口喷代码实现核心逻辑
- 工具化打包发布流程,包括本地调试、云构建、线上发布体系、一键部署能力。同时,方案不仅限于前端工程部分,包含相关服务端基础设施,比如
cdn
服务搭建,接入层缓存方案设计,域名管控等 - 客户端缓存及预加载方案
框架相关
- 知道
react
常见优化方案,脱口而出常用生命周期,知道他们是干什么的 - 知道
react
大致实现思路,能对比react
和js
控制原生dom
的差异,能口喷一个简化版的react
- 知道
diff
算法大致实现思路 - 对
state
和props
有自己的使用心得,结合受控组件、hoc
等特性描述,需要说明各种方案的适用场景 - 能说明白为什么要实现
fiber
,以及可能带来的坑 - 能说明白为什么要实现
hook
- 能说明白为什么要用
immutable
,以及用或者不用的考虑 - 知道
react
不常用的特性,比如context
,portal
- 能用自己的理解说明白
react
like
框架的本质,能说明白如何让这些框架共存 能设计出框架无关的技术架构。包括但不限于:
- 说明如何解决可能存在的冲突问题,需要结合实际案例
- 能说明架构分层逻辑、各层的核心模块,以及核心模块要解决的问题
- 能结合实际场景例举一些坑或者优雅的处理方案则更佳
- 知道
antd
组件化设计思路。知道thunk
干嘛用的,怎么实现的 - 看过全家桶源码,不要求每行都看,但是知道核心实现原理和底层依赖
- 能从数据驱动角度透彻的说明白
redux
- 能够口喷原生
js
和redux
结合要怎么做 - 能结合
redux
,vuex
,mobx
等数据流谈谈自己对vue
和react
的异同 - 有基于全家桶构建复杂应用的经验,比如最近很火的微前端和这些类库结合的时候要注意什么,会有什么坑,怎么解决
Web前端技术
HTML
方面包括但不限于:语义化标签,history api
,storage
,ajax2.0
等CSS
方面包括但不限于:文档流,重绘重排,flex
,BFC
,IFC
,before/after
,动画,keyframe
,画三角,优先级矩阵等- 能口喷
xhr
用法,知道网络请求相关技术和技术底层,包括但不限于:content-type
,不同type的作用;restful
设计理念 cors
处理方案,以及浏览器和服务端执行流程;- 口喷文件上传实现
- 知道如何完成登陆模块,包括但不限于:登陆表单如何实现;
cookie
登录态维护方案;token base
登录态方案;session
概念 css
方面能够结合各个概念,说明白网上那些hack
方案或优化方案的原理rpc
服务调用,负载均衡- 知道
websocket
用法,包括但不限于:鉴权,房间分配,心跳机制,重连方案等 - 知道
pc
端与移动端登录态维护方案,知道token base
登录态实现细节,知道服务端session
控制实现,关键字:refresh token
mock
方案,能够设计出满足各种场景需要的mock
数据方案,同时能说出对前后端分离的理解- 考虑
mock
方案的通用性、场景覆盖度,以及代码或工程侵入程度 - 埋点方案,能够说明白前端埋点方案技术底层实现,以及技术选型原理
- 能够设计出基于埋点的数据采集和分析方案,关键字包括:分桶策略,采样率,时序性,数据仓库,数据清洗等
编码习惯和注意事项
- 在团队内推行
eslint
,并给出工程化解决方案 - 了解近3年前端较重要的更新事件
- 面试过程思路清晰,面试官给出关键字,能够快速反应出相关的技术要点,但是也要避免滔滔不绝,说一堆无关紧要的东西
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。