一句话回答的前端面试题

ops/2024/10/20 18:51:40/

该篇文章为一句话的答案,想看更详细的面试题请看这篇>《前端面试题


原型链:

实例与原型的链条,原型是prototype,链是__proto__,每个函数有一个原型对象,函数在创建时有一个默认属性 prototype,这个属性指向函数的原型对象。

继承:

ES6 使用extends关键字对Class类继承,其余还有:构造函数、原型链、构造+原型链、原型式、寄生式、原型+寄生。

事件队列:

分为微任务、宏任务,微任务一般比宏任务先执行,并且微任务队列只有一个。

宏任务:setTimeout、setInterval...... 

微任务:Promise、nextTick.......

事件循环

JS分为同步和异步任务。同步任务在主线程上执行,一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,将可运行的异步任务添加到可执行栈中,开始执行。

防抖和节流

为了阻止操作高频触发,从而浪费性能。防抖执行最后一次,节流执行第一次。

防抖:搜索联想、窗口调整;节流:鼠标连点、滚动加载。

闭包

闭包就是函数内嵌套函数,使函数外可以读取到函数内部的变量,未释放前变量会一直占用内存。用途:模块化、防抖、节流、封装函数延迟执行。

Promise

Promise对象代表一个异步操作,异步操作的结果决定状态,当状态从pending变为fulfilled或pending变为rejected,状态就不会再改变,称为 resolved。

async/await

async :申明方法是异步的;await:等待异步方法执行完成;返回值是 Promise 对象。

 process.nextTick() 和setImmediate() 

被设置的回调函数都是在下一次 Tick 时被调用,process.nextTick()优先级>setImmediate()

箭头函数和普通函数的区别

箭头函数更简洁,没有自己的this,this指向定义时所在作用域的this,且不会改变。
不可以当作构造函数,不可以使用new命令,不可以使用arguments,不可以使用yield命令。

变量提升

在js中,变量和函数的声明会被提升到最顶部执行,函数内部如果用var声明了相同名称的外部变量,函数将不再向上寻找。

his指向

this总是指向函数的直接调用者,如果有new关键字,this指向new出来的对象;在事件中,this指向触发这个事件的对象。

数组去重的方法?

ES6的Set、Array.filter() + indexOf() 、 Array.includes()

Promise 面试题 以下代码的执行结果是?

const promise = new Promise((resolve, reject) => {console.log(1)resolve()console.log(2)
})
promise.then(() => {console.log(3)
})
console.log(4)

答案:选中👉1,2,4,3

解释:以上考察的是关于promise的原理,promise的构造函数是同步执行的,当new Promise的一瞬间,1,2 就立刻被执行,而 .then方法是异步执行的,当执行完1和2之后,会执行输出4,最后执行输出3

数组扁平化使用场景

快速获取/过滤嵌套数组中的某个值

数组求和 

const arrSum = (arr) => {const temp = arr.reduce((pre, now) => {return pre+now},0)return temp
}

求数组的最大值/最小值?

Math.max();
Math.min();
解构赋值 

let a = 1; let b = 2;  如果在不声明第三个变量的前提下,使a=2, b=1?

答案:选中👉[a, b] = [b, a]

为什么要使用组件?

方便维护、方便复用、提高开发效率

在组件的设计中,需要考虑什么?

可扩展性强、功能单一、便于复用,适用程度高

前端性能优化:

大致分为两部分:1、资源优化,通过打包配置优化资源,合理使用异步加载模块。2、代码优化,减少代码冗余,使用性能更好的API,减少重绘回流。

虚拟dom为什么会快?

虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法计算出差异,只更新差异点,从而提高性能。

loader 和 plugin的区别?说几个Webpack常用 loader 和 plugin:

loader处理语法、plugin帮助资源文件打包优化

babel-loader、vue-loader、 file-loader、url-loader、eslint-loader、cache-loader、css-loader......

uglify-webpack-plugin(压缩js)、optimize-css-assets-webpack-plugin(压缩css)、html-webpack-plugin、webpack-bundle-analyzer(打包文件体积可视化)......


http://www.ppmy.cn/ops/55848.html

相关文章

人工智能--目标检测

欢迎来到 Papicatch的博客 文章目录 🍉引言 🍉概述 🍈目标检测的主要流程通常包括以下几个步骤 🍍数据采集 🍍数据预处理 🍍特征提取 🍍目标定位 🍍目标分类 🍈…

Kylin系列(二)架构解析:深入理解 Kylin 的架构设计

目录 1. 引言 2. Kylin 的基本概念 2.1 预计算 2.2 多维数据集(Cube) 2.3 维度和度量 3. Kylin 的架构设计 3.1 数据源 3.2 数据建模 3.2.1 星型模型 3.2.2 雪花模型 3.3 多维数据集构建 3.3.1 数据导入 3.3.2 维度和度量计算 3.3.3 存储优…

G1 垃圾收集器

从 JDK1.9 开始默认 G1,应用在多处理器和大容量内存环境中。 基础概念 Region G1 给整一块Heap内存区域均匀等分了N个 Region,N 默认情况下是 2048。 Region的大小只能是1M、2M、4M、8M、16M或32M (1-32M,并且为2的指数),比如-Xmx16g -Xms…

Jmeter使用JSON Extractor提取多个变量

1.当正则不好使时,用json extractor 2.提取多个值时,默认值必填,否则读不到变量

C语言 | Leetcode C语言题解之第219题存在重复元素II

题目: 题解: struct HashEntry {int key; int val;UT_hash_handle hh; };void hashAddItem(struct HashEntry **obj, int key, int val) {struct HashEntry *pEntry;pEntry malloc(sizeof(struct HashEntry));pEntry->ke…

一文理解 Treelite,Treelite 为决策树集成模型的部署和推理提供了高效、灵活的解决方案

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、什么是 Treelite? Treelite 是一个专门用于将决策树集成模型高效部署到生产环境中的机器学习模型编译器,特别适合处理大批量数据的推理任务,能够显著提升推理性能…

QT操作各类数据库用法详解

文章目录 创建内存SQLITE数据库QSqlTableModel操作数据库表连接国产数据库多线程数据处理不指定数据库名打开数据库QT对各种数据库的支持情况处理数据库表名QT连接各种数据库Qt提供了一个名为QtSQL模块的强大组件, 使得在Qt应用程序中连接和操作多种类型的数据库变得相对简单。…

AI大模型技术分析

一文读懂:AI大模型! 引言 近年来,随着深度学习技术的迅猛发展,AI大模型已经成为人工智能领域的重要研究方向和热点话题。AI大模型,指的是拥有巨大参数规模和强大学习能力的神经网络模型,如BERT、GPT等&…