以下题目是我近期面试时遇到的高频题,给大家分享一下,限于表达能力和组织能力不太好,解答也没写那么全,仅记录了关键词,望理解
-
什么是闭包?闭包有什么作用和副作用?
函数内部套函数,内部函数可以获取外部函数的变量
封装
闭包中内存不会自动释放
-
闭包有副作用,那如何手动给闭包所占用的内存垃圾回收呢
将函数置为null
-
看你简历上,有写到熟悉源码,可以说一说vue中哪些地方用到了闭包吗?
computed、watch、defineReactive等
-
怎么设计一款mvvm框架?有什么思路
可以理解为解决视图和数据双向绑定
-
谈一谈你对原型和原型链的理解
-
promise有几种状态,以及它的常用方法
-
promise
-
promise.then
-
promise.catch
-
promise.finally
-
promise.race
-
promise.all
-
-
如何实现promise.race?
-
async和await与promise有什么关系和区别
-
双向通信方式有哪些?
- 前端主动轮询
- SSE
- Websocket
-
什么是事件循环?讲一讲浏览器端事件循环执行顺序
同步->异步中微任务->异步中宏任务
-
setTimeout是准时延迟执行吗?
不是,只是按时将方法推到了异步队列中,如果前面还有任务没执行完,需要等待前面的同步任务以及微任务执行完毕
-
js为什么使用单线程?说说你的理解
因为单线程适用于浏览器,无需考虑资源抢占的问题
-
如何在js中使用多线程?
开启webworker,一个主线程以及多个子线程相互通信,虽然说是多线程,但是主线程仍然是保持单一
-
看你项目中用到了nest,请讲一讲nest编程方式和平常vue开发有什么区别呢?
nest采用aop编程,大多数是使用装饰器,vue编程时采用的面向过程是hooks开发
-
如何实现一个装饰器?
大概和闭包以及继承相关
-
除了Element Ui上有的那些组件,还封装过其他非业务组件吗?
懒加载图片,可拖动的菜单框
-
如何二次封装el-table,怎么保证原有功能的情况下增加新功能
slot listener attrs
-
webpack了解过吗?webpack如何去除无用的代码?
webpack3中用到了UglifyJS
webpack4和webpack5中用到了terser
uglifyJs借助于ES6静态编译的特点,在编译期间将js代码转为AST树,然后将无用的代码、死代码以及
-
vue2中向响应式对象中添加新属性时页面没有更新,该如何处理?
使用$set
不推荐,使用调用响应式对象中的方法,notify
-
了解微前端吗?
无界、乾坤 使用了webcomponents
-
谈谈你熟悉的设计模式?
我回答了观察者模式、单例模式、工厂模式