微筑科技面试

1.three.js有了解吗,着色器有了解吗

答: 着色器是一种使用GLSL(OpenGL Shading Language)编写并在GPU上运行的程序。它们被用于定位几何体的每个顶点,并为该几何体的每个可见像素着色。使用“像素Pixel”来描述其实并不准确,因为渲染的每个点不一定与屏幕上的每个像素相匹配,因此我们更倾向于使用术语“片元fragment”。

2.js判断数据类型

3.js事件循环逻辑

4.箭头函数和function函数有什么区别,function函数什么时候确定this

答: 用function定义的函数里面的this指向是不明确的,只有在调用(解释)的时候才会确定this指向,即谁调用this就是谁

5.js闭包,内部引用外部变量为什么不会被垃圾回收,闭包使用情况

答:因为他本身就是建立在一个函数的内部作用域的子函数,由于可访问上级作用域的原因,即使上级函数执行完,作用域也不会被清除,这时子函数,就是闭包,就拥有了访问上级作用域中变量的权限,即使上级函数执行完,作用域内的值也不会被销毁

6.垃圾回收机制

答:引用计数法标记清除法

标记清除法:就是从根部(在js中就是全局对象)出发定时扫描内存中的对象。凡是能从根部到达的对象,都是还需要使用的。

7.Promise和async/await 区别

答:对比promise不需要执行then()处理响应,只需要将结果赋给一个值即可

8.手写Promise

9.vue2和vue3响应式区别,vue2.0对数组方法做了什么处理

10.diff算法了解。双向指向什么情况下会终止比对

11.长列表优化,不固定高度虚拟列表

答:使用预估高度。在更新页面时,记录每个列表项的真实高度以及位置信息。

a.计算占位层高度

b.渲染完成后,在update获取每项列表的高度以及位置信息,存储到positions里面

c.滚动后获取开始索引,因为缓存数据是有顺序的,通过二分法获取,找到最逼近scrollTop的列表项。计算是参考每个列表项位置信息中的Bottom;

d.滚动后将偏移量的获取方式变更

12.electron原理,不同窗口怎么通信,预渲染函数有什么作用

13.微前端qiankun,不同项目如何进行通信

答:使用qiankun提供的api-initGlobalState进行通信;

14.vue3组件之间传递方式,如何调用子组件方法,vue3可以通过ref去调用子组件方法

答:a.通过props传递  /defineProps

        b.通过emit触发自定义事件/defineEmit

        c.使用ref

        d.事件总线EventBus

        e.attrs使用时需要引入useContext

        f.依赖注入: Provide与Inject

        g.双向绑定:v-model

        h.全局状态管理: vuex

15.ref,reactive有什么区别

原理: ref通过Object.defineProperty()的get和set实现数据代理。

reactive使用Proxy实现数据代理

16.keep-alive怎么管理,哪些可以存储,关闭标签下次打开刷新如何处理

17.数据存储之间区别,indexdDB,localStroge,sessionStorage,Cookie

18.ts中type,interface区别

答: interface只能定义对象类型,而type声明可以声明任何类型,包括基础类型联合类型交叉类型

接口可以extends、implements,从而扩展多个接口或类。类型没有扩展功能。type可以使用交叉类型&,来使成员类型合并

定义两个相同名称的接口会合并声明。定义两个同名的type会出现异常。

19.泛型什么情况下会用到

20.webpack4.0和webpack5.0区别

答:webpack5自带js压缩功能,只需配置即可,而webpack4需要下载terser-webpack-plugin 插件

缓存区别,webpack4需要下载缓存插件,而webpack5自带,只需配置即可

webpack4通过webpack-dev-server启动服务,webpack5通过webpack serve启动

21.webpack热更新原理

答:a.使用webpack-dev-server托管静态资源,同时以runtime方式注入HMR客户端代码

        b.浏览器加载页面后与WDS建立websocket连接

        c.webpack监听到文件变化后,增量构建发生变更的模块,通过webSocket发送hash事件

        d.浏览器接收到hash事件后,请求manifest资源文件,确认增量变更范围

        e.浏览器加载发生变更的增量模块

        f.webpack运行时触发变更模块的回调执行代码变更逻辑

22.webpack常用配置项

答:入口文件,打包目录文件,module(配置Loader),plugins(配置插件)

23.vite和webpack区别,vite用了什么技术,ESmodule怎么去执行

答:webpack是先打包再启动开发服务器,vite是直接启动开发服务器,然后按需编译依赖文件。

由于现代浏览器本身就支持ES Modules,会主动发起请求去获取所需文件。vite充分利用这点,将开发环境下的模块文件,就作为浏览器要执行的文件,而不是像webpack先打包,交给浏览器执行的文件是打包后的;

24.开发过程中遇到什么头痛问题,比较有成就感的工具

25.3D仓库有什么功能,点击有物品有对应的信息,怎么去实现的

26.webpack核心概念,webpack对前端性能优化

27.按需引入如何实现的

答:babel-plugin-import插件使用的

28.封装过哪些公共组件,插槽组件怎么拿到表格里面的数据

29.qiankun和iframe区别

答:a.路由状态丢失

        b.dom割裂严重

        c.通信困难

        d.白屏时间长

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容