前端学习32 相关面试题6

1. 性能优化

前端性能优化主要可以从资源加载、页面渲染、运行时效率和用户体验四个维度入手。在实际开发中,主要采用以下策略:

  • 资源加载优化

使用 gzip/brotli 压缩资源,减少文件体积。

启用浏览器缓存(强缓存、协商缓存)提升复用率。

图片懒加载、压缩、使用 WebP 格式等。

合理使用 CDN 加速资源分发。

对第三方库采用按需引入或使用轻量替代方案。

  • 代码层优化

路由懒加载、组件按需加载,减少初始包体积。

使用 Tree Shaking + ES Module 去除无用代码。

利用 Vite 或 Webpack 做打包优化(例如 splitChunks 拆包策略)。

使用 defer / async 加载脚本,避免阻塞解析。

  • 页面渲染优化

首屏加载使用骨架屏、预渲染(如 SSR、预加载)优化体验。

合理使用虚拟列表、IntersectionObserver 优化长列表渲染。

减少 DOM 操作、避免频繁重排重绘。

  • 运行时优化

使用防抖/节流控制高频事件,如 scroll、resize。

合理拆分组件,避免重复渲染。

使用缓存或计算属性避免重复计算。

  • Vue 特有优化

使用 v-show 替代 v-if 控制频繁切换的 DOM。

合理使用 key,提升 diff 效率。

利用 keep-alive 缓存组件状态。

相应性能指标:

  • LCP(Largest Contentful Paint) 最大内容元素加载完成时间。
  • FCP(First Contentful Paint) 页面首个文本或图像内容渲染的时间
  • FP(First Paint) 页面首次像素渲染的时间。
  • TTI(Time to Interactive) 页面从开始加载到可以响应用户点击操作的时间。

2.浅拷贝、深拷贝方案

浅拷贝

  • Object.assign()
const obj = { a: 1, b: { c: 2 } }
const copy = Object.assign({}, obj)

  • 展开运算符(...)
const obj = { a: 1, b: { c: 2 } }
const copy = { ...obj }

  • 数组的concat()方法
const arr = [1, 2, [3, 4]]
const copy = [].concat(arr)

深拷贝

  • JSON.parse(JSON.stringify(obj))
const original = { a: 1, b: { c: 2 } }
const copy = JSON.parse(JSON.stringify(original))

  • 手写递归深拷贝
function deepClone(obj) {
  if (obj === null || typeof obj !== 'object') return obj

  const copy = Array.isArray(obj) ? [] : {}
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      copy[key] = deepClone(obj[key])
    }
  }
  return copy
}

全部评论
点赞 回复 分享
发布于 06-02 23:16 陕西

相关推荐

在之前的时间里一直都非常焦虑,一边秋招已经开始,自己却还没拿到实习,再加上之前有一次很好很接近的机会没有把握住,被打击得信心全无,做了很长的心理建设才开始慢慢投小厂,还好还有些实习机会,分享一下面试八股经验,项目不具参考性,不再列举相关问题深圳某小公司vue  2 和vue3中 v-model区别为什么vue3要使用proxy     比 vue 2使用define property好在哪里?Context加hook是怎么替代Redux实现状态管理的?css盒子模型怪异盒子模型和标准盒子模型计算区别react怎么定义组件bootstrap什么是闭包,你有实际应用过吗?react怎么实现父子组件之间的通信HTML   CSS   js 概念let和const的区别什么是虚拟DOM    什么传统DOM     对比  核心原理diff算法   关键点怎么阻止事件冒泡     event.stopProgapationevent.stopImmediatePropagation    区别其他方法?git是否使用过remote————————————————————————广东钛动基础:HTML中本地存储的方法,区别是什么垂直居中方案在你项目中怎么实现移动端自适应的,什么方案JS基本数据类型怎么判断类型  (回答typeof  instanceof  Object.prototype.toString.call    面试官追问还有吗,ES6中呢)具体判断是否是一个数组用什么方法Array常用方法事件循环机制,有哪些宏任务和微任务说一下闭包,你平常使用过吗,怎么使用的怎么查找对象的键值对怎么知道资源,(比如图片)已经加载完成TS:interface和type区别使用过Pick吗说一下泛型和泛型约束框架(只问了React,大概业务线用的React):React  props和state区别react其他通信方法useState和useEffect这两个hook函数区别想拿到渲染前的数据或函数使用什么hook(没听懂,不会,不知道是不是我理解错了)你常用的hook有哪些useMemo你是怎么使用的,它的作用useCallback使用过吗,原理作用React Router中的组件有哪些Hash路由和history路由,说说原理区别————————————————————————某公司笔试四道选择题  25分两道算法题  75分选择题两道阅读代码选择输出,记不太清,全程开摄像头答题加手机监控,没有记下来大致是第一道考察闭包  第二道考察链表的节点引用和指针操作还有两道分析时间复杂度题两道算法题有一题有点难度,是力扣困难题的变种,没有写过,另一题是二叉树展开为单链表—————————————————————————杭州小公司flex布局 justify-content有哪些属性CSS中keyframes是什么useEffect做什么的uselayoutEffectuseMemo常用git操作git怎么创建新分支GitHub中manage  request干嘛的(可能是想问pull  request)Github你有关注过哪些项目TS泛型作用TS可选属性作用有没有遇到跨域问题,产生原因,是什么的限制  怎么解决本地怎么调样式console    断点使用其他浏览器工具你比较关注返回的哪些信息说一下哪些状态码,分别代表什么同一域名同时发送多个请求,比如100个,但浏览器对这个域名的请求限制只有7个,其他的可能会被挂住,怎么解决CDN原理SEO方法原理ReduxwebSocket给场景,问怎么解决(防抖or节流)防抖节流区别听声音感觉是个年轻清爽帅哥,可惜的是让我开摄像头但面试官没有开——————————————————————————记不太清了闭包原型链机制JS操作Dom方法虚拟Dom和真实DomReact和Vue区别Webpack你有做过哪些配置改动和自定义插件性能相关问题其他一些项目问题一道hot100中的简单算法题——————————————————————————小公司一般总共两到三轮面试一面考察比较基础最后想说的是,不必太过焦虑,我刚开始想的是小公司都不约面,我是不是真的要转行了,是不是自己太菜了,面试表现不好又觉得自己是不是太fw了,有一段时间压力很大很焦虑,躯体化症状严重,触底反弹后摆烂,面试反而多了起来,面试过程也不再担惊受怕,保持一个好心态,在面试中慢慢发现不足,不断优化,不必思虑太多,再怎么样反正去捡垃圾也不会饿死,不要去比较,比较是偷走幸福的小偷。希望大家都一切顺利
点赞 评论 收藏
分享
评论
2
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务