前端面试系列一

158 阅读4分钟

前端基础知识

1、Ajax-Fetch-Axios三者有什么区别

image.png

image.png

image.png

image.png

image.png image.png

2、防抖和节流有什么区别,分别用于什么场景-防抖

image.png

image.png

image.png

3、防抖和节流有什么区别,分别用于什么场景-节流

image.png

image.png

image.png

image.png

image.png

4、px-%-em-rem-vw-vh有什么区别

image.png

image.png

image.png

5、什么时候不能使用箭头函数,有什么缺点?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

6、请描述 TCP 三次握手和四次挥手

image.png

image.png

image.png image.png

7、JS中for-in和for-of有什么区别

image.png

image.png

【连环问】for-await-of有什么作用

image.png

image.png

8、offsetHeight-scrollHeight-clientHeight有什么区别

image.png

9、HTMLCollection和NodeList有什么区别

image.png

image.png

image.png

image.png

image.png

10、Vue中computed和watch有什么区别

image.png

image.png

image.png

11、Vue组件通讯有几种方式,尽量全面-props-emits和自定义事件

自定义事件

image.png

image.png

image.png

12、Vue组件通讯有几种方式,尽量全面-props-$attrs

13、Vue组件通讯有几种方式,尽量全面-props-parentparent和refs

<template>
  <div>
    <h1>parentMsg name: {{ parentMsg }}</h1>
    <h1>parentMsg name: {{ childMsg }}</h1>

    <level3 ref="childName"/>
  </div>
</template>

<script>
import Level3 from './level3'

export default {
  name: "level2",
  components: {
    Level3
  },
  data() {
    return {
      parentMsg: '',
      childMsg: ''
    }
  },
  mounted() {
    this.parentMsg = this.$parent.parentName  // 获取父组件的属性
    this.childMsg = this.$refs.childName.childName  // 获取子组件的属性
  }
}
</script>

14、Vue组件通讯有几种方式,尽量全面-props-provide和inject

在上级组件中使用:

provide: {
  provideAttr: 'I am provide name'
},

如果传递data中的响应式数据: image.png

在它下面的所有组件都可以获取该属性:

inject: ['provideAttr'],

image.png

15、Vuex中action和mutation有什么区别

image.png

16、JS严格模式有什么特点

image.png

image.png

image.png

image.png

image.png

image.png

image.png

17、HTTP跨域时为何要发送options请求

image.png

image.png

image.png

image.png

image.png

知识深度- 原理和源码

1、知识点:垃圾回收 GC

引用计数

没办法解决循环引用;对象的引用数为0的话,就会被清除;

标记清除

定期从根(window)下去遍历其下的各个属性,看是否能得到属性的对象,如果能够得到就保留,得不到就删除。

(连环问)闭包属于内存泄漏吗?

不属于内存泄漏,闭包的数据不可以被垃圾回收

面试题:JS 内存泄漏如何检测? 场景有哪些?(JS 垃圾回收算法是什么?)

如何检测:

使用开发者工具中 Performance 查看内存占用的实时数据; image.png

内存泄漏的场景(Vue 为例) ?

image.png

image.png

扩展:WeeMap、WeekSet

弱引用,不会影响垃圾回收,如下代码: new WeeMap(),然后在fn1()wMap.set(obj)引用,执行完 fn1()函数后,obj 引用的对象依然会被回收;weekSet同理。

image.png

2、知识点:单线程和异步

image.png

异步:宏任务和微任务

image.png

image.png

nodejs

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

浏览器和nodejs的事件循环有什么区别 ?

image.png

image.png

3、vdom 真的很快吗?

image.png

答案:

image.png

4、遍历数组, for 和 forEach 那个更快 ?

image.png

image.png

image.png

5、nodejs 如何开启进程,进程如何通讯 ?

image.png

image.png

6、请描述 JS Bridge 原理

image.png

image.png

image.png

image.png

7、是否了解过 requestIdleCallback? 和 requestAnimationFrame 有什么区别 ?

image.png

image.png

8、Vue 的生命周期都做了什么?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

9、Vue2、Vue3、React 三者 diff算法有何区别?

image.png

image.png

React 仅右移

image.png

Vue2 双端比较

image.png

Vue3 最长递增子序列

image.png

image.png

image.png

image.png

10、Vue-router MemoryHistory(abstract)

image.png

image.png

知识广度 - 从前端到全栈****

1、移动端 H5 300ms 延迟,该怎么解决?

image.png

image.png

image.png

2、网络请求中,token 和 cookie有什么区别 ?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

连环问: Session 和 JWT 的区别?

image.png

image.png

image.png

image.png

image.png

连环问: 如何实现 SSO 单点登录

image.png

3、HTTP协议和UDP协议有什么区别?

image.png

image.png

image.png

image.png

image.png

连环问: HTTP协议1.0 和 1.1 和 2.0有什么区别 ?

image.png

image.png image.png

image.png

4、什么是HTTPS 中间人攻击,如何预防 ?

image.png

image.png

image.png

5、script标签的defer 和 async 有什么区别 ?

image.png

image.png

连环问: prefetch 和 dns-prefetch 分别是什么 ?

image.png

image.png

image.png image.png

image.png

6、前端攻击的手段有哪些?该如何预防 ?

image.png

image.png

Vue、React 默认会预防 XSS攻击; 除非在Vue中,攻击使用v-html,React中,攻击使用 dangerouslySetInnerHTML

image.png

image.png

image.png

image.png

7、WebSocket 和 HTTP协议有什么区别 ?

扩展: 简易聊天室

WebSocket 和 HTTP 长轮询的区别?

image.png

image.png

8、从输入 URL 到网页显示的完整过程 ?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

网页重绘repaint 和 重排 reflow 有什么区别?

image.png

image.png

image.png

image.png

image.png

image.png

BFC

image.png

image.png

image.png

9、如何实现网页多标签tab通讯?

image.png

image.png

image.png

image.png

如何实现网页和iframe之间的通讯 ?

parent.html image.png child.html image.png

image.png

10、请描述 koa2 的洋葱圈模型 ?

image.png

image.png

考察实际工作项目

1、H5 页面如何进行首屏优化 ?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

2、后端一次性返回10w条数据,你该如何渲染 ?

image.png

image.png

image.png

image.png

3、前端常用的设计模式和使用场景

连环问: 观察者模式和发布订阅者模式的区别 ?

image.png

image.png

image.png

image.png

image.png

连环问: 你使用Vue 遇到过哪些坑 ?

image.png

image.png

image.png

image.png

4、你实际工作中,做过哪些React优化 ?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

连环问: 你在React中遇到哪些坑 ?

image.png

image.png

image.png

image.png

5、如何统一监听 Vue 组件报错 ?

image.png

image.png

image.png

image.png

image.png

image.png

6、如何统一监听 React 报错?

image.png

image.png

image.png

image.png

image.png

7、如果一个H5很慢,你该如何排查性能 ?

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

安装和访问方式:

image.png

image.png

image.png

image.png

image.png

image.png

image.png

8、你工作经历中,遇到过哪些项目难点,如何解决的?