面试记录总结

es6新特性

---------------------------------------------------------------------------------------
let
1.变量不能重复声明
2.块儿级作用域
3.不存在变量提升
4.不影响作用域链
const
1.一定要赋初始值
2.一般常量使用大写(潜规则)
3.常量的值不能修改
4.块儿级作用域
5.对于数组和对象的元素修改,不算做对常量的修改,不会报错
var let const的区别
1. 使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
2. 使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
3. 使用 const 声明的是常量,在后面出现的代码中不能再修改该常量的值。 ```
---------------------------------------------------------------------------------------
模板字符串  ES6引入新的声明字符串的方式 (``)。
---------------------------------------------------------------------------------------
方法
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
repeat():repeat方法返回一个新字符串,表示将原字符串重复n次。
padStart():用于头部补全。
padEnd():用于尾部补全。
trimStart():清除字符串左边的空白。
trimEnd():清除字符串右边的空白。
replaceAll():可以一次性替换所有匹配。
at():接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。
---------------------------------------------------------------------------------------
箭头函数 () => {}
特性:
1.this 是静态的。this 始终指向函数声明时所在作用域下的 this 的值
2.不能作为构造实例化对象
3.不能使用 arguments 变量
4.箭头函数的简写
1)省略小括号,当形参有且只有一个的时候
   let add = n => {
   		return n + n;
   }
   console.log(add(9));
2) 省略花括号,当代码体只有一条语句的时候,此时 return 必须省略
   let pow = (n) => n * n;
   console.log(pow(8));
---------------------------------------------------------------------------------------
模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。
模块化的优势有以下几点:
   1)防止命名冲突
   2)代码复用
   3)高维护性
模块功能主要由两个命令构成:
   exportimportexport 命令用于规定模块的对外接口
   import 命令用于输入其他模块提供的功能
---------------------------------------------------------------------------------------
数组的扩展
array.of():用于将一组值,转换为数组。
find():用于找出第一个符合条件的数组成员,如果没有找到返回undefinedfindIndex():用于找出第一个符合条件的数组成员的位置,如果没有找到返回-1includes():表示某个数组是否包含给定的值,返回布尔值。
flat():将多维数组转化为低位数组。
flatMap():将多维数组转化为低位数组。
at():接受一个整数作为参数,返回对应位置的成员,并支持负索引。这个方法不仅可用于数组,也可用于字符串和类型数组(TypedArray)。
扩展运算符:可以将数组进行实例化,也可以将实例化的数据转成数组的形式。
   用途:
           1.数组的合并
           2.数组的克隆
           3.将伪数组转为真正的数组
---------------------------------------------------------------------------------------
对象的扩展
object.keys()方法返回一个给定对象的所有的键
object.values()方法返回一个给定对象的所有的值
object.entries()方法返回一个给定对象自身可遍历属性 [key,value] 的数组
Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。
object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
---------------------------------------------------------------------------------------
Set和Map数据结构
1.Set(集合)
 ​    ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合的属性和方法:​
    ​ 1) size    返回集合的元素个数
     ​2) add     增加一个新元素,返回当前集合
     ​3) delete  删除元素,返回 boolean 值
     ​4) has     检测集合中是否包含某个元素,返回 boolean 值

2.map
      ES6 提供 Map数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map的属性和方法:
     1) size    返回Map的元素个数
     2) set     增加一个新元素,返回当前 Map
     3) get     返回键名对象的键值
     4) has    检测 Map 中是否包含某个元素,返回 boolean 值
     5) clear   清空集合,返回undefined
---------------------------------------------------------------------------------------
classES6 提供了更接近传统语言的写法,引入了 Class()这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6class 可以看作只是个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
知识点:
 1) class 声明类
 2) constructor 定义构造函数初始化
 3) extends 继承父类
 4) super 调用父级构造方法
 5) static 定义静态方法和属性
 6) 父类方法可以重写
---------------------------------------------------------------------------------------
promise
Promise是 ES6引入的异步编程的新解决方案。回调函数和异步编程是js特点之一,但是js中传统的回调函数编写太麻烦,如果嵌套的回调函数层级过多会导致回调地狱,代码很难看,因此promise在es6被引入用来解决这个问题。语法上Promise 是一个构造函数用来封装异步操作并可以获取其成功或失败的结果。

语法: resolve和reject是传进来的函数
new Promise((resolve,reject)=>{
   	// 成功的回调
   	resolve()
   	// 失败的回调
   	reject()
})

promise的三种状态
1.pending: 等待中,或者进行中,表示还没有得到结果
2.resolved(Fulfilled): 已经完成,表示得到了我们想要的结果,可以继续往下执行
3.rejected: 也表示得到结果,但是由于结果并非我们所愿,因此拒绝执行


resolve 函数的作用:在异步操作成功时调用,并将异步操作的结果作为参数传递出去
reject 函数的作用:在异步操作失败时调用,并将异步操作的结果作为参数传递出去
then 获取Promise的结果,查看成功/失败回调函数的结果
all 接受一个数组(迭代对象)作为参数,数组成员都应为Promise实例。返回所有数组,但是其中一个返回rejected就会中断返回失败的那一项
race 接受一个数组(迭代对象)作为参数,数组成员都应为Promise实例。一个成功则会返回成功的Promise
---------------------------------------------------------------------------------------

深拷贝需要注意哪些点


 - 数据类型的处理:
 	不同的编程语言和数据类型可能需要不同的处理方式。例如,在使用JavaScript的JSON.stringify()JSON.parse()方法进行深拷贝时,会忽略undefined、symbol和函数类型的数据。此外,这种方法也无法正确处理循环引用的情况,即一个对象直接或间接地引用了自身,这会导致无限循环错误。
 - 特殊对象的处理:
	对于特殊对象如日期、正则表达式、全局变量等,需要特别处理以确保它们在深拷贝后仍然有效。例如,在JavaScript中,使用JSON.stringify()JSON.parse()会丢失这些特殊对象的类型信息,需要特别的方法来处理这些情况。
 - 性能考虑:
	深拷贝可能会涉及大量的内存分配和复制操作,特别是在处理大型或复杂的数据结构时。因此,需要考虑性能影响,避免在不需要频繁进行深拷贝的情况下过度使用这种方法。
 - 循环引用问题:
 	在某些编程语言中,如果数据结构中存在循环引用,简单的深拷贝方法可能会失败或陷入无限循环。需要实现能够处理这种情况的深拷贝算法。

require和import的区别

require 是直接运行
import 是编译时运行,它必须放在文件开头,而且使用格式也是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只选择import的接口进行编译,这样在性能上比require好很多。

ES5实现继承

1.原型链继承
	 子类实例的原型指向父类实例,当在子类实例中找不到属性和方法,就去父类实例中找,从而实现原型链继承
	 缺点:多个子类实例指向同一个父类实例,当某一个子类实例中的属性或方法发生改变时,会影响其余所有的子类实例。子类实例创建时,无法向父类构造传参
2.构造函数继承
	子类构造函数中运行父类构造函数,并为其绑定this
	缺点:无法继承父类原型上的属性和方法
3.组合式继承
	原型继承+构造函数继承
	缺点:子类实例构造时,会执行两次父类构造函数(new Person()  Person.apply()4.寄生组合式继承
	在组合式继承的基础上,将指向父类实例,改为指向父类原型,减少父类构造函数执行次数

跨域解决方案

 1. JSONP跨域
 2. CORS 跨域资源共享 (前端不需要做任何改变)
 3. nginx代理跨域
 4. nodejs中间件代理跨域
 5. WebSocket协议跨域

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vscode快捷键崩溃

Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》

[vue3+js]实现3d旋转效果

1. 实现效果图&#xff1a; 2.实现代码&#xff1a; css: <style lang"scss" scoped>.bottomContainer{width: 1200px;height: 400px;display: flex;justify-content: center;position: relative;margin:200px auto;align-items: center;// background-image…

迈向智慧水利新时代:聚焦智慧水利解决方案的核心技术与发展方向,展望其在推动水利行业可持续发展中的重要作用

目录 一、引言 二、智慧水利解决方案的核心技术 1. 物联网技术 2. 大数据与云计算 3. 人工智能与机器学习 4. 区块链技术 三、智慧水利的发展方向 1. 深化技术融合与创新 2. 强化系统集成与协同 3. 提升公众参与与互动 4. 注重生态友好与可持续发展 四、智慧水利在…

5.3.3、二维数组案例-考试成绩统计

代码 #include <iostream> using namespace std; #include <string>int main() {//二维数组案例-考试成绩统计//1、创建二维数组int scores[3][3] {{100,100,100},{90,50,100},{60,70,80},};string names[3] { "张三","李四","王五&quo…

Qt——升级系列(Level Seven):事件、文件

目录 Qt事件 事件介绍 事件的处理 按键事件 鼠标事件 定时器 事件分发器 事件过滤器 Qt文件 Qt文件概述 输入输出设备类 文件读写类 文件和目录信息类 Qt事件 事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使⽤⼀个对象来表⽰⼀个事件。所有的 Qt …

STM32 ADC精度提升方法

STM32 ADC精度提升方法 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化 硬件方法 优化布局布线&#xff0c;尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器&#xff0c;或加磁珠使用DCDC时尽…

在Android运行时切换Retrofit Base URL:简化开发环境与生产环境的切换

在运行时切换Retrofit Base URL:简化开发环境与生产环境的切换 在Android开发中,Retrofit是一个由Square开发的类型安全的HTTP客户端库。它为API认证和网络请求提供了一个强大的框架。然而,在开发过程中,我们常常需要在不同的环境(如开发环境和生产环境)之间切换Base UR…

2024上半年剧集市场复盘:质增量减之下,腾讯持续领跑

随着2024上半年结束&#xff0c;剧集市场长视频平台的比拼也告一段落了。 总结2024H1阶段的剧集市场&#xff0c;依旧延续了“高质量增长”的发展路线&#xff0c;具体表现在数量上的减少和质量上的提升&#xff0c;“质增量减”成为这一阶段的关键词。 根据灯塔专业版数据&a…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)

环境&#xff1a;OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接&#xff1a;【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法&#xff0c;是一种基于颜色空间分布(彩色图像的像素值)的图像分割…

java框架的落地实践案例:大数据平台设计与实现

使用 java 框架设计和实现大数据平台可为企业提供数据处理和分析解决方案&#xff0c;使之能够做出数据驱动的决策。系统采用微服务架构&#xff0c;分解数据处理任务为松散耦合组件&#xff0c;构建于 spring boot 等 java 框架之上。数据采集通过kafka 进行&#xff0c;数据清…

【原理】随机森林模型是怎么训练的

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、随机森林简介二、随机森林训练原理2.1. 随机森林的训练流程2.2. 随机森林训练的核心代码 用过随机森林的朋友都知道&#xff0c;随机森林是集成决策的一个经典代表&#xff0c;它通过训练多棵决策树&#xf…

1、线性回归模型

1、主要解决问题类型 1.1 预测分析(Prediction) 线性回归可以用来预测一个变量(通常称为因变量或响应变量)的值,基于一个或多个输入变量(自变量或预测变量)。例如,根据房屋的面积、位置等因素预测房价。 1.2 异常检测(Outlier Detection) 线性回归可以帮助识别数…

鸿蒙应用开发-时间屏幕

点击下载源码&#xff1a; https://download.csdn.net/download/liuhaikang/89509449 做一个时间屏幕&#xff0c;可以点击切换白色和黑色&#xff0c;有渐变效果&#xff0c;使用到了鸿蒙的动画效果。 在这个设计中&#xff0c;我们首先引入了通用能力包&#xff0c;以实现功…

将一个立方体对象的值赋给另一个立方体对象

如果对一个类定义了两个或多个对象&#xff0c;则这些同类的对象之间可以互相赋值&#xff0c;或者说&#xff0c;一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。 对象之间的赋值也是通过赋值运算符""进行的。本来&…

MYSQL substring_index

1.substring_index( 参数1,参数2 ,参数3 ) 2.group by 也可以用我们起的别名来划分&#xff0c;以及起别名可以不用as SELECT IF(profile LIKE %female,female,male) gender,COUNT(*) number FROM user_submitGROUP BY gender; 3.切割、截取、删除、替换 select -- 替换法 r…

logback log.info耗时异常,RollingFileAppender+TimeBasedRollingPolicy配置踩坑

我喜欢把核心内容放开头 此次log.info耗时异常升高&#xff0c;是由于日志量过大&#xff08;5G甚至以上&#xff09;&#xff0c;并且使用同步阻塞的RollingFileAppenderTimeBasedRollingPolicy&#xff0c;导致log.info一直等待日志文件滚动&#xff0c;造成了异常。解决方式…

innovus:timing报告的精度如何设置

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 innovus设置timing报告精度常用方法: set_global report_precision 6 report_timing&#xff0c;report_net&#xff0c;report_cell_instance_timing&#xff0c;report_cloc…

记录前端发现问题之 mock接口无返回数据导致所有后续接口调用报错:网络异常

1. 背景 就更新了代码&#xff0c;发现新涉及的页面&#xff0c;切换tab 之后会报错网络异常&#xff0c;再次切换其他没涉及的功能页面&#xff0c;继续报错网络异常 测试环境&#xff1a;纯前端代码&#xff0c;后端是前端mock的数据&#xff0c;仅供demo 2. 问题报错 手动…

如何构建智能聊天系统

聊天分为听、思考、读&#xff0c;简单的通过ASR、LLM、TTS三类模型的组合可以实现&#xff0c;最近openai推出支持多模态的GPT-4o模型&#xff0c;可以把三个模型真正融合成在一起。 现在市面上的模型百花齐放&#xff0c;各有所长。要实现可落地的方案&#xff0c;需要结合业…

ffmpeg在powershell和ubuntu终端下的不同格式

在win10下的powershell中&#xff0c;如果想运行一个exe文件&#xff0c;就不能再像cmd命令行一样用名字来直接运行了&#xff0c;否则会提示格式不对。 正确的做法是&#xff1a; . \ffmpeg.exe -re -i video-test.mpr -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://您的…
最新文章