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

网站开发验收确认书/seo是什么职务

网站开发验收确认书,seo是什么职务,怎么把文章导入wordpress,打开网站iis7前端科举八股文-JAVASCRIPT篇 Js的变量类型,区别是什么平时有用过symbol吗函数闭包的理解?js的原型链? Function Function.constructor 返回值?promise的出现是为了解决什么问题?前端中的事件流事件委托?js的new操作符做了哪些…

前端科举八股文-JAVASCRIPT篇

  • Js的变量类型,区别是什么
  • 平时有用过symbol吗
  • 函数闭包的理解?
  • js的原型链? Function === Function.constructor 返回值?
  • promise的出现是为了解决什么问题?
  • 前端中的事件流
  • 事件委托?
  • js的new操作符做了哪些事情
  • bind call apply的区别
  • 浏览器的垃圾回收机制
  • 如何判断是不是数组?
  • 垃圾回收机制
  • mouseover和mouseenter的区别
  • 前端的模块化
  • Js代码的执行顺序
  • 讲一下你对懒加载和预加载的理解
  • Js的new操作符?
  • Js的防抖和节流
  • 深拷贝,浅拷贝的区别?
  • 如何实现深拷贝
  • 如何实现所有对象的深拷贝?
  • 数组去重方法?
  • 说一下virtual dom
  • 讲一下js实现继承的几种方式
  • 0.1+0.2 === 0.3? 为什么 如何解决
  • Typeof NaN等于什么? NaN === NaN ?
  • == , ===和object.is的区别?
  • 箭头函数和普通函数的区别?
  • map和weakMap的区别?

Js的变量类型,区别是什么

基本number boolean undefined null string es6新增的 symbol
引用 object array es6新增的 set map weakSet weakMap

区别 基本类型将值直接存储在栈中,引用对象类型将值存储在堆中,在栈中存储的只是指向值的指针。

平时有用过symbol吗

symbol是es6新增的一个基本对象类型。它表示一个独一无二的值。
日常开发中我用它来清除魔法字符串。比如我们再给一个业务常量赋值初始值的时候并不关心它的初始值是什么,只需要保证这个值不和其他值重复。这时候就可以使用symbol来初始化这个常量。

const student_1 = 'zhangsan'
const student_2 = 'lisi'
// 如果这个时候有个学生名字叫章三
const student_3 = 'zhangsan' // 这行代码容易出事

我们定义常量并不关心常量的值,只需要保证他们都不重复时可以使用symbol

const student_1 = Symbol()
const student_2 = Symbol()
const student_3 = Symbol()// 如果觉得这种写法语意化不强,实在是不好理解也可以这样改写const student_1 = Symbol('zhangsan')
const student_2 = Symbol('lisi')
const student_3 = Symbol('zhangsan')
由于Symbold的特殊性,此时的两个symbol值也不会相等  student_1 !== student_3

还有一个用法是,使用symbol定义的对象属性不能被遍历方法遍历。可以利用这个特性封装一些不需要对外暴露的对象属性或者方法。使代码更加优雅

 const me = {name:'wxs',age:14,[Symbol('hobby')]:'code'}Object.keys(me) // ['name','age']

函数闭包的理解?

闭包的本质就是函数内部的函数,内部函数可以访问到外部函数里面的变量或者方法,同时暴露给外部调用. 因为外部函数是形成了局部作用域的,在函数外部是无法直接访问的.

	const fn = () => {let name = '1233'}由于函数局部作用域的特性,函数外部是无法访问这个name属性的。

如果要访问函数内部的属性或者方法可以使用闭包

	const fn = () => {let name = '1233'const returnName = () => name}

坏处 容易造成内存泄漏.因为内部函数始终保存了外部函数内部变量的引用.不会被浏览器GC机制所回收.

js的原型链? Function === Function.constructor 返回值?

当我们调用一个对象上的属性或者方法时,js会在当前对象上查找,如果查找不到就沿着对象的原型链也就是沿着__proto__一直往上找,一直找到object.prototype.proto,如果没有此属性或者方法才会返回undefined,一般来说构造函数的实例的constructor指针会指向构造函数本身,但是Function是一个特例,Function === Function.constructor 返回是true。可以这样理解,Function也是其构造函数(Function)的一个实例。如果觉得有点绕,可以结合这篇博客食用

promise的出现是为了解决什么问题?

为了解决异步回调地狱,在promise之前,如果一个异步函数依赖另一个异步函数的返回值,那么就要在回调里面嵌套回调,如果层级比较多的情况下代码就会变得十分难以维护。promise可以将异步回调代码以一种“同步”形式展示,使代码更可读。

 sendRequest('请求参数',(res) => {sendRequest_2(res,(res_2) => {sendRequest_3(res_2,(res_3) => {// do something}})})
// 在promise出现之前这种就是异步回调地狱 (嵌套过深,导致代码难看且难以维护)
// 在promise出现之后可以将上述代码写成同步的形式(本质上还是异步代码)const sendAjax = (params) => {return new Promise((resolve,reject) => {sendRequest(params,(res) => {resolve(res)})})
}
sendAjax('请求参数').then(res => {sendAjax(res).then(res_1 => {sendAjax(res_1)})
})

前端中的事件流

先事件捕获,再事件冒泡。事件捕获和事件冒泡顺序相反,事件捕获是从先外层再内层,事件冒泡是先内层目标事件对象再冒泡到外层。浏览器的默认行为是事件冒泡。可以通过addeventlistener的第三个参数来决策浏览器行为是事件捕获还是事件冒泡。

事件委托?

它是利用浏览器的冒泡机制的一个代码技巧,比如我们有一个list需要绑定事件,不需要在每一个li上去绑定事件,直接在它的父元素ul上去绑定事件就可以,这就是事件委托.

js的new操作符做了哪些事情

首先会新建一个空对象,然后通过bind或者apply执行构造函数将构造函数的this指向这个空对象,然后改写空对象的constructor属性和__proto__属性.最后return这个对象.

bind call apply的区别

三者都是js中改变this指向的api,call 和bind是立即执行,call的参数是,分割,bind的参数是数组. Apply的参数是数组,返回的是一个函数 不会立即执行.

浏览器的垃圾回收机制

之前是有两种,一个计数引用,一个标记清楚.后来由于对象之间会循环引用的关系,计数引用的计数量永远会是1,所以现在主流的垃圾回收机制是标记清除,一旦浏览器判断这个对象被释放就会进行垃圾回收.

如何判断是不是数组?

isArray
typeof + 是否具有array的方法
原型链判断 数组的.proto === Array.prototype

垃圾回收机制

浏览器的垃圾回收机制是指浏览器会周期性的去释放一些已经不再使用的js内存.
目前最流行的垃圾回收机制是标记清除. 当某一个变量被声明或者被使用的时候就会被标记进入环境,当使用完成就会删除其标记,在垃圾回收的时候就会把这些不再使用的变量占用的内存给回收掉.
还有一种主流的方式是计数引用,它会记录每一个变量被引用的数量,在垃圾回收的时候只会清除那些引用计数为0的变量内存.但是这种方式有缺陷.在两个对象循环引用的时候计数引用永远不会清零

mouseover和mouseenter的区别

Mouseover进入目标元素的子元素也会重复触发.而mouseenter只有进入目标元素的时候才会触发.

前端的模块化

(早期的CMD,AMD没用过,略去不表),这里就答ES module和node的commonjs规范.
CMD,AMD规范没使用过,不太了解,node主要遵循的是commomjs规范,前端浏览器主要使用的node模块化规范.
它们之间的不同第一个是使用方式不同,node是通过require和export来导入导出,每一个文件都是module的一个实例,内置了require和export变量.node模块是通过export 或者export default导出,import来导入.
Node模块是运行时加载,导出的是整个node对象,然后按需取所需的变量
Es6模块是静态加载,在编译的时候就完成了模块的加载.所以可以按需导出使用的变量.
Node模块导出的是值的浅拷贝,不会污染原模块
Es6模块导出的是值的引用,改动会影响到原模块

Js代码的执行顺序

Js代码的执行顺序和eventloop模型有关.js执行代码会先把代码中的同步代码推入同步队列,把异步任务的微任务推入微任务队列,再把宏任务推入宏任务队列.执行顺序是先清空同步任务,再清空微任务队列,再执行宏任务的第一个任务,再循环清空同步队列,微任务队列.这就是eventloop模型.
常见的微任务 promise.then 浏览器的oberveMutation事件等
常见的宏任务 定时器 延时器 requestAnimationFrame

讲一下你对懒加载和预加载的理解

两者都是提升用户体验. 以图片为例,懒加载是不加载不在视觉区域里面的图片,等到图片进入用户视口了再进行加载.懒加载可以减轻服务器压力,因为减少了初始请求.
而预加载相反,它是指预先加载资源,以便直接使用. 它是提前加载了不需要使用的资源.增加了服务器的压力.

Js的new操作符?

首先会新建一个空对象,然后执行构造函数,通过bind或者call将空对象的this指向这个空对象,然后重写对象的__proto__和constructor属性.最后return 这个对象.

Js的防抖和节流

在js中有一些高频触发的操作,比如window.resize和scroll事件等等,在这种事件中去执行一些高开销的操作比如发送请求是十分消耗性能的. 防抖是把一些高频触发的事件合并成一次.节流的思想是在防抖的基础上,将多次事件触发合并成少次触发.每隔x秒执行一次.

深拷贝,浅拷贝的区别?

深拷贝拷贝值,浅拷贝拷贝引用

如何实现深拷贝

1、递归实现
2、JSON序列化方法,有缺陷,null,正则和函数不能拷贝

如何实现所有对象的深拷贝?

对正则,函数,日期使用valueOf来克隆原始值进行拷贝

数组去重方法?

1、遍历,推入一个新数组,如果include新值就不推入
2、遍历,将每一个值作为对象的key,利用对象key不能重复的特点进行去重
3、利用ES6的新api Set

说一下virtual dom

虚拟dom树,是vue框架和react框架实现其性能优化的基础.这两个框架的视图都和数据强相关的,但是每次数据改变引发浏览器回流重新渲染的开销是很大的.所以vue和react都采取了virtual dom+diff算法来比较视图更新前后需要部分更新的部分节点来降低浏览器渲染页面的开销来实现性能优化的目的.

讲一下js实现继承的几种方式

ES6之前的继承方式主要有构造继承和原型继承.
构造继承,实现方式是在子构造函数中去调用通过call或者apply调用 父类构造函数,把父类构造函数的this指向改到子类从而实现继承. 优势是可以传参,缺点是不能继承原型上的属性或者方法,同时所有子类是继承同一个父类中的引用对象属性.会造成污染
还有一种构造继承. 是将父类的一个实例赋值给子类的prototype实现继承,但是这样不能传递参数. 所以可以采取组合继承来把这两种继承方式组合起来.
Es6之后可以用类+extends来实现继承.

0.1+0.2 === 0.3? 为什么 如何解决

首先返回时false,是因为计算机在底层计算是按2进制去运算的,而0.1和0.2用二进制表示都是无限循环小数,计算出来的和是不等于0.3的. 解决方法可以用toFix来计算.或者用ES6新的常量Number. EPSILON来判断两个数之间的系统误差是否小于这个值,只要小于这个系统误差就表示在合理范围内.

Typeof NaN等于什么? NaN === NaN ?

NaN的类型是number, NaN 不等于自身,是js类型中唯一一个不等于自身的值.

== , ===和object.is的区别?

双等号在比较之前会进行隐式转化,三等号不会进行转换,直接强比较,object.is比较方法和三等号一致,在特殊比较上做了兼容,比如 +0 不等于 -0 ,NaN 等于NaN.

箭头函数和普通函数的区别?

最大的区别是箭头函数的this是指向声明域,是固定的,而普通函数的this永远是指向调用者.箭头函数没有prototype,没有argument,不能用做构造函数

map和weakMap的区别?

Map的key可以是任何值,weakMap的key只能是对象.
weakMap的设计初衷是因为使用map在对象上存放一些数据时,会形成对这个对象的引用,导致这个对象不会被GC回收,需要手动去清除.而weakMap对作为key的对象是弱引用.不会影响GC机制回收该对象. 而同时也因为对key的值是弱引用,weakMap是没有size对象的.因为它的size具有不确定性(因为GC回收机制执行时机的不确定性).

相关文章:

前端科举八股文-JAVASCRIPT篇

前端科举八股文-JAVASCRIPT篇 Js的变量类型,区别是什么平时有用过symbol吗函数闭包的理解?js的原型链? Function Function.constructor 返回值?promise的出现是为了解决什么问题?前端中的事件流事件委托?js的new操作符做了哪些…...

Docker私有仓库与Harbor部署使用

目录 一、本地私有仓库 1. 下载registry镜像 2. 在daemon.json文件中添加私有镜像仓库地址 ​编辑 3. 运行registry容器 4. Docker容器的重启策略如下 5. 为镜像打标签 6. 上传到私有仓库 7. 列出私有仓库的所有镜像 8. 列出私有仓库的centos镜像有哪些tag 9. 先删…...

Linux的iptables防火墙基础介绍

iptables 防火墙 应用层软件----管理 内核级netfilter 硬件-------内核----网络—netfilter/kvm----- app iptables iptables—控制netfilter 过滤&#xff1a;<smac/sip/dip/sport/dport/状态> TCP/IP 应用层 传输层 sport dport 状态 <三次握手/四次断开> 网…...

deepspeed+transformers模型微调

一、目录 代码讲解 二、实现。 1、代码讲解&#xff0c;trainer 实现。 transformers通过trainer 集成deepspeed功能&#xff0c;所以中需要进行文件配置&#xff0c;即可实现deepspeed的训练。 微调代码&#xff1a; 参数定义—>数据处理---->模型创建/评估方式----&…...

无人机摄影测量数据处理、三维建模及在土方量计算中的应用

专题一、无人机摄影测量技术应用现状及其发展 1、无人机摄影测量技术概述 2、摄影测量系统的发展 3、无人机摄影测量技术应用分析 专题二、基本原理和关键技术讲解 1、摄影测量基础知识 1&#xff09;航空摄影 2&#xff09;航摄像片的方位元素 3&#xff09;共…...

《ESP8266通信指南》15-MQTT连接、订阅MQTT主题并打印消息(基于Lua|适合新手|非常简单)

往期 《ESP8266通信指南》14-连接WIFI&#xff08;基于Lua&#xff09;-CSDN博客 《ESP8266通信指南》13-Lua 简单入门&#xff08;打印数据&#xff09;-CSDN博客 《ESP8266通信指南》12-Lua 固件烧录-CSDN博客 《ESP8266通信指南》11-Lua开发环境配置-CSDN博客 《ESP826…...

LeetCode:两数之和

文章收录于LeetCode专栏 LeetCode地址 两数之和 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在该数组中找出和为目标值的那两个整数&#xff0c;并返回它们的数组下标。   你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。…...

CSDN我的创作纪念日128天||不忘初心|努力上进|勇往直前

机缘 Hello&#xff0c;大家好&#xff0c;我是景天&#xff0c;其实很早之前我就加入到了CSND的大军&#xff0c;彼时我还是个刚毕业的小白白&#xff0c;时常过来CSND汲取养料&#xff0c;就这样&#xff0c;慢慢的来提升自己&#xff0c;强大自己。工作锻炼了我&#xff0c…...

MySQL数据库中的浮点类型和高精度类型有什么区别?为什么不推荐使用浮点类型?

在软件开发中&#xff0c;作为后端&#xff0c;无可避免的需要熟练使用 MySQL 数据库进行数据存储和读取。对于信息系统而言&#xff0c;数据库的的地位不言而喻。那作为软件开发工程师&#xff0c;在使用 MySQL 过程中&#xff0c;又有哪些需要注意的呢&#xff1f;我们从实际…...

C++ 抽象与封装

一 抽象 抽象实例&#xff1a;时钟 数据抽象&#xff1a; 具有表面当前时间的时、分、秒 行为抽象&#xff1a; 具有设置时间和显示时间两个最基本的功能。 抽象实例&#xff1a;人 数据抽象&#xff1a;姓名、年龄、性别等。 行为抽象&#xff1a; 生物属性&#xff1a;吃…...

antV X6的简要使用教程

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 在我们的日常开发工作中&#xff0c;我们经常需要构建复杂的交互式图…...

【LLM 论文】Step-Back Prompting:先解决更高层次的问题来提高 LLM 推理能力

论文&#xff1a;Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models ⭐⭐⭐⭐ Google DeepMind, ICLR 2024, arXiv:2310.06117 论文速读 该论文受到的启发是&#xff1a;人类再解决一个包含很多细节的具体问题时&#xff0c;先站在更高的层次上解…...

Java——接口的补充

目录 一&#xff1a;接口的注意事项 1. 接口中不能有方法块&#xff1b; 2. 接口没有构造方法&#xff1a; 3.接口是可以多继承的&#xff1b; 4. 多个接口抽象方法重复 5. 类的父类方法与接口方法重复 二&#xff1a;类与接口 1. 继承与实现 2. 多个父接口的抽象…...

word转pdf的java实现(documents4j)

一、多余的话 java实现word转pdf可用的jar包不多&#xff0c;很多都是收费的。最近发现com.documents4j挺好用的&#xff0c;它支持在本机转换&#xff0c;也支持远程服务转换。但它依赖于微软的office。电脑需要安装office才能转换。鉴于没在linux中使用office&#xff0c;本…...

基于K8S构建Jenkins持续集成平台

文章目录 安装和配置NFSNFS简介NFS安装 在Kubernetes安装Jenkins-Master创建NFS client provisioner安装Jenkins-Master Jenkins与Kubernetes整合实现Jenkins与Kubernetes整合构建Jenkins-Slave自定义镜像 JenkinsKubernetesDocker完成微服务持续集成拉取代码&#xff0c;构建镜…...

PHPStudy 访问网页 403 Forbidden禁止访问

涉及靶场 upload-labd sqli-labs pikachu dvwa 以及所有部署在phpstudy中的靶场 注意&#xff1a;一定要安装解压软件 很多同学解压靶场代码以后访问报错的原因是&#xff1a;电脑上没有解压软件。 这个时候压缩包看起来就是黄色公文包的样子&#xff0c;右键只有“全部提取…...

热爱电子值得做的电子制作实验

加我zkhengyang&#xff0c;进嵌入式音频系统研究开发交流答疑群(课题组) AM/FM收音机散件制作&#xff0c;磁带随声听散件&#xff0c;黑白电视机散件制作&#xff0c;功放散件制作&#xff0c;闪光灯散件制作&#xff0c;声控灯散件&#xff0c;等等&#xff0c;可提高动手能…...

.class文件启动过程以及文件内容结构讲解

当你直接启动一个.class文件时&#xff0c;实际上是在操作系统中调用Java虚拟机&#xff08;JVM&#xff09;&#xff0c;并将该.class文件传递给JVM以执行。现在让我们来解释一下.class文件的启动过程以及文件内容结构&#xff1a; 启动过程&#xff1a;操作系统通过指定的命…...

解锁楼宇自动化新维度西门子Insight+BACnet IP I/O控制器

数字城市的楼宇自动化已不再是一个遥不可及的概念&#xff0c;而是成为了现代建筑的标配。特别是在大型商业综合体、高端写字楼和公共设施中&#xff0c;高效的楼宇管理系统是确保环境舒适度与能源效率的关键。当提及楼宇自动化领域的佼佼者&#xff0c;西门子Insight楼宇自动化…...

2024.05.10作业

TCP服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; …...

基于POSIX标准库的读者-写者问题的简单实现

文章目录 实验要求分析保证读写、写写互斥保证多个读者同时进行读操作读者优先实例代码分析写者优先读写公平法示例代码分析实验要求 创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分别…...

重生我是嵌入式大能之串口调试UART

什么是串口 串口是一种在数据通讯中广泛使用的通讯接口&#xff0c;通常我们叫做UART (通用异步收发传输器Universal Asynchronous Receiver/Transmitter)&#xff0c;其具有数据传输速度稳定、可靠性高、适用范围广等优点。在嵌入式系统中&#xff0c;串口常用于与外部设备进…...

【智能优化算法】蜜獾优化算法(Honey Badger Algorithm,HBA)

蜜獾优化算法(Honey Badger Algorithm,HBA)是期刊“MATHEMATICS AND COMPUTERS IN SIMULATION”&#xff08;IF 3.6&#xff09;的2022年智能优化算法 01.引言 蜜獾优化算法(Honey Badger Algorithm,HBA)受蜜獾智能觅食行为的启发&#xff0c;从数学上发展出一种求解优化问题的…...

【算法与数据结构】数组

文章目录 前言数组数组的定义数组的基本操作增加元素删除元素修改元素查找元素 C STL 中的数组arrayvector Python3 中的列表访问更改元素值遍历列表检查列表中是否存在某元素增加元素删除元素拷贝列表总结 Python3 列表的常用操作 参考资料写在最后 前言 本系列专注更新基本数…...

【数据结构】队列详解(Queue)

文章目录 有关队列的概念队列的结点设计及初始化队列的销毁判空和计数入队操作出队操作 有关队列的概念 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端…...

Baumer工业相机堡盟工业相机如何通过NEOAPISDK获取相机的Statistics图像传输统计信息(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK获取相机的Statistics图像传输统计信息&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK和相机Statistics图像传输统计信息的技术背景Baumer工业相机通过NEOAPISDK获取相机的Statistics图像传输统计信息技术1.引…...

FreeRTOS标准库例程代码

1.设备STM32F103C8T6 2.工程模板 单片机: 部分单片机的程序例程 - Gitee.comhttps://gitee.com/lovefoolnotme/singlechip/tree/master/STM32_FREERTOS/1.%E5%B7%A5%E7%A8%8B%E6%A8%A1%E6%9D%BF 3.代码 1-FreeRTOS移植模板 #include "system.h" #include "…...

wandb: - 0.000 MB of 0.011 MB uploaded持续出现的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

分布式模式让业务更高效、更安全、更稳定

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#x1f525;&#xff1a;探索设计模式的魅力&#xff1a;分布式模…...

5.11学习记录

20长安杯部分 检材 1 的操作系统版本 CentOS Linux 7.6.1810 (Core) 检材 1 中&#xff0c;操作系统的内核版本是 3.10.0-957.el7.x86_64 检材 1 中磁盘包含一个 LVM 逻辑卷&#xff0c;该 LVM 开始的逻辑区块地址&#xff08;LBA&#xff09;是 2099200 物理卷&#xff…...