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

题目来源: 牛客

使用TS的目的

  • 提供很好的智能提示
  • 方便进行代码重构
  • 明确定义参数类型和函数重载

Type和Interface的区别

  • type主要用于创建联合类型、交叉类型、以及定义复杂的类型别名
  • interface主要用于定义对象和类的结构

Any和泛型

虽然用any类型能够接收任何类型的参数,但是会丢失类型信息,此时就需要使用泛型

function identity(arg: any): any {}function identity<T>(arg: T): T {}

对TS的理解

TS是JS的超集,支持ES6语法,和JAVA类似支持面对对象编程的概念,如类、接口、继承、泛型等。由于是超集,因为任何现有的JS代码都可以不加改变的在TS下工作

  • 类型批注和编译时类型检查
  • 类型推断
  • 类型擦除
  • 接口
  • 枚举
  • 混入
  • 泛型
  • 命名空间
  • 元组

Webpack的优化

  • 代码分离: 配置多入口、动态导入、自定义分包
  • CDN
  • 提取CSS文件
  • 打包文件命名
  • 代码压缩
  • Tree-Shaking
  • 作用域提升
  • 文件压缩

性能优化

  • 浏览器
    • 减少HTTP请求
    • 使用HTTP2.0
    • 设置浏览器缓存策略
    • 白屏时间做加载动画
  • 资源
    • 静态资源CDN
    • 静态资源单独域名
    • GZIP压缩
    • 做服务端渲染SSR
    • 将CSS放在头部,JS放在尾部
  • 图片
    • 字体图标代替图片图标
    • 精灵图
    • 图片懒加载
    • 图片预加载
    • 使用PNG格式
    • 小于10KB的图片转为BASE64
  • 代码
    • 慎用全局变量
    • 缓存全局变量
    • 减少回流与重绘
    • 节流防抖
    • 少用闭包
    • 减少数据读取次数
    • 文档碎片优化
    • 减少判断层级
  • 项目
    • 长列表优化
    • web worker
    • 避免iframe
  • 打包

查找白屏原因

  • 判断网络连接是否通畅
  • 判断网络地址是否输入有误
  • 打开控制台查看报错信息
  • 查看接口访问是否正常
  • 查看路由是否有path/name的问题

前端工程化的目的

前端工程化是一种思想,主要目的是为了提高效率和降低成本,即提高开发过程中的开发效率并减少不必要的重复工作时间等。可以从模块化、组件化、规范化和自动化四个方面着手

SourceMap为何vue能在浏览器直接显示报错行数

SourceMap的主要作用是为了方便调试,因为现在的前端代码都是模块化、组件化的,在上线前会对js和css文件进行合并、压缩、混淆,这样的代码难以调试。SourceMap的作用就是能让浏览器的调试面板将生成后的代码映射到源码文件中,使得开发者能够在源码中进行DEBUG

Vue渲染原理

Vue的设计参考了MVVM架构,分为业务层、视图层以及绑定层,但并不完全符合MVVM,因为它没有严格意义上的绑定层。MVVM要求开发者将业务层和视图层分开:业务层负责管理数据;视图层负责页面渲染;绑定层负责双向绑定

Vue将组件转化成JS描述的虚拟DOM,然后调用原生对其进行挂载成真实DOM。Vue的执行过程主要分为两大阶段:Vue自身的初始化阶段和实例的生命周期管理阶段

节流防抖

  • 防抖: 多次执行只执行最后一次
    function debounce(func, delay) {let timeout;return function () {const _this = this;const _args = arguments;if (timeout) {clearTimeout(timeout);}timeout = setTimeout(() => {func.apply(_this, _args);}, delay);}
    }
    
  • 节流: 多次执行只执行第一次2
    function throttle(func, wait) {let timeout;return function() {const _this = this;const _args = arguments;if (!timeout) {timeout = setTimeout(() => {timeout = undefined;func.apply(_this, _args);}, wait);}}
    }
    

为什么要用TypeScript?代码详解ts给我们带来的收益
深入理解TypeScript中type和interface的区别与适用场景
TypeScript里的类型为any和泛型的区别
面试官:说说你对 TypeScript 的理解?与 JavaScript 的区别?
webpack性能优化方案(详细)
前端性能优化篇: 防抖和节流
超详细的Vue渲染原理讲解
详解前端代码的sourceMap原理——让你不再为调试代码发愁
谈谈你对前端工程化的理解
前端面试题:页面出现空白,怎么排查定位问题?
web前端性能优化(全汇总)

新人发文,礼貌球馆💕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Retrofit核心原理

Retrofit是一个类型安全的HTTP客户端库&#xff0c;广泛用于Android和Java应用中&#xff0c;用于简化网络请求和响应的处理。本文将深入探讨Retrofit的核心原理&#xff0c;帮助开发者理解其背后的工作机制。 Retrofit简介 Retrofit是Square公司开发的一个开源库&#xff0c…

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势&#xff0c;可以显著降低5G应用复杂度&#xff0c;快速实现5G网络接入&#xff0c;提升FWA部署的经济效益。 RedCap技术带来了…

YOLO V5、SAM、RESNET50模型在GPU环境下搭建过程

好的&#xff0c;我将提供更详细的步骤来搭建YOLOv5、SAM和ResNet50模型在GPU环境下的过程。 **1. 环境设置&#xff1a;** 确保你的环境满足以下要求&#xff1a; - CUDA和CuDNN已正确安装&#xff0c;并与你的GPU兼容。 镜像下载cudnntensorflow_cudnn镜像下载-CSDN博客 …

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集 一、算法原理二、代码三、结果1.sor统计滤波2.Ransac内点分割平面3.Ransac外点分割平面 四、相关数据 一、算法原理 1、Ransac介绍 RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outlier…

Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

如何使用ArcGIS Pro为栅格图添加坐标信息

在某些时候&#xff0c;我们从网上获取的资源是一张普通的栅格图&#xff0c;没有任何的坐标信息&#xff0c;如果想要和带坐标信息的数据一起使用就需要先添加坐标信息&#xff0c;在GIS上&#xff0c;我们把这个过程叫做地理配准&#xff0c;这里为大家介绍一下地理配准的方法…

golang的反射探索

1、golang中反射常用的场景 1》类型检查—通用类包或者函数的时候&#xff0c;在运行时可以动态的获取任意对象的类型信息 2》动态调用方法—运行时动态的选择使用哪个方法 3》结构体标签处理—结构体字段一般是通过tag来注解。运行时可以通过反射读取tag。常用于解析配置文件&…

雾锁王国Enshrouded服务器CPU内存配置怎么选择?

雾锁王国/Enshrouded服务器CPU内存配置如何选择&#xff1f;阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置&#xff0c;支持4人玩家畅玩&#xff0c;自带10M公网带宽&#xff0c;1个月90元&#xff0c;3个月271元&#xff0c;幻兽帕鲁服务器申请页面 https://t.aliyun.com…

使用 Go 语言读取文件内容并进行反序列化

在现代软件开发过程中&#xff0c;经常需要读取配置文件或数据文件&#xff0c;并将这些文件的内容转换成程序可以理解和操作的数据结构。对于使用Go语言的开发者来说&#xff0c;标准库中提供的一系列工具和包能够帮助完成从文件读取到数据反序列化的整个流程&#xff0c;特别…

通过shell编写内存监视的脚本来介绍一些基本shell脚本操作

目录 知识概览 总体脚本编写 date awk grep bc 知识概览 总体脚本编写 #!/bin/bash#定义日志的文件名和日期 cdate$(date %Y%m%d%H%M%S) logfile"/tmp/memlog_{$0}.log"#拿到ip ip_addr$(ip add|grep "ens33$"|awk {print $2})#总内存和使用的内存 m…

成为大佬之路--linux软件安装使用第000000018篇--linux安装nacos

官网 Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 安装包 Releases alibaba/nacos GitHub 安装 1.创建目录 mkdir -p /opt/nacos cd /opt/nacos 2.下载安装包 wget https://github.com/alibaba/nacos/releases/download/1.4.7/nacos-server-1.4.7.tar.gz 3.解压…

如何使用Fastapi上传文件?先从请求体数据讲起

文章目录 1、请求体数据2、form表单数据3、小文件上传1.单文件上传2.多文件上传 4、大文件上传1.单文件上传2.多文件上传 1、请求体数据 前面我们讲到&#xff0c;get请求中&#xff0c;我们将请求数据放在url中&#xff0c;其实是非常不安全的&#xff0c;我们更愿意将请求数…

springboot/ssm高校疫情防控系统Java校园疫情防控管理平台web

springboot/ssm高校疫情防控系统Java校园疫情防控管理平台web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;…

第三百七十二回

文章目录 1. 概念介绍2. 实现方法2.1 maskFilter2.2 shader 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"两种阴影效果"相关的内容&#xff0c;本章回中将介绍如何绘制阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概…

LeetCode刷题笔记之二叉树(三)

一、寻找特定节点 1. 404【左叶子之和】 题目&#xff1a; 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。代码&#xff1a; class Solution {public int sumOfLeftLeaves(TreeNode root) {//左叶子不止是最左边的叶子&#xff0c;而是二叉树中每个节点的左叶子…

java多线程并发实战,java高并发场景面试题

阶段一&#xff1a;筑基 Java基础掌握不牢&#xff0c;对于一个开发人员来说无疑是非常致命的。学习任何一个技术知识无疑不是从基础开始&#xff1b;在面试的时候&#xff0c;面试官无疑不是从基础开始拷问。 内容包括&#xff1a;Java概述、Java基本语法、Java 执行控制流程、…

html5盒子模型

1.边框的常用属性 border-color 属性 说明 示例 border-top-color 上边框颜色 border-top-color:#369; border-right-color 右边框颜色 border-right-color:#369; border-bottom-color 下边框颜色 border-bottom-color:#fae45b; border-left-color 左边框颜色…

java springmvc/springboot 项目通过HttpServletRequest对象获取请求体body工具类

请求 测试接口 获取到的 获取到打印出的json字符串里有空格这些&#xff0c;在json解析的时候正常解析为json对象了。 工具类代码 import lombok.extern.slf4j.Slf4j; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.we…

【前端开发】前端开发深度解析:HTML、CSS、JavaScript与Vue.js

一、HTML&#xff1a;构建网页的基石 1.1 简介 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是一种用于创建网页的标准标记语言。它使用各种标签&#xff08;tags&#xff09;来描述网页上的内容&#xff0c;包括文本、图像、链接、视频…

类的继承extends以及super

类的继承 继承&#xff1a;基于父类的某个扩展&#xff0c;制定出一个新的子类&#xff0c;而这个子类可以继承父类的原有属性和方法 java是如何体现继承的特性的 平板电脑继承了台式机电脑所拥有的功能(如听音乐)的基础上&#xff0c;同时扩展出自己特殊的用途&#xff1a;如…