当前位置: 首页 > news >正文

【每日前端面经】2023-02-27

题目来源: 牛客

CSS盒模型

CSS中的盒子包括margin|border|padding|content四个部分,对于标准盒子模型(content-box)的width=content,但是对于IE盒子模型(border-box)的width=content+border2+padding2

CSS选择器

  • 标签选择器
  • 类选择器
  • ID选择器
  • 参数选择器
  • 通用选择器
  • 组合选择器
  • 子代选择器
  • 后代选择器
  • 兄弟选择器
  • 相邻兄弟选择器
  • 列表选择器
  • 伪类选择器
  • 伪元素选择器

JS数据类型

  • Number
  • String
  • Object
  • Undefined
  • Null
  • Boolean
  • Symbol
  • BigInt

Webpack打包的理解、性能优化

本质上,webpack是一个现代JavaScript应用程序的静态模块打包器。当Webpack处理应用程序时,会递归的构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle

  • 提升基础环境版本
  • 使用include/exclude避免重复打包
  • 合理利用缓存
  • 合理使用plugin
  • 合理配置resolve
  • 启用多进程打包
  • 开发中使用热更新替换自动刷新
  • 使用DIIPlugin插件优化时间

前端性能优化

  • 浏览器
    • 减少HTTP请求
    • 使用HTTP2.0
    • 设置浏览器缓存
    • 白屏做加载动画
  • 资源
    • 静态资源CDN
    • 静态资源单独域名
    • GZIP压缩
    • 做服务端渲染
    • 头部放置CSS,底部放置JS
  • 图片
    • 字体图标代替图片图标
    • 精灵图
    • 图片懒加载
    • 图片预加载
    • 使用PNG格式的图片
    • 图片转BASE64格式
  • 代码
    • 慎用全局变量
    • 缓存全局变量
    • 减少回流与重绘
    • 节流防抖
    • 少用闭包
    • 减少数据读取次数
    • 文档碎片优化节点
    • 减少判断层级
    • 字面量与构造式
  • 项目
    • 长列表优化
    • web worker
    • 避免iframe
  • 打包
    • 减少代码体积
    • 按需加载
    • 提取第三方库代码
    • webpack dll优化

Vue2和Vue3的区别

  • 生命周期
  • 多根节点
  • 组合式API
  • 异步组件
  • Teleport: 可以将部分DOM移动到APP之外的位置
  • 响应式原理: Vue2的原理是Object.defineProperty;Vue3的原理是Proxy/Reflect
  • 虚拟DOM: 新增patchFlag字段,优化渲染
  • 事件缓存
  • Diff算法优化
  • 打包优化: 新增Tree-shaking
  • TypeScript支持

Vue-Router的原理

路由描述的是URL与UI之间的映射关系,这种隐射是单向的,即URL变化引起UI变化(无需刷新页面)

  • hash模式: 通过hashchange事件监听URL的变化
  • history模式: 拦截pushState/replaceState的调用和标签的点击事件监听URL的变化

开发中遇到错误怎么排查

css盒模型(css的两种盒模型:标准盒模型、怪异盒模型)和 css3指定盒子模型种类的box-sizing属性
深入浅出vue-router原理
CSS 3 所有的选择器整理(2023.2)
判断Vue3与Vue2的区别
web前端性能优化(全汇总)
webpack 打包原理及流程解析,超详细!

相关文章:

  • go - 学习笔记 -2
  • 服务器防火墙的应用技术有哪些
  • Redis 16种妙用
  • 黑马程序员——接口测试——day03——Postman断言、关联、参数化
  • 智慧公厕让社区生活更美好
  • Python实战:读取MATLAB文件数据(.mat文件)
  • windows系统使用Vscode在WSL调试golang本地进程
  • windows安装部署node.js并搭建Vue项目
  • 半小时到秒级,京东零售定时任务优化怎么做的?
  • 数据库 -neo4j的基本操作
  • Flink SQL 中的流式概念:状态算子
  • 240Hz高刷电竞显示器 - HKC VG253KM
  • 【分布式事务 XA模式】MySQL XA模式详解
  • 如何操作系统缓冲区减少了磁盘碎片化?
  • springboot-基础-添加model和controller的简单例子+常用注解含义
  • 345-反转字符串中的元音字母
  • cookie和session
  • co模块的前端实现
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript 奇技淫巧
  • JS学习笔记——闭包
  • MySQL数据库运维之数据恢复
  • PaddlePaddle-GitHub的正确打开姿势
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Python 反序列化安全问题(二)
  • Shell编程
  • unity如何实现一个固定宽度的orthagraphic相机
  • XML已死 ?
  • Zepto.js源码学习之二
  • 给github项目添加CI badge
  • 力扣(LeetCode)965
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 深度学习中的信息论知识详解
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 算法-图和图算法
  • 用 Swift 编写面向协议的视图
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • #pragma 指令
  • $NOIp2018$劝退记
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (4)logging(日志模块)
  • (WSI分类)WSI分类文献小综述 2024
  • (独孤九剑)--文件系统
  • (三)c52学习之旅-点亮LED灯
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • ******之网络***——物理***
  • .axf 转化 .bin文件 的方法
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net CF下精确的计时器
  • .Net Memory Profiler的使用举例
  • .NET 设计模式初探
  • .net连接oracle数据库
  • .net网站发布-允许更新此预编译站点