南京嗯哇科技面经
• #面试
1.自我介绍
2.算法题
- 实现树结构数据平铺到一个新数组
- 递归/迭代
- 一个长度为10000的数组,取最小值
- 数据量的问题
3.实现响应式布局有哪几种方法
- flex+百分比
- rem em 移动端
- 媒体查询
4.vw vh rem em什么区别
- vw vh根据窗口大小变化
- rem根据根元素设置的元素大小变化
- em根据父元素设置的元素大小变化
5.项目用到了unocss,说一下原子化css
6.乾坤框架
- 微前端
- 模块化开发
- 共享组件
- 性能优化
- 路由管理
7.element-ui 没有虚拟滚动,数据量大的时候你是怎么处理的
- 分页加载
- 使用虚拟列表组件
- 虚拟滚动,只渲染当前用户可见的页面
- 计算可见区域
- 只渲染可见项
- 重用列表项: 当用户滚动时,更新可见区域内的列表项的数据,而不是创建新的DOM元素。
- 加载更多数据: 如果是分页加载,当用户滚动到列表底部时,加载下一页的数据并更新可见区域。
8.你用别人的组件,别人已经封装的组件没有你要的prop,你如何给他加上你要的属性
- $set
9.组件未显式地声明prop属性是如何透传的
- 使用$attrs接受
10.vben的封装组件的封装和hooks的封装
11.vben使用起来感觉
12.es6语法常用的语法
13.你最常用的Promise类方法
14.vue2和vue3使用起来的差别
15.hooks和mixins的异同
- 都是为了逻辑服用
- hooks v3 mixins v2
16.vue如何实现数组的响应式追踪
- 面试官的意思是在对象的基础上数组方法没有实现响应式,比如使用push,pop,unshift,shift等方法不回触发响应式
- 对方法进行遍历,然后把方法添加进去
17.微任务 宏任务
- 微
- Promise回调
- process.nextTick
- MutationObserver
- 宏
- setTimeout
- setInterval
18.nextTick
- nextTick是一个用于在DOM更新队列被刷新之后执行回调的方法。
- ◭ alt text
19.性能优化
- 路由懒加载
- 组件懒加载
- 使用 keep-alive 缓存组件
- CDN 加载 Vue 及其相关资源
- 图片优化
- 代码拆分(Code Splitting)
- Tree-shaking
- 减少重绘和重排
20.树摇的原理
- ES6 模块系统
- 静态分析:Tree-shaking 是通过静态分析代码来判断哪些代码是未使用的。因此,它只能处理那些在编译时就能确定的引用关系,而不考虑运行时动态生成的引用。
- 通过工具实现:主流的 JavaScript 打包工具,如Webpack和Rollup,提供了对 tree-shaking 的支持。在配置文件中开启相应选项,这样工具就能够在打包时识别和移除未使用的代码。
21.二次封装过插件吗,自动引入的插件,如何配置plugin
22.websocket
- WebSocket是一种在Web浏览器和Web服务器之间建立持久性连接的通信协议。与传统的HTTP通信方式不同,WebSocket允许在客户端和服务器之间实时双向通信,而无需每次通信都建立新的连接。
- 客户端
- 创建WebSocket对象
- 定义事件处理函数
- 发送消息
23.socket
24.chatgpt的通信方式
- 开发者通过 API 密钥认证身份,以访问 ChatGPT 的服务。
- 发送包含用户输入的文本请求到 API。
- ChatGPT 处理请求,生成相应的文本输出。
- 开发者从 API 接收模型生成的文本响应。
25.说下大文件流下载
- 对文件进行切割
- Blob
- 发送网络请求获取要下载的内容
- 把内容传入Blob实例
- 创建下载链接