node面试知识

简介: node面试知识

01node和浏览器有什么区别和联系,及node进行服务端开发的本质

Node.js和浏览器在JavaScript运行环境方面存在一些区别和联系。


区别:


运行环境:Node.js是一个服务器端JavaScript运行环境,而浏览器是一个客户端JavaScript运行环境。

内置对象和this的指向:Node.js中全局对象为global,而浏览器中全局对象为window。在Node.js中,this默认指向空对象{},而在浏览器中,全局this默认指向window。

JS引擎:Node.js基于Chrome的V8引擎,对V8引擎进行了封装和优化,使其在非浏览器环境下运行得更好。而浏览器使用各自的JS引擎进行解析和执行,存在兼容性问题。

API和模块加载:Node.js中提供了很多浏览器中没有的API,如文件操作、网络请求等。此外,Node.js支持CommonJS模块标准,使用require()导入模块,而浏览器使用ES模块化标准,使用import方式导入模块。

联系:


都是JavaScript的运行环境:无论是Node.js还是浏览器,都是JavaScript的运行环境,都能解析和执行JavaScript代码。

ECMAScript语法通用:对于ECMAScript语法来说,在Node.js和浏览器中都能运行。

互补性:浏览器主要用于前端开发,提供DOM和BOM等API进行页面操作和用户交互;而Node.js主要用于后端开发,提供文件操作、网络请求等API进行服务器操作。两者可以相互配合,实现全栈开发。本质:

Node.js进行服务端开发的本质在于它是一个基于Google的V8引擎的JavaScript运行环境,专为非阻塞I/O模型设计。这使得Node.js在处理高并发请求时表现优异,能够轻松地处理大量并发连接。


具体来说,Node.js采用事件驱动和非阻塞I/O模型,这意味着它可以在单线程中处理多个请求,而不会像传统的多线程模型那样因为线程切换和锁定而消耗大量资源。这种模型非常适合处理大量并发连接,如Web服务器或实时聊天应用等。


此外,Node.js还提供了丰富的API和模块,使得开发者可以轻松地实现文件操作、网络请求、数据库连接等功能。这些功能在传统的服务器端开发中通常需要借助其他语言或框架才能实现,而Node.js则将它们集成到了JavaScript中,使得开发者可以使用同一种语言进行全栈开发。


总的来说,Node.js进行服务端开发的本质在于它利用JavaScript的轻量级和灵活性,结合事件驱动和非阻塞I/O模型,提供了一种高效、简单、易于扩展的服务器端开发方案。


02什么是文件系统,为什么node需要文件系统,fs有哪些常见的操作

文件系统是操作系统中负责管理和存储文件信息的软件机构,它定义了存储设备(如磁盘、固态硬盘等)或分区上的文件组织方式。文件系统的主要功能包括为用户建立文件、存储、读取、修改、转储文件,控制文件的存取,以及当文件不再使用时撤销文件等。


在Node.js中,文件系统(fs)模块是非常重要的,因为它允许Node.js与服务器上的文件系统进行交互。Node.js通过fs模块提供的API,可以对服务器上的文件进行创建、读取、写入、删除等操作。这对于构建如Web服务器、文件上传/下载服务、日志记录系统等应用是非常关键的。


fs模块提供了一系列常见的文件操作函数,以下是一些常见的操作:


fs.readFile(filename, [encoding], [callback(err, data)]):读取文件内容。参数包括文件名、文件编码(可选)以及回调函数。回调函数接收两个参数,一个是错误对象(如果有错误发生),另一个是文件内容。

fs.writeFile(filename, data, [options], [callback(err)]):写入文件内容。参数包括文件名、要写入的数据、写入选项(可选)以及回调函数。回调函数接收一个错误对象(如果有错误发生)。

fs.appendFile(filename, data, [options], [callback(err)]):追加数据到文件。如果文件不存在,则会创建该文件。

fs.unlink(path, [callback(err)]):删除文件。

fs.mkdir(dir, [options], [callback(err)]):创建目录。

fs.rmdir(dir, [options], [callback(err)]):删除目录。

fs.readdir(path, [options], [callback(err, files)]):读取目录的内容。回调函数接收两个参数,一个是错误对象(如果有错误发生),另一个是目录中的文件数组。

这些只是fs模块提供的一部分操作,实际上fs模块还提供了更多高级和底层的文件操作函数,以满足不同的需求。


03Node中事件模型如何使用,有哪些常见的操作

在Node.js中,事件模型是基于观察者模式实现的,允许你定义事件并在特定情况下触发这些事件。这种模型特别适用于处理异步操作,如I/O操作或定时器。


Node.js的事件模型主要使用EventEmitter类来实现。EventEmitter提供了几个关键的方法,允许你注册事件监听器、触发事件以及移除事件监听器。


以下是EventEmitter的常见操作:


注册事件监听器:


on(eventName, listener): 注册一个事件监听器,当指定的事件被触发时,会调用监听器函数。

addListener(eventName, listener): 与on方法功能相同,用于注册事件监听器。

示例:


javascript复制代码


const EventEmitter = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('someEvent', function() {
console.log('someEvent has occurred!');
});
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/kjl536566/article/details/136469093

触发事件

  • emit(eventName, [...args]): 触发指定的事件,并传递任意数量的参数给事件监听器。

示例:

javascript复制代码

myEmitter.emit('someEvent'); // 输出: "someEvent has occurred!"

移除事件监听器

  • removeListener(eventName, listener): 移除指定事件的某个监听器。
  • off(eventName, listener): 与removeListener方法功能相同,用于移除事件监听器。
  • 示例:


javascript复制代码

const listener = function() {
console.log('someEvent has occurred!');
};
myEmitter.on('someEvent', listener);
myEmitter.emit('someEvent'); // 输出: "someEvent has occurred!"
myEmitter.removeListener('someEvent', listener);
myEmitter.emit('someEvent'); // 不输出任何内容
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/kjl536566/article/details/136469093

一次性监听器

  • once(eventName, listener): 注册一个只触发一次的事件监听器。

示例:

目录
相关文章
|
7月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
JavaScript 前端开发
浏览器中的事件循环和Node.js中事件循环的区别(经典面试题)
浏览器中的事件循环和Node.js中事件循环的区别(经典面试题)
1051 0
|
前端开发
热点面试题:浏览器和Node的宏任务和微任务?
热点面试题:浏览器和Node的宏任务和微任务?
182 0
node笔记记录52两道面试题之面试题1之3四次挥手
node笔记记录52两道面试题之面试题1之3四次挥手
76 0
node笔记记录52两道面试题之面试题1之3四次挥手
node笔记记录52两道面试题之面试题1之1
node笔记记录52两道面试题之面试题1之1
83 0
node笔记记录52两道面试题之面试题1之1
node笔记记录52两道面试题之面试题1之2
node笔记记录52两道面试题之面试题1之2
112 0
node笔记记录52两道面试题之面试题1之2
|
3月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
2月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
1192 24
|
3月前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
101 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
|
3月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!

热门文章

最新文章