Node面试题(21级期末考试版)

  • setTimeout和setIntercal区别?

使用setTimeout()开启的定时器,时间间隔一到代码只会执行一次。
使用setInterval()开启的定时器,时间一到代码就会执行。
  • 相等(==)和全等(===)运算符?

相等运算符用于比较两个操作数是否相等,操作数会进行类型转换。
全等运算符用于比较两个数是否严格相等,操作数不会进行类型转换。
  • JS事件流三阶段?

事件捕捉阶段:事件开始由顶层对象触发,然后逐级向下传播,直到目标元素。(从上到下)
处于目标阶段:处在绑定事件的元素上。
事件冒泡阶段:事件由具体的元素先接收,然后逐级向上传播,直到不具体的元素。(从下到上)
  • JS中的break、continue、return关键字区别?

break:立即结束语句,并跳出语句,进行下个语句执行。
continue:停止当前语句,并从头执行该语句。
return:停止函数。
*使用的语句环境不一样,break和continue是用在循环或switch语句中,return使用在函数语句中。
  • JavaScript数据类型?

JavaScript共有八种数据类型,分别是:underfined、null、boolean、number、string、object、sysbol、bigint。
这些数据类型分为原始数据类型和引用数据类型。
  • 基本数据类型和引用数据类型区别?

在方法中定义的非全局基本数据类型的具体内容是存储在栈中的。
引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是具体内容所在的内存地址。
  • JavaScript中的栈堆?

JS中有5中基本类型:Undefined、Null、Boolean、Number和String,基本类型在内存中占据空间小、大小固定,他们的值保存在栈(stack)空间。
引用类型(对象、数组、函数),引用类型占据空间大、大小不固定,栈内存中存放地址指向堆(heap)内存中的对象。
  • 字符串方法?

str.indexOf('xxx'):判断一个字符串在不在某个字符串里面。
str.substr(a,b):截取字符串(第一个参数:从哪个下标开始截取;第二个参数:截取的长度。)
str.replace('xx','xx'):修改字符串(第一个参数:要修改的字符串;第二个参数:修改后的字符串。)
str.split:分隔字符串。
'STR'.toLowerCase():转化为小写。
'str'.toUpperCase():转化为大写。
  • JSON?

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
要实现JSON字符串转换为JS对象,使用JSON.parse()方法。
要实现JS对象转换为JSON字符串,使用JSON.stringify()方法。
  • JS数组中的常见方法?

push:把新元素添加到数组的最后一个元素。
pop:删除数组最后一个元素。
unshift:把新元素添加到数组的第一个元素。
shift:删除数组第一个元素。
splice:删除指定个数元素,arrayObject.splice(index,howmany,item1,.....,itemX)。
slice:按照条件查找出其中的部分内容。
join:用指定的分隔符将数组每一项拼接为字符串。
concat:用于连接两个或多个数组。
indexOf:array.indexOf(item,start),检测当前值在数组中第一次出现的位置索引。
lastIndexOf:array.lastIndexOf(item,start),检测当前值在数组中最后一次出现的位置索引。
includes:判断一个数组是否包含一个指定的值。
sort:对数组的元素进行排序。
reverse:把数组倒过来排列。
forEach:循环遍历数组每一项。
  • 高阶函数?

高阶函数是对其他函数进行操作的函数,它接受函数作为参数或将函数作为返回值输出。
every、some、forEach、map、filter都是高阶函数。
  • 数组迭代方法?

forEach():对数组中的每一项运行给定的函数,此方法无返回值。
map():对数组中的每一项执行给定的函数,返回函数执行结果组成的新数组,不影响原数组。
filter():对数组中的每一项执行给定函数,返回函数执行结果为true构成的新数组,不影响原数组。
every():对数组每一项执行给定函数,如果函数执行结果都为true,则返回true,否则返回false。
some():对数组每一项执行给定函数,如果有一项执行函数结果为true,则返回true。
find():方法返回通过测试(函数内判断)的数组的第一个元素的值。
  • forEach和map方法区别?

forEach()方法不会返回执行结果,也就是说forEach()方法会修改原来的数组,但是没有返回值。
map()方法得到一个新的数组,是map方法修改数组后返回回来的新的数组。
  • 闭包?

闭包(closure)是一种代码形式,内部函数访问外部函数的局部变量。
在JS中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接起来的一座桥梁。
举例:JS函数A里面有一个函数B,函数B访问了函数A里面定义的局部变量,此时就产生了闭包。变量所在的函数就是闭包函数,这里A就是闭包函数。
  • Math对象

Math.PI:圆周率
Math.abs():绝对值
Math.max()/Math.min():最大值/最小值
Math.pow(x,y):求x的y次方
Math.random():0-1随机小数
Math.ceil()/Math.floor:向上取整/向下取整
Math.round():四舍五入
  • localStorage和sessionStorage区别?

localStorage:没有过期时间。
sessionStorge:当用户关闭浏览器后,数据将被删除。
  • 内置模块fs

node提供了一个内置模块fs,专门用来操作文件。可以读取一个文件的内容,也可以把内容写入到一个文件。
导入模块:require('模块名')
读取文件:fs.readFile('文件的路径',(err,data) => { } )
写入文件:fs.writeFile('文件的路径',写入的内容,err => { } )
追加文件内容:fs.appendFile('路径','要追加的内容',err => { } )
拷贝文件:fs.copyFile('要拷贝的文件路径','目标文件的路径')
删除文件:fs.unlink('文件路径',err => { } )
  • ES6新特性?

let和const、模块化、箭头函数、解构赋值、模板字符串、Promise、Map和Set数据结构、装饰器...
  • let、const、var区别?

var声明变量存在变量提升,let和const不存在变量提升。
同一作用域下let和const不能声明同名变量,而var可以。
  • 箭头函数和普通函数的区别?

外形不同:箭头函数使用箭头定义,普通函数中没有。
箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数。
箭头函数中 this 的指向不同:在普通函数中,this 总是指向调用它的对象,如果用作构造函数,它指向创建的对象实例。
  • 数据结构Set?

它类似于数组,但是成员的值都是唯一的,没有重复的值。
  • Promise?

目的:解决异步编程中回调地狱的问题,将异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。
用法:调用promise.then()方法,then方法可以接受两个回调函数函数作为参数。成功,就会执行.then方法的第一个回调函数。失败,就会执行then方法的第二个回调函数。
  • 同步和异步?

同步指两个进程的运行是相关的,一个进程要阻塞等待另一个进程的运行。
异步的意思是两个进程毫无相关。发送完一个请求,不必等待返回。
  • 异步编程的实现形式?

回调函数的方法。
Promise对象。
async/await函数。
  • 常见请求方法?

GET:请求指定的页面信息,并返回实体主体。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立/或已有资源的修改。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
OPTIONS:用于查询服务器针对特定资源所支持的HTTP请求方式,即询问客户端可以以那些方式来请求相应的资源,同时使用OPTIONS方式也可以用来测试服务器的性能。在发出复杂请求之前,就会出现一次OPTIONS请求。
  • HTTP5类状态码?

1XX:信息,服务器收到请求,需要请求者继续执行操作。
2XX:成功,操作被成功接收并处理。常见的是200,代表请求成功。
3XX:重定向,表示需要进一步的操作以完成请求。
4XX:客户端错误,请求包含语法错误或无法完成请求。
5XX:服务端错误,服务器在请求处理的过程中发生了错误。
  • 请求方式GET和POST的区别?

语义不同,GET是获取数据,POST是提交数据。
HTTP规定GET比POST安全,因为GET只做读取,不会改变服务器中的数据。、
GET请求会把附加参数带在URL上,而POST请求会把提交数据放在报文内。在浏览器中,URL长度会被限制,所以GET请求能传递的数据有限。
  • 从输入URL到页面加载发送了什么?

1.用户在地址栏输入URL后,浏览器会在缓存中寻找是否有该url的ip缓存,没有则会向服务器发送DNS请求查询IP地址。
2.获取IP地址后向服务器发起TCP链接,其中会经过3次握手环节。
3.建立通信后向服务器发起HTTP请求。
4.服务器收到请求后返回请求结果。
5.浏览器根据结果开始解析并渲染页面。
6.关闭链接。
  • 对AJAX的理解?实现一个AJAX请求?

AJAX全称(Async JavaScript and XML),即异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页。
Ajax 的使用步骤:
1新建一个 XMLHttpRequest 对象 let xhr = new XMLHttpRequest()
2使用 open 和 send 方法发送请求 xhr.open(url:xxx,methods:xxx) xhr.send()
3·使用 onload 注册回调 ,xhr.οnlοad=function(){}
4·根据服务器返回的结果做响应的处理 xhr.responseText
  • MVVM模式?

MVVM是Model-View-ViewModel的缩写。
Model层代表数据模型,View代表UI组件,ViewModel是View和Model层连接的桥梁。
数据会绑定到viewModel层并自动将数据渲染到页面中,视图变化的时候会通知viewModel层更新数据,数据变化后也会通知视图。

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微微vanilla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值