秋招面试—JS篇

2024 JavaScript面试题

1.new 操作符的工作原理

①.创建一个新的空对象

②.将这个对象的原型设置为函数的 prototype 对象

③.让函数的this指向该对象,为函数添加属性和方法

④.最后返回这个对象

2.什么是DOM,什么是BOM?

DOM:文档对象模型,将整个文档看作一个对象,对象中定义了处理网页内容的方法和接口。

BOM:浏览器对象模型,将浏览器看作一个对象,对象中定义了与浏览器进行交互的方法和接口。

🌰常见DOM操作有哪些?

3.对类数组对象的理解,如何转换为数组

有length和若干索引属性的对象,与数组类似,但是不能调用数组的方法。

①通过 call 调用函数的 slice、splice 方法

Array.prototype.slice.call(arrayLike, 0);
Array.prototype.splice.call(arrayLike);

②通过 apply 调用函数的 concat 方法

Array.prototype.concat.apply([], arrayLike);

③通过 Array.isArray()

Array.from(arrayLike);

🌰arguments 干嘛的?

4.对Ajax的理解,如何实现一个Ajax?

通过XMLHttpRequest对象向服务器发送一个异步请求,从服务器拿到数据之后,通过JS操作DOM节点,达到局部刷新的目的。

①首先创建一个XMLHttpRequest对象。

②.open()方法与服务器建立连接,传递请求方式、服务器地址等参数。

③使用onReadystatechange事件,监听服务器端的通信状态。

④最后使用.send()方法发送数据。

🌰服务器端的通信状态有哪些?

5.JS为什么会使用变量提升?导致了什么问题?

JS变量提升的目的时为了①提高性能 和 ②增加容错性;

使用变量提升会导致,函数内部变量提升函数内部最顶部,覆盖了外层作用域中传递进来的变量。

👨‍💻写一下

6.for…in 和 for…of的区别?🤡

for…in 获取键值,遍历整个原型链,返回数组中所有可枚举对象,性能相对较差;

for…of 获取键名,只遍历对象,返回数组下标对应的属性值。

7.JS有哪些数据类型,区别是什么?

原始数据类型:Undefined、Null、Boolean、Number、String;

引用数据类型:数组、对象、函数。

区别在于存储位置不同,原始数据类型占用空间小,大小不固定,存在栈中;引用数据类型占用空间大,大小固定,存在堆中。

BigInt 是一种内置对象,表示任意大的整数,不能与Number一起用,否则就会造成丢失精度的问题,

0.1+0.2=0.3 为什么是 false?

8.数据类型检测方法有哪些?

typeof

instanceof

constructor

Object.prototype.toString.call()

9.判断数组的方式有哪些?

Object.prototype.toString.call()

_ _ proto _ _

Array.isArray()

instanceof()

Array.prototype.idPrototypeof

10.null 和 undefined 的区别?

undefined 是声明了未定义,unll是空对象;

11.typeof null = object 为什么?

这是一个历史遗留问题,JS数据类型的底层是以二进制形式存在的,二进制前三位为0 , typeof 就会判定为Object类型,而 null 的二进制恰好都为0,所以 typeof 会误判 null 为 objec t类型。

12.Object.is() 与 比较操作符 “=”、“”的区别

双等号(==):表示两边数据类型不相等,会对类型进行强转再进行比较;

三等号(===):表示两边数据类型不相等,直接返回false;

Object.is()与三等号类似,但是做了一些特殊处理,比如 +0 与 -0 不相等,两个NaN是相等的。

13.let、const、var的区别

var 存在提升变量,添加全局属性、重复声明变量、改变指针指向等特点;

const 声明必须设置初始值;

let 可以改变指针方向;

const和let 有块级作用域、存在暂时性死区;

14.对闭包的理解

我的理解,闭包就是函数之间的套娃,内层函数可以访问到外层函数的作用域。

如果不是特定任务需要闭包,其他情况下使用闭包对内存和速度的消耗还是蛮大的!

15.对作用域、作用域链的理解

作用域:函数和变量能够被访问到的区域。包含全局作用域、函数作用域、块级作用域。

作用域链:当需要使用到某个变量的时候,JS就回去当前作用域中查找,如果找不到,就会去上层作用域继续查找,直到找到为止,这个查找的过程就是一个作用域链。

16.对执行上下文的理解

是对JS代码远行环境的抽象概念,只要有js代码远行的地方,就一定运行在执行上下文中。

包含全局执行上下文、函数执行上下文、eval函数执行上下文

17.箭头函数(=>)和普通函数(function)有什么区别

①箭头函数更简洁,没有自己的this,继承来的this指向永远不会改变,call、bind、apply也不能改变this指向;

②箭头函数不能做构造函数、generator函数使用;

③没有自己的arguments、prototype;

18.箭头函数的this指向哪里?

指向最后一次调用它的对象、指向最后一次调用它的对象、指向最后一次调用它的对象

19.对原型、原型链的理解

原型:每个构造函数都有自己的prototype属性,这个属性值是个对象,对象中定义了该函数所有实例共享的属性和方法,这些属性和方法就是原型。

原型链:当需要查找对象的某个属性时,如果对象内部没有这个属性,JS就会去原型对象中查找该属性,直到到达根对象null,找的这个过程就是整个原型链。

20.async 和 await 的理解

async 返回一个Promise对象;

await 返回该对象的结果,如果等待的结果不是一个Promise对象,那么就直接返回表达式的结果;如果等待的结果是一个Promise对象,await就会阻塞代码,等待Promise返回value的值,再做await返回结果。

21.async await 对比Promsie的优势

①代码阅读起来更加简洁,Promise虽然摆脱了回调地狱,但是then的链式调用看起来很臃肿;

②async await 错误处理更加友好,调试更加方便;

22.垃圾回收 与 内存泄露

垃圾回收有引用计数和标记删除两种回收机制

标记删除:变量被声明的时候,就会被加上”存在于上下文“的标记,垃圾回收程序远行的时候,被标记的变量就是待删除变量,随后垃圾回收程序会做一次内存清理,清理所有带标记的变量。

引用计数:变量被引用,引用数+1,变量被覆盖,引用数-1,当变量为0的时候,就会被清理掉回收内存。

23.深克隆和浅克隆

24.防抖(debounce)与节流(throttle)

防止抖动,节省流量,防抖执行最后一次,节流执行第一次触发的事件。

防抖:固定时间后触发该事件,在固定时间内重复触发,就会重新计时。相当于一个弹簧

节流:固定时间内运行一次,在固定时间内重复触发,只执行之后一次。相当于不间断的水滴

image-20240130205828231

一种优化高频率执行代码的手段

防抖(throttle): n秒后再执行某一事件,若n秒内被重复触发,重新计时

const button = document.querySelector('input');
// 每次事件触发要执行的任务
function payMoney(){console.log('点击付款')
}
// 防抖设置
function debounce(){func();
}// 给按钮添加事件监听
button.addEventListener('click',debounce());

引用场景

​ 防抖:百度搜索框,输入猫咪,等待输入完再搜索

​ 节流:

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

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

相关文章

C/C++ - 函数模板

目录 函数模板基础 函数模板定义 函数模板实例 函数模板调用 函数模板本质 模板函数特化 模板参数限定 默认模板参数 多个模板参数 非类型模板参数 函数模板拓展 模板参数匹配规则 函数模板基础 函数模板定义 使用 template <typename T>​​​​​ 或 templ…

ElementUI Form:Input 输入框

ElementUI安装与使用指南 Input 输入框 点击下载learnelementuispringboot项目源码 效果图 el-input.vue &#xff08;Input 输入框&#xff09;页面效果图 项目里el-input.vue代码 <script> export default {name: el_input,data() {return {input: ,input1: ,i…

SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。

使用SOME/IP-SD宣布非SOME/IP协议的协议。 除了SOME/IP之外&#xff0c;车辆内部还使用其他通信协议&#xff0c;例如用于网络管理、诊断或闪存更新。这些通信协议可能需要传递服务实例或具有事件组。 对于非SOME/IP协议&#xff0c;应使用特殊的服务ID&#xff0c;并使用配置…

养猫家庭必备宠物空气净化器吗?性价比猫用空气净化器牌子推荐

家里的可爱猫咪们带来了很多快乐&#xff0c;但是它们的毛发却无处不在&#xff0c;飞舞在整个房间里。而且如果猫砂盆不及时清理&#xff0c;整个屋子都会弥漫着难闻的气味。每天都要清理工作&#xff0c;但是有时候我们也没有那么多精力。虽然享受着猫咪们带来的快乐&#xf…

C# wpf 字体图标预览,html字符与unicode转换

在进行wpf 开发工作过程中遇到字体图标无法预览的问题&#xff0c;特此记录。 1、把需要预览的字体文件上传到网站上进行转换 Create Your Own font-face Kits Font Squirrel2、下载文件后进行解压。 3、找到 Glyph Chart 查看字体html字符编码4、在wpf中直接使用即可 <…

C语言数据结构之二叉树

少年恃险若平地 独倚长剑凌清秋 &#x1f3a5;烟雨长虹&#xff0c;孤鹜齐飞的个人主页 &#x1f525;个人专栏 &#x1f3a5;前期回顾-栈和队列 期待小伙伴们的支持与关注&#xff01;&#xff01;&#xff01; 目录 树的定义与判定 树的定义 树的判定 树的相关概念 树的运用…

AI魔幻巨制《魔戒4》电影宣传片

AI魔幻巨制《魔戒4》电影宣传片 中土世界的命运悬于一线。 争夺魔戒的最终战斗已经开始。 面对无边的黑暗&#xff0c;光明战士将挺身而出。 光明与黑暗在终极对决中碰撞。 英雄崛起&#xff0c;传奇重生。 最后的战斗即将来临。 谁是拯救世界的英雄&#xff1f; 想看哪部…

嵌入式学习第十六天

制作俄罗斯方块小游戏&#xff08;一&#xff09; 分析&#xff1a; printf函数高级用法 \033[&#xff1a;表示转义序列的开始 m&#xff1a;表示转义序列的结束 0&#xff1a;重置所有属性 1&#xff1a;设置粗体或高亮 30-37&#xff1a;设置字体色 30: 黑 31: 红 32:…

MySQL窗口函数--lead()函数

lead()函数&#xff1a; 查询当前行向下偏移n行对应的结果 该函数有三个参数&#xff1a;第一个为待查询的参数列名&#xff0c;第二个为向下偏移的位数&#xff0c;第三个参数为超出最下面边界的默认值。 如下代码&#xff1a; 查询向下偏移 2 位的年龄 SELECT user_id,user…

AI新工具(20240201) 字节推出了国内版的 Coze 扣子;ChatGemini-使用 Google 的生成式 AI 来生成对您的消息的响应

ChatGemini-使用 Google 的生成式 AI 来生成对您的消息的响应 ChatGemini 是一个基于 Google Gemini 的网页客户端&#xff0c;对标 ChatGPT 3.5&#xff0c;使用逻辑同 ChatGPT 3.5 一致&#xff0c;同时支持在聊天中上传图片&#xff0c;自动调用 Gemini-Pro-Vision 模型进行…

python+selenium的web自动化】- 元素的常用操作详解(一)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

旷视low-level系列(二):Practical Deep Raw Image Denoising on Mobile Devices

论文&#xff1a;ECCV 2020 代码&#xff1a;https://github.com/MegEngine/PMRID 文章目录 1. Motivation2. Contribution3. Methods3.1 噪声建模&参数估计3.2 k-Sigma变换3.3 移动端友好的网络结构 4. Experiments5. Comments 1. Motivation 业内周知&#xff0c;基于深…

信息安全管理体系

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 信息安全管理体系&#xff08;Information Security Management Systems&#xff09;是组织在整体或特定范围内建立信息安全方针和目标&#xff0c;以及完成这些目标所用方法的体系。它是直接管理活动的结果&#xff…

力扣经典题:用栈表示队列

1.在元素入栈完成时&#xff0c;再出栈进入到另一个栈的时候&#xff0c;另一个栈的栈顶元素就是队列的队尾元素 2.初始化操作完全与上一题相同 3.peek函数的实现&#xff1a;将1的思路写出来&#xff0c;再返回第二个队列的栈顶元素 4.pop函数就是将peek函数进行实现后将to…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现SPI控制OLED屏幕

上一篇&#xff1a; [嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集 [嵌入式软件][启蒙篇][仿真平台]STM32F103实现定时器 [嵌入式软件][启蒙篇][仿真平台] STM32F103实现IIC控制OLED屏幕 文章目…

HIS预约挂号系统源码 看病挂号快人一步

提到去大型医院机构就诊时&#xff0c;许多人都感到恐惧。有些人一旦走进医院的门诊大厅&#xff0c;就感到迷茫&#xff0c;既无法理解导医台医生的建议&#xff0c;也找不到应该去哪个科室进行检查。实际上&#xff0c;就医也是一门学问&#xff0c;如何优化时间分配&#xf…

AIGC专题:从0到1精益创新 AIGC产品应用及商业化落地实践

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题&#xff1a;从0到1精益创新 AIGC产品应用及商业化落地实践》。 &#xff08;报告出品方&#xff1a;易点天下&#xff09; 报告共计&#xff1a;38页 企业内部增效-AI知识库 企业内部IT、运维、人力资源、行政等等日…

都 2024 年了!程序员的到底出路在哪里!?继续卷技术?晋升管理层?还是转业?

都 2024 年了&#xff01;程序员的到底出路在哪里&#xff01;&#xff1f;继续卷技术&#xff1f;晋升管理层&#xff1f;还是转业&#xff1f; 1&#xff09;程序员的难处2&#xff09;程序员专业方向3&#xff09;大数据3.1.大数据开发涉及到哪些技术3.2.大数据开发涉及到的…

C语言assert断言详解指针(3)

各位少年&#xff0c;大家好&#xff0c;我是博主那一脸阳光&#xff0c;今天分享assert法官的断言&#xff0c;指针宝箱的使用。 前言&#xff1a;如果你在计算机的世界中触犯了语法法规&#xff0c;那么编译器就要上线了&#xff0c;就会出现报错。然而想想我们在现实中设计到…

仰暮计划|“一周一顿的玉米面和白面蒸的糕点,是当时所能吃到的极好的食物”

平淡又记忆深刻的一生 口述人&#xff1a;元奶奶 整理人&#xff1a;宋佳音 口述人基本信息&#xff1a;女 出生于1958年&#xff0c;今年65周岁&#xff0c;祖籍东北&#xff0c;现定居于上海&#xff0c;已从制药厂退休十余年。 元奶奶的自述&#xff1a; 我出生于1958年…