面试记录总结

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.mapES6 提供 Map数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map的属性和方法:1) size    返回Map的元素个数2) set     增加一个新元素,返回当前 Map3) 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.rhkb.cn/news/367626.html

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

相关文章

新手教学系列——慎用Flask-SQLAlchemy慢日志记录

在使用 Flask-SQLAlchemy 开发应用时,了解和避免潜在的问题是非常重要的。特别是在常驻进程和循环执行任务的场景下,慢查询记录功能(SQLALCHEMYRECORDQUERIES)可能会引发严重的内存泄漏问题。本文将详细介绍这个问题,并提供解决方案,帮助你在开发过程中避免掉入这些陷阱。…

Java开源ERP系统Axelor汉化方法初探

Axelor简介 汉化过程介绍 定义语言和本地化 导出多语言记录 导入翻译 验证翻译 调整翻译 Axelor简介 2024年6月份Axelor ERP发布了8.1版本,适配JDK11及PostgreSQL12及以上版本(7及以前版本适配JDK8及PostgreSQL10)数据库。v8版本较之前…

Oracle - 数据库打补丁实践

原文:https://www.cnblogs.com/ddzj01/p/12097467.html 一、概述 本文将介绍如何给oracle数据库打最新补丁,数据库版本为11.2.0.4单实例,操作系统为redhat6.5 二、下载相关升级包 1. 登录MOS,查阅(ID 2118136.2),下载…

TDD测试驱动开发

为什么需要TDD? 传统开发方式,带来大量的低质量代码,而代码质量带来的问题: 1.在缺陷的泥潭中挣扎 开发长时间投入在缺陷的修复中,修复完依赖测试做长时间的回归测试 2.维护困难,开发缓慢 比如重复代码&am…

Stm32的DMA的学习

一,介绍 二,DMA框图 三,DMA通道 四,相关HAL库函数 五,配置DMA 六,Stm32CubeMX配置 【13.1】减少CPU传输负载 DMA直接存储器访问—Kevin带你读《STM32Cube高效开发教程基础篇》_哔哩哔哩_bilibili

sideloadly 苹果自签和sidestore手机续签ipa记录

sideloadly 地址:https://sideloadly.io/#download 直接安装对应系统软件,然后吧ipa 拖到里面续签,缺点每7天需要电脑续签 如果续签保留数据需要对应的位置开启 enable file sharing 勾选 和 bundle id 修改 注意的地方需要电脑和手机appi…

echarts-wordcloud:打造个性化词云库

前言 在当今信息爆炸的时代,如何从海量的文本数据中提取有用的信息成为了一项重要的任务。词云作为一种直观、易于理解的数据可视化方式,被广泛应用于文本分析和可视化领域。本文将介绍一种基于 echarts-wordcloud 实现的词云库,通过其丰富的…

06-java基础——集合的复习

集合的体系结构 集合主要分为两类: 单列集合双列集合 一、单列集合 list系列集合:添加的元素是有序、可重复、有索引的。 有序:指的是存和取的顺序是一致的 set系列集合:添加的元素是无序、不可重复、无索引的。 collection&…

Python爬虫实战案例——王者荣耀皮肤抓取

大家好,我是你们的老朋友——南枫,今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩,直接上代码: 导入我们需要使用到的,也是唯一用到的库: 我们要抓取皮肤其…

统计信号处理基础 习题解答11-11

题目 考虑矢量MAP估计量 证明这个估计量对于代价函数 使贝叶斯风险最小。其中:, ,且. 解答 贝叶斯风险函数: 基于概率密度的非负特性,上述对积分要求最小,那就需要内层积分达到最小。令内层积分为: 上述积…

【SkiaSharp绘图12】SKCanvas方法详解(一)清空、裁切区域设置、连接矩阵、注释、弧与扇形、图集、九宫格绘图、圆

文章目录 SKCanvas 方法Clear 清空ClipPath/ClipRect/ClipRegion/ClipRoundRect 设置裁切区域Concat 连接矩阵DrawAnnotation绘制注释DrawArc绘制椭圆弧、扇形DrawAtlas绘制图集(一个图像、多个区域、多个缩放、一次绘制)DrawBitmap绘制图像DrawBitmapNinePatch九宫…

停车场车牌识别计费系统,用Python如何实现?

关注星标,每天学习Python新技能 前段时间练习过的一个小项目,今天再看看,记录一下~ 项目结构 说明: datefile文件夹:保存车辆信息表的xlsx文件 file文件夹:保存图片文件夹。ic_launcher.jpg是窗体的右上角…

vector模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间和类类的成员变量 迭代器迭代器获取函数 构造函数默认构造使用n个值构造迭代器区间构造解决迭代器区间构造和用n个值构造的冲突拷贝构造 析构函数swap【交换函数】赋值运算符重载emptysize和capacityopera…

字符串知识点

API API和API帮助文档 API:目前是JDK中提供的各种功能的Java类。 这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。 API帮助文档:帮助开发人员更好的使用API和查询API的一个工具。 String概…

【Linux】线程封装与互斥(万字)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 C多线程的用法 对原生线程进行一次封装 理解pthread线程 Linux线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 操作共享变量会有问题的售票…

eventloop 事件循环机制 (猜答案)

// eventloop 事件循环机制// console.log(555);setTimeout(() > {console.log(666);})let p new Promise((resolve,reject)>{// 同步执行console.log(111);resolve();});// promise 的回调函数是异步的微任务p.then(v > {console.log(222);}, r > {console.log(r…

解决ps暂存盘已满的问题

点击编辑->首选项->暂存盘 ps默认暂存盘使用的是c盘,我们改成d盘即可 然后重启ps

OpenSSL的一些使用案例

目录 一、介绍 二、基本使用 1、Shell (1)文件加解密 (2)生成密钥文件 2、API (1)md5sum (2)AES256加解密 一、介绍 本篇博客重点不是详细描述 OpenSSL 的用法,只…

snap和apt的区别简单了解

Linux中没有tree命令的时候提示安装的时候出现了两个命令,简单看了看两者有何区别(一般用apt就可以了): sudo snap install tree 和 sudo apt install tree 这两个命令都是用来安装 tree 命令行工具的,但它们使用的是不…

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后,第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …