Node面试题总结最全

说说你对Node.js 的理解?优缺点?应用场景?

Node.js是一个开源与跨平台的Javascript运行时环境,在浏览器外运行v8 Javascript引擎,利用事件驱动,非阻塞和异步输入输出模型等技术提高性能

node.js就是一个服务器端的,非阻塞时I/O的、事件驱动的Javascript运行环境

 非阻塞异步:

nodejs采用非阻塞I/O机制,在做I/O操作的时候不会造成任何的阻塞,当完成之后,以时间的形式通知执行操作

事件驱动:

事件驱动就是当进来一个新的请求时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就会执行该事件对应的处理代码,一般都是回调函数

优缺点: 

优点:

  • 处理高并发场景性能更佳
  • 适合I/O密集型应用,值的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作

因为Nodejs是单线程,带来的缺点有:

  • 不适合CPU密集型应用
  • 只支持单核CPU,不能充分利用CPU
  • 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

应用场景:

 基于nodejs的特点和弊端,分为引用场景和具体场景

应用场景:

善于I/O,不善于计算,因为nodejs是一个单线程,如果计算同步太多,会阻塞这个线程

大量的并发的I/O,应用程序内部并不需要进行非常复杂的处理

具体场景:

用户表单收集系统,后台管理系统、实时交互

单页面浏览器应用程序

操作数据库、为前端和移动端提供基于json的API

说说 Node. js 有哪些全局对象?

在浏览器javascript中,通常window是全局对象,而nodejs中全局对象是global

在nodejs里,是不可能在最外层定义一个用户代码都是在我们当前模块中,只能在当前模块中使用,但是可以使用exports对象将其传递给模块外部

全局对象分为两类:

真正的全局对象

class:Buffer:处理二进制以及非Unicode编码的数据

process:进程对象,提供有关当前进程的信息和控制

clearInterval、setInterval:设置定时器和清理定时器

global:全局命名空间对象

模块级别的全局变量

__dirname:获取当前文件所在的路径,不包括后面的文件名

__filename:获取当前文件所在的路径和文件名称,包括后面的文件名称

exports:module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容

module:对当前模块的引用,通过module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容

require:用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块,可以使用相对路径引入本地模块或JSON文件,路径会根据__dirname定义的目录名或当前工作目录进行处理

说说对 Node 中的 process 的理解?有哪些常用方法?

 process 对象是一个全局变量,提供了有关当前 Node.js进程的信息并对其进行控制,作为一个全局变量

进程计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础,是线程的容器

当我们启动一个js文件,实际上就是开启了一个服务进程,每个进程都拥有自己的独立空间地址,数据栈,像另一个进程无法访问当前进程的变量,数据结构,只有数据通信后,进程之间才可以数据共享

常见属性:

process.cwd():返回当前 Node进程执行的目录

Process.argv:

在终端通过 Node 执行命令的时候,通过 process.argv 可以获取传入的命令行参数,返回值是一个数组:

  • 0: Node 路径(一般用不到,直接忽略)
  • 1: 被执行的 JS 文件路径(一般用不到,直接忽略)
  • 2~n: 真实传入命令的参数

process.env:返回一个对象,存储当前环境相关的所有信息,一般很少直接用到。

process.nextTick(): process.nextTick()就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行

两者区别在于:

  • process.nextTick()会在这一次event loop的call stack清空后(下一次event loop开始前)再调用callback
  • setTimeout()是并不知道什么时候call stack清空的,所以何时调用callback函数是不确定的

 说说对 Node 中的 fs模块的理解? 有哪些常用方法

fs该模块提供本地文件的读写能力ÿ

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值