一句话回答的前端面试题

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

原型链:

实例与原型的链条,原型是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 面试题 以下代码的执行结果是?

javascript 复制代码
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

数组扁平化使用场景

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

数组求和

javascript 复制代码
const arrSum = (arr) => {
    const temp = arr.reduce((pre, now) => {
        return pre+now
    },0)
    return temp
}

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

javascript 复制代码
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-loaderurl-loader、eslint-loader、cache-loader、css-loader......

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

相关推荐
CaptainDrake6 分钟前
Vue:指令
前端·javascript·vue.js
软件技术NINI9 分钟前
HTML——基本标签
前端·javascript·html
卡兰芙的微笑33 分钟前
get_property --Cmakelist之中
前端·数据库·编辑器
覆水难收呀36 分钟前
三、(JS)JS中常见的表单事件
开发语言·前端·javascript
猿来如此呀43 分钟前
运行npm install 时,卡在sill idealTree buildDeps没有反应
前端·npm·node.js
hw_happy1 小时前
解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题
前端·npm·sass
FHKHH1 小时前
计算机网络第二章:作业 1: Web 服务器
服务器·前端·计算机网络
视觉小鸟1 小时前
【JVM安装MinIO】
前端·jvm·chrome
二川bro2 小时前
【已解决】Uncaught RangeError: Maximum depth reached
前端
qq22951165023 小时前
python毕业设计基于django+vue医院社区医疗挂号预约综合管理系统7918h-pycharm-flask
前端·vue.js·express