2021 : 面试——前端面试

835 阅读2分钟

持续更新中。。。

JS

参考链接:

setTimeout实现的原理

浏览器端的垃圾回收

数据类型,不同数据类型在内存中怎么存储的

闭包在内存中是怎么存储的

什么情况下内存栈溢出

Array.reduce实现(小米\字节)

Array.prototype.reduce = function(cb, initVal) {
    let result = initVal;
    let i = 0;
    if (typeof initVal === 'undefined') {
        result = this[0]
        i++;
    }
    
    while (i < this.length) {
        cb(result, this[i], i, this)
        i++;
    }
    return result;
}

IIFE(立即调用函数表达式)

立即调用函数的输出

image.png

跨域

参考链接:www.imooc.com/article/291…

事件冒泡和事件捕获

参考链接:www.w3.org/TR/DOM-Leve…

混合开发原理和js bridge原理

为什么使用混合开发,它有什么优缺点

防抖和节流,分别在什么场景下使用

  • 防抖:防止用户抖动,也就是短时间内连续触发只有一次是有效的
  • 节流:节省流量,也就是短时间内多次触发要节省流量减少触发事件的执行次数

参考链接:浅谈 JS 防抖和节流

实现Promise.all(字节)

发布订阅模式和观察者模式的区别(百度、美团)

Nodejs

装饰器的原理和实现

参考链接:

Promise

参考链接:juejin.cn/post/694531… 大神手撸Promise并详细讲解,非常棒,我看了好几遍

事件循环(小米,美团)

参考链接:

浏览器和nodejs的事件循环的区别(小米)

参考链接:

nodejs的垃圾收集算法(小米)

网络

HTTP2的优缺点,HTTP3是怎么解决这些缺点的(美团)

样式

参考链接 zhuanlan.zhihu.com/p/29711976

常做的自适应布局操作有哪些(字节)

  • rem
  • flex
  • @media
  • vh,vw

flex了解吗,flex有哪些属性(高德出行)

实现水平居中的方式和上下文限制(香格里拉)

样式上下文
text-align: center父级:inline 子级: inline

多元素水平居中

flex实现折行

BFC(Block formatting context)(小米)

参考链接:blog.csdn.net/sinat_36422…

块级作用域上下文

性能优化

提升前端应用性能的方法(小米)

参考链接:

  • 字体文件压缩,例如:字蛛
  • 图片文件压缩,例如:TinyPNG

客户端动画卡顿的优化(小米)

如何提升客户端(Electron、APP)前端的加载速度(美团)

  • CDN
  • 预加载

做过哪些webpack优化

参考链接:

webpack工作流程、各模块的作用

框架

Vue和React的区别

React的组合事件

参考链接:SyntheticEvent

React redux的原理

参考链接:React小书

setState的批量更新

下面代码输出是怎样的:

state = {
    c: 0
}

componentDidMount(){
    this.setState({ c: this.state.c + 1});
    console.log('a', this.state.c);
    this.setState({ c: this.state.c + 1});
    console.log('b', this.state.c)
    setTimeout(() => {
      this.setState({ c: this.state.c + 1});
      console.log('c',this.state.c);
      this.setState({ c: this.state.c + 1});
      console.log('d', this.state.c)
    }, 0);
    setTimeout(() => {
      this.setState({ c: this.state.c + 1});
      console.log('e',this.state.c);
      this.setState({ c: this.state.c + 1});
      console.log('f', this.state.c)
    });
}

参考链接:

Hooks

参考链接:

React源码

参考链接:

React diff算法(高德出行)

useLayoutEffect用过吗(字节)

Vue源码

参考链接: 手写Vue2.0源码(一)-响应式数据原理|技术点评

vue-router路由的两种模式的原理和各自的应用场景

  • hash
  • path

Vue响应式原理(高德出行)

网络

http2的问题,在http3中怎么解决的