js相关参考

复习大纲

复习大纲

css相关

50题

position-sticky

包含块

rem相关

less px2rem

css高频css面试题

em和line-height em作为字体单位,相对与父元素字体大小 em作为行高,相对自身字体大小 line-height继承自父元素 line-height:2,表示为本身字体大小的倍数

<div class="p1">
    <div class="s1">1</div>
    <div class="s2">1</div>
</div>
<div class="p2">
    <div class="s5">1</div>
    <div class="s6">1</div>
</div>
.p1 {font-size: 16px; line-height: 32px;}
.s1 {font-size: 2em;}
.s2 {font-size: 2em; line-height: 2em;}

.p2 {font-size: 16px; line-height: 2;}
.s5 {font-size: 2em;}
.s6 {font-size: 2em; line-height: 2em;}
//答案
各个元素的字体大小,行高取值,重点看
p1:font-size: 16px; line-height: 32px
s1:font-size: 32px; line-height: 32px
s2:font-size: 32px; line-height: 64px
p2:font-size: 16px; line-height: 32px
s5:font-size: 32px; line-height: 64px
s6:font-size: 32px; line-height: 64px
复制代码
js相关

面向对象

js单例模式

js观察者模式和发布订阅模式

异步操作

异步操作流程控制

cookie

xmlhttprequest

同源限制

cors

es6模块化

async await

js各种实现

js快速排序

js快排2

js柯里化

闭包:

闭包
    当函数可以记住并访问所在的词法作用域,
    并且保持着对词法作用域的引用,即使函数是在当前作用域之外执行,
    就会形成闭包。
闭包的形成
    词法作用域是由函数声明时所在的位置决定的,
    而闭包是词法作用域形成的自然结果。
    当在函数内部声明了内部函数,并将内部函数作为值返回,就会产生闭包。
复制代码

浏览器缓存

1. 强缓存
    expires 
    cache-control:max-age
2. 协商缓存
    response对应last-modified 无法处理文件一秒钟内被改变多次的情况
    request对应if-modified-since
    response对应etag 
    request对应if-none-match --
    一般要保证分布式上生成etag的逻辑一致,才能用于分布式系统
    计算etag需要性能损耗
复制代码

浏览器执行机制

浏览器渲染阻塞

defer和async的区别

重绘和回流

getBoundingClientRect

clientHeight, ScrollHeight等

web worker

浏览器存储

跨页请求通信

1. 用nginx
2. 关闭浏览器跨域策略。因为浏览器发送了本质上是返回了。
正是因为options的预检导致的问题。所以关闭浏览器跨遇策略就是关闭了预检。
复制代码

nginx正向代理,反向代理

从输入url到页面展示的全过程

垃圾回收机制

tcp

http协议

http部分面试

js排序实现

前端性能优化

手写promise

前端工程部署

es5

es6

es6重点

xss与csrf

攻击防范

es5,es6继承区别

async,promise执行顺序

深度优先遍历以及性能优化

proxy && object.defineProperty

preload,dns-prefetch, perrendering,prefetch, preconnect

关键路径优化

srcset&&size

http2多路复用

HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效。
多路复用代替了HTTP1.x的序列和阻塞机制,所有的相同域名请求都通过同一个TCP连接并发完成。
在HTTP1.x中,并发多个请求需要多个TCP连接,浏览器为了控制资源会有6-8个TCP连接都限制。
HTTP2中
同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。
单个连接上可以并行交错的请求和响应,之间互不干扰
复制代码

HTTPS的加密过程

http2.0

前端怎么做单元测试

如何找0-5的随机数,95-99呢

Math.floor(Math.random()*(max - min + 1)+min)
复制代码

some、every、find、filter、map、forEach有什么区别

map():返回一个新的Array,每个元素为调用func的结果 
filter():返回一个符合func条件的元素数组 
some():返回一个boolean,判断是否有元素是否符合func条件 
every():返回一个boolean,判断每个元素是否符合func条件 
forEach():没有返回值,只是针对每个元素调用func 
复制代码

Promise&&Async

promise.all的实现

WebView和原生是如何通信

jsBridge
复制代码

formData和原生的ajax有什么区别

堆和栈的区别

前端错误处理方式

babel的原理: 解析 转换 生成

在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。

Proxy&&Reflect

迭代器

React框架
  1. react key

  2. Set,WeakSet, Map, WeakMap的区别

  3. React Fiber

  4. setState同步或异步 setState原理

  5. React context && react-router

    在React的setState函数实现中,会根据一个变量 isBatchingUpdate 来判断是直接同步更新this.state还是放到队列中异步更新 。React使用了事务的机制,React的每个生命周期和合成事件都处在一个大的事务当中。在事务的前置钩子中调用batchedUpdates方法修改isBatchingUpdates变量为true,在后置钩子中将变量置为false。原生绑定事件和setTimeout异步的函数没有进入到React的事务当中,或者当他们执行时,刚刚的事务已近结束了,后置钩子触发了,所以此时的setState会直接进入非批量更新模式,表现在我们看来成为了同步SetState。引用

  6. react的diff算法

  7. Function Component,pureComponet

  8. React高阶组件

  • 与 DOM 相关,建议使用父组件,类似于原生 HTML 编写
  • 与 DOM 不相关,如校验、权限、请求发送、数据转换这类,通过数据变化间接控制 DOM,可以使用 HOC 抽象
  • 交叉的部分,DOM 相关,但可以做到完全内聚,即这些 DOM 不会和外部有关联,均可
  1. React的生命周期
  2. componentWillReceiveProps的触发条件
  3. React VirtualDom
  4. React unMount&&reMount
  5. react内联函数与性能优化
  6. React Component && Element && Instance
  7. react和vue的区别
  8. react创建dom的方法
  9. react pureComponent使用
react-router, history模式
  1. react-router简单介绍
  2. hash Router && history Router
  3. react-router源码分析
  4. react-loadable组件异步加载

mobx

mobx && redux

Webpack
  1. 使用过webpack里面哪些plugin和loader
HtmlWebpackPlugin
HotModuleReplacementPlugin
CommonsChunkPlugin
style-loader
css-loader
less-loader
ts-loader
复制代码
  1. webpack里面的插件是怎么实现的
  2. dev-server
  3. 项目优化
  4. 抽取公共文件是怎么配置的
optimization: {
     splitChunks: {
       chunks: 'all'
     }
}
动态导入import()
syntax dynamic Import Babel Plugin
webbpackChunkName
复制代码
  1. webpack生命周期
  2. webpack打包的整个过程
  3. 使用import时,webpack对node_modules里的依赖会做什么
  4. import { Button } from 'antd' ,打包的时候只打包button,分模块加载,是怎么做到的
业界流行的组件库多是将每一个组件或者功能函数,都打包成单独的文件或目录
import clone from 'lodash/clone'
比较流行的组件库大哥如antd,element专门开发了babel插件,使得用户能以
import { Button, Message } form 'antd'
这样的方式去按需加载
复制代码
  1. webpack文件缓存
  2. dllplugin
  3. webpack热更新原理
当webpack打包时,会将一段hrm runtime代码打包到js中,
同时通过webpack-dev-server启动hrm服务器,服务器通过websocket与注入的runtime进行通信
当文件发生变化时,模块重新构建,同时通过ws与client进行通信,浏览器通过jsonp拉取更新模块,回调触发模块热更新逻辑

复制代码
  1. webpack常见配置解析
TypeScript
  1. 基本语法
  2. 相关配置

转载于:https://juejin.im/post/5c72a510518825626112a9ee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值