9/15(实习)一面
-
学校做过哪些项目,聊一下项目的模块,遇到什么问题,挑一个你觉得困难的模块说一下。(token校验)(项目做的时间有点长了,有些细节不是说的很明白)
-
谈一谈你对promise的理解。(这块只是简单的说了一下三种状态,没复习到位)
- 什么是promise
promise是异步编程的一种方案,解决了地狱回调的问题,是一种链式调用的方式。
所谓
Promise
,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。对象的两个特点:
- 对象的状态不受外界影响。promise对象代表一个异步操作。有三种状态:pending(已经成功),fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前处在那个阶段。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-953M3VGv-1663406464042)(https://super-ly-image.oss-cn-hangzhou.aliyuncs.com/promise%E7%8A%B6%E6%80%81%E6%94%B9%E5%8F%98.png)]
- 一旦状态发生改变,就不会再变,任何时候都会一直保持这个结果。
- 场景,三个请求promise.all()方法。问到了promise.all()里的参数是什么类型的数据。一个请求失败,另外两个会正确请求。
这块只知道使用promise.all()方法可以一次发起多个请求,然后问道里面的参数是啥,没答上来(其实是数组),一个请求失败,另外两个也会请求失败。
- 图片懒加载,具体说说如何实现的。
这块和面试官交流了一下自己的思路,没有手撕代码。面试官认为思路正确,但方法用的不对。
- js如何去监听一个对象属性的状态改变。
这里只说出了vue2.0监听状态改变的方法,Object.definePrototype,其实还有vue3.0的状态改变方法。
- 首屏加载时候比较慢,优化方法。(性能优化)
性能优化题,使用gzip打包项目,使用雪碧图,js脚本放到最后执行。