首实创新一面

320 阅读2分钟

1.css position有哪些,其中sticky是什么

sticky是relative和fixed的合成版,在滚动范围内relative生效,超出了则是fixed生效

2.如何改变z轴

  • z-index
  • transform中的一些属性

3.grid布局了解吗

juejin.cn/post/720797…

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对应上

juejin.cn/post/684490…

6.const声明的obj或数组为什么可以改变其内的值

  • const定义的引用类型数据地址会存在栈中,其对应的值存在heap里。更改它的时候也只是改变堆里的值,stack中的地址并未发生过改变 juejin.cn/post/709073…

7.useLayoutEffect和useEffect的区别

juejin.cn/post/692168…

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.长列表如何处理

14.Object.keys会遍历到他的原型上吗

for in会遍历原型链上的属性,但是Object.keys不会 blog.csdn.net/weixin_3036…