1.css position有哪些,其中sticky是什么
sticky是relative和fixed的合成版,在滚动范围内relative生效,超出了则是fixed生效
2.如何改变z轴
- z-index
- transform中的一些属性
3.grid布局了解吗
4.flex:1是什么
flex-grow:1 flex-shrink:0 flex-basis:auto 的组合
5.如何判断数组
- Array.isArray
- Object.prototype.toString.call()
- arr instanceof Array
- arr.constructor === Array
注意不可使用typeof,会返回一个object.typeof null也是object
顺便引出typeof的内部实现原理
- js会将变量通过64位双精度浮点数存储
- 其中1-3位是他的类型信息,typeof会通过这个判断
顺便引出instanceof的内部实现原理
- 递归遍历leftValue的__proto__是否会和rightValue的prototype对应上
6.const声明的obj或数组为什么可以改变其内的值
- const定义的引用类型数据地址会存在栈中,其对应的值存在heap里。更改它的时候也只是改变堆里的值,stack中的地址并未发生过改变 juejin.cn/post/709073…
7.useLayoutEffect和useEffect的区别
8.如何对一个数组去重并分析时间复杂度
9.js的代码为什么普遍放在html最下面
- html是同步加载的,如果js放在前面会影响dom和cssom的加载和渲染
- 如果js中有操作dom的,在dom没加载完成就操作会出现bug www.zhihu.com/question/55…
10.有什么方法让js代码放前面吗
- defer和async
11.useMemo和useCallback是什么
12.页面优化做过吗
- 可以开启缓存,强缓存和协商缓存
- 多部署一些节点,通过cdn进行加速
- 判断型的代码进行提前返回
- 同步代码且只需执行一次的,则封装成一个函数,放到useEffect里
- 使用react.memo来包裹子组件,当且仅当props发生改变了才重新渲染子组件
- 使用useMemo去缓存变量,useCallback去缓存函数
- 使用ssr技术进行首屏优化
- webpack打包的时候压缩css和图片,使用exclude和include确定范围,使用tree shaking来说减少无用的import
- 使用gzip进行传输,加快后端返回速度
13.长列表如何处理
- 分页
- 触底重新请求接口
- 虚拟列表 juejin.cn/post/684490…
14.Object.keys会遍历到他的原型上吗
for in会遍历原型链上的属性,但是Object.keys不会 blog.csdn.net/weixin_3036…