每天10个js面试题(六)

news2024/10/17 13:28:56

1、js数组方法?

  • Array.push()此方法是在数组的后面添加新加元素,此方法改变了数组的长度
  • Array.pop()此方法在数组后面删除最后一个元素,并返回数组,此方法改变了数组的长度
  •  Array.shift()此方法在数组后面删除第一个元素,并返回数组,此方法改变了数组的长度
  • Array.unshift()此方法是将一个或多个元素添加到数组的开头,并返回新数组的长度
  • Array.isArray()判断一个对象是不是数组,返回的是布尔值
  • Array.concat()此方法是一个可以将多个数组拼接成一个数组
  • Array.toString()把数组作为字符串返回
  • Array.join()以指定字符拼接成字符串,然后返回
  • Array.splice(开始位置, 删除的个数,元素)
  • Array.map()此方法是将数组中的每个元素调用一个提供的函数,结果作为一个新的数组返回,并没有改变原来的数组
  • Array.forEach()此方法是将数组中的每个元素执行传进提供的函数,没有返回值,直接改变原数组,注意和 map 方法区分
  • Array.filter()此方法是将所有元素进行判断,将满足条件的元素作为一个新的数组返回
  • Array.every()此方法是将所有元素进行判断返回一个布尔值,如果所有元素都满足判断条件,则返回 true,否则为 false:
  • Array.some()此方法是将所有元素进行判断返回一个布尔值,如果存在元素都满足判断条件,则返回 true,若所有元素都不满足判断条件,则返回 false:
  • Array.reduce()此方法是所有元素调用返回函数,返回值为最后结果,传入的值必须是函数类型

2、js字符串方法?

  • trim(): 去首尾空格
  • split(sep,limit):将字符串分割为字符数组,limit 为从头开始执行分割的最大数量
  • indexOf(str):返回 str 在父串中第一次出现的位置,若没有则返回-1
  • lastIndexOf(str):返回 str 在父串中最后一次出现的位置,若没有则返回-1
  • substr(start,length):从字符索引 start 的位置开始,返回长度为 length 的子串
  • substring(from,to):返回字符索引在 from 和 to(不含)之间的子串
  • slice(start,end):返回字符索引在 start 和 end(不含)之间的子串
  • toLowerCase():将字符串转换为小写
  • toUpperCase():将字符串转换为大写
  • replace(str1,str2):str1 也可以为正则表达式,用 str2 替换 str1
  • concat(str1,str2,...):连接多个字符串,返回连接后的字符串的副本
  • match(regex):搜索字符串,并返回正则表达式的所有匹配
  • charAt(index):返回指定索引处的字符串
  • charCodeAt(index):返回指定索引处的字符的 Unicode 的值
  • fromCharCode():将 Unicode 值转换成实际的字符串
  • search(regex):基于正则表达式搜索字符串,并返回第一个匹配的位置
  • valueOf():返回原始字符串值

3、js new操作符具体做了什么?

  • 在内存创建一个新对象
  • 把构造函数中this指向新建的对象
  • 会在新对象上添加一个__proto__属性,指向函数的原型对象prototype
  • 判断函数返回值,如果值是引用类型就直接返回值;否则返回this(创建的新对象)

4、js 深浅拷贝区别?

  • 浅拷贝的话,如果属性是基本类型,拷贝的就是基本类型的值。如果属性是引用类型,拷贝的就是内存地址。就是浅拷贝是拷贝一层,深层次的引用类型就是共享内存地址。
  • 深拷贝除了拷贝基本类型的值,还完全复刻了对象类型。就是开辟一个新的栈,两个对象属完成相同,但是对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。
  • 浅拷贝方法:Object.assign、Array.prototype.slice(), Array.prototype.concat()和 拓展运算符实现的复制
  • 深拷贝方法:最常用的就是JSON.stringify(),还有就是JQuery的jQuery.extend(),再就是lodash的_.cloneDeep(),或者手写循环递归了

5、js同步异步区别?

  • 同步: 下面代码会等待上面 同步代码执行完毕
  • 异步: 下面代码不会等待上面异步代码执行完毕
  • 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,
  • 新内容出现,用户看到新内容,进行下一步操作
  • 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。
  • 等请求完,页面不刷新,新内容也会出现,用户看到新内容

6、js为什么 JS 是单线程,  而不是多线程?

  • 单线程是指 JavaScript 在执行的时候,有且只有一个主线程来处理所有的任务。
  • 目的是为了实现与浏览器交互。
  • 我们设想一下,如果 JavaScript 是多线程的,现在我们在浏览器中同时操作一个
  • DOM,一个线程要求浏览器在这个 DOM 中添加节点,
  • 而另一个线程却要求浏览器删掉这个 DOM 节点,
  • 那这个时候浏览器就会很郁闷,他不知道应该以哪个线程为准。
  • 所以为了避免此类现象的发生,降低复杂度,JavaScript
  • 选择只用一个主线程来执行代码,以此来保证程序执行的一致性。

7、js严格模式的使用与作用?

  • 在代码前面使用"use strict"就可以开启严格模式;
  •     作用:
  • 消除 Javascript 语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的 Javascript 做好铺垫。
  •     特点:
  • 变量必须要通过修饰符进行声明
  • 函数的参数不能有同名属性,否则报错
  • 禁止 this 指向全局对象
  • 增加了保留字(比如 protected 、 static 和 interface )
  • 不能删除变量 delete prop

8、js线程与进程的区别?

  • 一个程序至少有一个进程, 一个进程至少有一个线程。
  • 线程的划分尺度小于进程,使得多线程程序的并发性高。
  • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
  • 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,
  • 由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

9、Promise.all() 原理?

  • Promise.all() 是一个内置的辅助函数,它接收一个包含多个 Promise 的可迭代对象作为参数,并返回一个新的 Promise。
  • 这个新的 Promise 在传入的所有 Promise 都成功解决时才会成功解决,并将所有 Promise 的解决值按顺序组成的数组作为结果;
  • 如果任何一个 Promise 被拒绝,则返回的 Promise 会立即被拒绝,并传递第一个被拒绝 Promise 的拒绝原因。

10、Promise.all()实现根据传入url顺序, 返回按序结果?

  • 用参数数组下标用来保证按序存储,循环的时候用变量记录和保证获取到了想要的所有数据,就比如说定义一个count循环的时候count++,起一个计数的作用,
  • 确保所有传入的 Promise 都被成功处理后,才会触发 resolve(res),解决返回的 Promise。这样可以保证返回的 Promise 在所有传入的 Promise 都完成后才会被解决,返回结果数组中的顺序也与传入的 Promise 数组保持一致。

      

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

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

相关文章

哪吒汽车的工资到底发没发?

联网圈第一预言家,也就是美团的王兴,早在新能源热钱最多的那几年就预言,未来中国汽车格局大概率是「3333」。 也就是3家央企、3家地方国企、3家民企和3家新势力…… 此言论一出,当时可以说惹急了很多车企,比如已经退…

Leetcode—1115. 交替打印 FooBar【中等】(多线程)

2024每日刷题(180) Leetcode—1115. 交替打印 FooBar C实现代码 class FooBar { private:int n;sem_t fooSem;sem_t barSem;public:FooBar(int n) {this->n n;sem_init(&fooSem, 0, 1);sem_init(&barSem, 0, 0);}~FooBar() {sem_destroy(&…

ARINC 429总线协议

一、概述 ARINC 是美国航空无线电公司英文字头的缩写, 该公司1977年7月21日出版了“ARINC 429规范”一书,429规范就是飞机电子系统之间数字式数据传输的标准格式,在飞机上使用429总线的电子设备均应遵守这个规范,这样才能保证电子…

Debug-029-el-table实现自动滚动分批请求数据

前情提要 最近做了一个小优化,还是关于展示大屏方面的。大屏中使用el-table展示列表数据,最初的方案是将数据全部返回,确实随着数据变多有性能问题,有时请求时间比较长。这里做的优化就是实现列表的滚动到距离底部一定高度时再次请…

如何处理多频段时序特征?这个Transformer变体显著提升预测效果

Transformer 模型已在时间序列预测中展现了卓越的性能。然而,在一些复杂场景中,它倾向于学习数据中的低频特征,而忽略了高频特征,表现出一种频率偏差。这种偏差阻碍了模型准确捕捉重要的高频数据特征。 本文介绍一篇来自 KDD 202…

菜鸟笔记006 截图识别文字插件 textOCR

随手可得的截图识别文字插件 textOCR,识别出来的文字可直接输入到illustrator的当前文档中: 执行条件 1、需截图软件支持,推荐笔记截图工具 2、截好图片直接拖入面板即可完成识别 ****后期可完成实现在illustrator选择图片对象完成文字识别。…

Docker-Harbor概述及构建

文章目录 一、Docker Harbor概述1.Harbor的特性2.Harbor的构成 二、搭建本地私有仓库三、部署 Docker-Harbor 服务四、在其他客户端上传镜像五、维护管理Harbor 一、Docker Harbor概述 Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅…

方波信号发生器(完整SCL源代码)

正弦和余弦信号发生器请参考下面文章链接: 1、博途PLC平台 PLC信号发生器(博途SCL)_博图软件波形发生器怎么用-CSDN博客文章浏览阅读1.1k次。本文介绍了如何使用博途SCL编程实现不同周期和幅值的信号发生器,包括余弦和正弦信号。通过信号发生器,可以用于验证PLC的滤波器效…

cesium模型加载

注意cesium版本&#xff1a; "three": "^0.168.0", 代码&#xff1a; <template><Layout :bg-color"black"><template #content><div id"cesiumContainers"><div id"cesiumContainer" class&q…

【C++】——二叉搜索树

目录 一、前言 二、二叉搜索树 2.1概念 2.2二叉搜索树操作 2.2.1 二叉树的查找 2.2.2 二叉搜索树的插入 2.2.3 二叉搜索树的删除 ​编辑 2.3二叉搜索树的实现 2.3.1查找 2.3.2 插入 2.3.3 删除 2.3.4 打印 2.3.5 拷贝构造和赋值重载 2.3.6 析构函数 2.4 二叉搜索…

智能去毛刺:2D视觉引导机器人如何重塑制造业未来

机器人技术已经深入到各个工业领域中&#xff0c;为制造业带来了前所未有的变革。其中&#xff0c;2D视觉引导机器人技术以其精准、高效的特点&#xff0c;在去毛刺工艺中发挥着越来越重要的作用。本文将为您介绍2D视觉引导机器人技术的基本原理及其在去毛刺工艺中的应用&#…

c++初阶数据结构速成

温馨提示&#xff1a;本篇文章只给大家介绍初阶数据结构的一些常用接口 stl的简单介绍 什么是stl? STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的 组件库&#xff0c;而且是一个包罗数据结构与算法的软件框…

Redis 哨兵模式下DB库操作审计

Redis Sentinel集群环境 主机版本模式NodeSentinelredis-sentinel-node-06.2.12哨兵MasterYesredis-sentinel-node-16.2.12哨兵SlaveYesredis-sentinel-node-26.2.12哨兵SlaveYes 架构设计 命令行&程序验证 1、在redis-sentinel-node-1上使用redis-cli 连接redis-sentine…

2024台州赛CTFwp

备注&#xff1a; 解题过程中&#xff0c;关键步骤不可省略&#xff0c;不可含糊其辞、一笔带过。解题过程中如是自己编写的脚本&#xff0c;不可省略&#xff0c;不可截图&#xff08;代码字体可以调小&#xff1b;而如果代码太长&#xff0c;则贴关键代码函数&#xff09;。…

开放式蓝牙耳机哪个品牌好用?开放式耳机排行榜测评!

开放式耳机&#xff0c;因其特殊的不入耳佩戴模式&#xff0c;让使用者在享受音乐或者进行通话的过程中&#xff0c;依然可以对外界声音保持敏感。在户外运动场景下&#xff0c;这种特性优势尽显&#xff0c;既保证了耳机佩戴的稳定和舒适&#xff0c;又提高了运动的安全性。为…

Netty结构

Netty结构 引导器Bootstrap举例&#xff1a;一个简单的HTTP服务器服务端启动类服务端业务逻辑处理类 二级目录Channel初始化&#xff08;设置Channel类型&#xff09;注册ChannelHandler结合HTTP请求-响应&#xff0c;分析数据在ChannelPipeline中的流向 设置Channel参数端口绑…

java互联网医院智能导诊系统源码,Uniapp前端开发框架,支持一次编写,多端运行

智慧导诊系统源码&#xff0c;java源码&#xff0c;大屏机自动导诊&#xff0c;互联网医院智能导诊系统源码 老是全身无力&#xff0c;挂什么科&#xff1f; 经常头痛&#xff0c;挂什么科&#xff1f; 总是失眠&#xff0c;又得挂哪个科&#xff1f; 世界上最遥远的距离再加…

初识git · 多人协作

目录 前言&#xff1a; 多人协作一 多人协作二 前言&#xff1a; git从发布以来&#xff0c;强大的功能有版本回退以及分支管理&#xff0c;那么分支管理用来不仅是为了维护master的&#xff0c;更多的是多人协作的一种代表&#xff0c;所以多人协作这一章节&#xff0c;基…

2010年国赛高教杯数学建模C题输油管的布置解题全过程文档及程序

2010年国赛高教杯数学建模 C题 输油管的布置 某油田计划在铁路线一侧建造两家炼油厂&#xff0c;同时在铁路线上增建一个车站&#xff0c;用来运送成品油。由于这种模式具有一定的普遍性&#xff0c;油田设计院希望建立管线建设费用最省的一般数学模型与方法。   1. 针对两炼…