精华内容
下载资源
问答
  • 关于nodejs面试题详解

    千次阅读 2021-03-19 09:04:32
    nodejs的一个经典面试题 this.d = 4; exports.c = 3; module.exports = { a: 1, b: 2 } //module.exports.a = 1 //module.exports.b = 2 const a = require('./a.js') console.log(a); 这里执行的结果是: 。...

    nodejs的一个经典面试题

    this.d = 4;
    exports.c = 3;
    module.exports = {
         a: 1,
         b: 2
     }
    //module.exports.a = 1
    //module.exports.b = 2
    
    
    const a = require('./a.js')
    console.log(a);
    

    这里执行的结果是:
    在这里插入图片描述

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    this.d = 4;
    exports.c = 3;
    //module.exports = {
    //     a: 1,
    //     b: 2
    // }
    module.exports.a = 1
    module.exports.b = 2
    
    const a = require('./a.js')
    console.log(a);
    

    这里执行的结果是:
    在这里插入图片描述
    这里仅仅只是两个的输出方式不一样就导致了不一样的结果,其原因是有关node的底层代码:
    因为require执行的时候会经过以下几个步骤:
    注意以下代码都是理论代码不能执行,只是用作分析
    1.调用了resolve方法拼接成了一个绝对路径

    
    function require(modulePath){//模块路径
    	
    }
    

    2.在cache部分判断该模块是否有缓存。cache是require函数的缓存区

    	if(require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]){
    		return require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]
    	}	
    

    3.读取目标文件内容
    4.包裹到一个函数中去

    
    function require(modulePath){//模块路径
    	if(require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]){
    		return require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]
    	}	
    	function _temp(module,exports,require,__dirname,__filename){
    	//在require目标对象的所有代码都在这个内部函数执行
    		this.d = 4;
    		exports.c = 3;
    		module.exports = {
    			a : 1,
    			b : 2
    		}
    	}
    }
    	
    

    5.创建module.exports对象(重点)

    function require(modulePath){//模块路径
    	if(require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]){
    		return require.cache["C:\\Users\\admin\\Desktop\\0315nodejs\\04.js"]
    	}	
    	function _temp(module,exports,require,__dirname,__filename){
    	//在require目标对象的所有代码都在这个内部函数执行
    		this.d = 4;
    		exports.c = 3;
    		module.exports = {
    			a : 1,
    			b : 2
    		}
    	}
    	// 5.创建module.exports对象
    		module.exports = {}
    		const exports = module.exports
    		_temp.call(module.exports,exports,require,__dirname,__filename)
    	
    		return module.exports;
    }
    

    在执行内部函数_temp的时候它会通过call来改变this的指向将其指向module.exports同时创建module.exports对象,然后创建exports同时把module.exports赋值exports也就是说现在this、module.exports、exports其实是一个东西:

    console.log(module.exports === exports)//true
    console.log(module.exports === this)//true
    

    最后返回module.exports;

    所以说

    this.d = 4;
    exports.c = 3;
    module.exports.a = 1
    module.exports.b = 2
    

    输出{d:4, c:3, a:1, b:2}是因为它们都在往module.exports里加东西;

    但是

    this.d = 4;
    exports.c = 3;
    module.exports = {
         a: 1,
         b: 2
     }
    

    这里就有问题了一开始本来就创建了个module.exports的空对象,现在有赋值了一个新的对象。这就导致了module.exports指向了一个新的地址
    这里我画个图来表示
    第一种情况:
    在这里插入图片描述
    第二种情况:
    在这里插入图片描述
    而require函数返回的是module.exports自然也就输出的是{a:1,b:2}了

    展开全文
  • nodejs面试

    万次阅读 2019-06-21 10:39:30
    1、为什么用Nodejs,它有哪些缺点? 事件驱动,通过闭包很容易实现客户端的生命活期。 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 当然Nodejs也有...

    有什么问题可以加微信问吧 cannywill ,尽量帮助, 一起进步

    1、为什么用Nodejs,它有哪些缺点?

    • 事件驱动,通过闭包很容易实现客户端的生命活期。
    • 不用担心多线程,锁,并行计算的问题
    • V8引擎速度非常快
    • 对于游戏来说,写一遍游戏逻辑代码,前端后端通用

    当然Nodejs也有一些缺点:

    • nodejs更新很快,可能会出现版本兼容
    • nodejs还不算成熟,还没有大制作
    • nodejs不像其他的服务器,对于不同的链接,不支持进程和线程操作

    2、什么是错误优先的回调函数?

    • 错误优先(Error-first)的回调函数(Error-First Callback)用于同时返回错误和数据。第一个参数返回错误,并且验证它是否出错;其他参数返回数据。

        fs.readFile(filePath, function(err, data)
      
        {
      
            if (err)
      
            {
      
                // 处理错误
      
                return console.log(err);
      
            }
      
            console.log(data);
      
        });

    3、如何避免回调地狱?

    以下方式避免回调地狱

    • 模块化:将回调函数转换为独立的函数
    • 使用流程控制库,例如[aync]
    • 使用Promise
    • 使用aync/await

    4、什么是Promise?

    • Promise可以帮助我们更好地处理异步操作。下面的实例中,100ms后会打印result字符串。catch用于错误处理。多个Promise可以链接起来。

        new Promise((resolve, reject) =>
      
            {
      
                setTimeout(() =>
      
                {
      
                    resolve('result');
      
                }, 100)
      
            })
      
            .then(console.log)
      
            .catch(console.error);

    5、用什么工具保证一致的代码风格?为什么要这样?

    • 团队协作时,保证一致的代码风格是非常重要的,这样团队成员才可以更快地修改代码,而不需要每次去适应新的风格。这些工具可以帮助我们:
    • [ESLint] (http://eslint.org/)
    • [Standard] (https://standardjs.com/)
    • JSLint
    • JSHint
    • ESLint
    • JSCS推荐

    6、什么是stub?举例说明

    • stub用于模块的行为。测试时,stub可以为函数调用返回模拟的结果。比如说,我们写文件时,实际上并不需要真正去写。

            var fs = require('fs');
            var writeFileStub = sinon.stub(fs, 'writeFile', function(path, data, cb)
      
            {
      
                return cb(null);
      
            });
      
            expect(writeFileStub).to.be.called;
      
            writeFileStub.restore();

    7、什么是测试金字塔?举例说明

    • 测试金字塔反应了需要写的单元测试,集成测试以及端到端测试的比例:

    • 测试HTTP接口时应该是这样的:
    • 很多单元测试,分别测试各个模块(依赖需要stub)
    • 较少的集成测试,测试各个模块之间的交互(依赖不能stub)
    • 少量端到端测试,去调用真正地接口(依赖不能stub)

    8、如何用Node监听80端口

    • 这题有陷阱!在类Unix系统中你不应该去监听80端口,因为这需要超级用户权限。因此不推荐让你的应用直接监听这个端口。
    • 目前,如果你一定要让你的应用80端口的话,你可以有通过在Node应用的前方再添加一层反向代理(例如nginx)来实现,如下图。否则,建议你直接监听大于1024的端口

    • 方向代理指的是以代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器, 并且将服务器返回的结果发送给客户端。

    9、什么是事件循环

    • Node采用的是单线程的处理机制(所有的I/O请求都采用非阻塞的工作方式),至少从Node.js开发者的角度是这样的。而在底层,Node.js借助libuv来作为抽象封装层,从而屏蔽不同操作系统的差异,Node可以借助livuv来实现线程。下图表示Node和libuv的关系

    • Libuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个事件循环,以异步的方式将任务的执行结果返回给V8引擎。可以简单用下面这张图来表示

    • 每一个I/O都需要一个回调函数————一旦执行完便堆到事件循环上用于执行

    10、运算错误与程序员错误的区别

    • 运算错误并不是bug,这是和系统相关的问题,例如请求超时或者硬件故障。而程序员错误就是所谓的bug

    11、使用NPM有哪些好处?

    • 通过NPM,你可以安装和管理项目的依赖,并且能够指明依赖项的具体版本号。对于Node应用开发而言,你可以通过package.json文件来管理项目信息,配置脚本,以及指明依赖的具体版本

    12、什么是stub?举个使用场景

    • stub是用于模拟一个组件或模块的函数或程序。在测试用例中,简单的说,你可以用stub去模拟一个方法,从而避免调用真实的方法,使用stub你还可以返回虚构的结果。你可以配合断言使用stub。
    • 举个例子,在一个读取文件的场景中,当你不想读取一个真正的文件时:

        var fs = require('fs'); var readFileStub = sinon.stub(fs, 'readFile', function (path, cb) { return cb(null, 'filecontent'); }); expect(readFileStub).to.be.called; readFileStub.restore(); 

    在单元测试中:Stub是完全模拟一个外部依赖,而Mock常用来判断测试通过还是失败

    展开全文
  • nodejs 面试题(个人总结)

    千次阅读 2020-12-02 20:49:46
    什么是nodejs?我们在哪里使用它 Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。 为什么要使用node js Node是一个基于...
    1. 什么是nodejs?我们在哪里使用它

    Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

    1. 为什么要使用node js

    Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用

    作为web前端开发人员需要了解一门后台语言

    对于前端开发人员nodejs 更容易上手

    1. nodejs有哪些特点

    RESTful API

    单线程

    非阻塞IO

    V8虚拟机

    事件驱动

    1. 什么是回调函数 ​ 回调函数,就是放在另外一个函数(如 parent)的参数列表中,作为参数传递给这个 parent,然后在 parent 函数体的某个位置执行,Node.js 异步编程的直接体现就是回调

    2. NPM的作用是什么

    node的包管理工具

    1. 什么是事件循环

    Node.js 在主线程里维护了一个事件队列,当接到请求后,就将该请求作为一个事件放入这个队列中,然后继续接收其他请求

    1. 什么是错误优先的回调函数

    NodeJS 通常使用回调模式,如果在执行期间发生错误,会把错误作为回调的第一个参数传递到回调函数中

    1. node模块分几类

    内置模块 自定义模块 第三方模块

    1. npm 下载模块的命令是什么

    npm install 模块名 --save

    1. npm 本地下载和全局下载的区别是什么

    --save -g 一个是功能模块 一个是工具

    1. *http请求消息的格式是什么 ​ 请求行 请求头 空行 请求数据

    2. http响应消息的格式是什么

    响应行 响应头 空行 响应正文

    1. url包含哪几部分

    协议 域名 路径 参数

    1. get和post传输数据的区别是什么

    传输数据的方式不一样 一个在请求头 post在请求体

    get 传输量小 post传输量大

    1. http工作原理

      1、客户端连接到Web服务器 2、发送HTTP请求

      3、服务器接受请求并返回HTTP响应

      4、释放连接TCP连接

      5、客户端浏览器解析HTML内容

    2. http状态码有哪些

      1xx:指示信息--表示请求已接收,继续处理

      2xx:成功--表示请求已被成功接收、理解、接受

      3xx:重定向--要完成请求必须进行更进一步的操作

      4xx:客户端错误--请求有语法错误或请求无法实现

      5xx:服务器端错误--服务器未能实现合法的请求

    3. 说一下对端口的理解

    通过“IP地址+端口号”来区分不同的服务的

    1. 什么是域名

      域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)

    2. 说一下对ip的理解

    IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议

    IP地址是用来识别网络上的设备,IP地址是由网络地址与主机地址两部分所组成

    1. express生成器创建项目的命令是什么

    express -e 项目名称

    1. 模板引擎的作用是什么

    界面和数据的分离 模板复用

    1. ejs模板 如何渲染一个列表

      <% for(var i=0;i<list.length;i++){ %>

      <li>

      <%= list[i]. %>

      </li>

    <% } %>

    1. mongoose操作mongoDB数据库,连接数据库的步骤

      1. 引入第三方模块mongoose

      2. 连接数据库:mongoose.connect(‘数据库的地址’)

      3. 设置集合规则:new mongoose.Schema()

      4. 创建集合:mongoose.model(‘集合名’, 集合规则)

    2. 向mongoDB数据库中导入数据的命令

      mongoimport -d 数据库名 -c 集合名 --file 要导入的文件

    3. mongoose操作mongoDB数据库,查找数据库中年龄大于20小于40的文档+

      集合.find({ age: { $gt: 20, $lt: 40 } })

    4. mongoose操作mongoDB数据库,删除多条文档 集合.deleteMany( ‘条件’)

    5. 什么是同源策略

      同源策略 是由NetScape提出的一个著名的安全 策略,它是浏览器最核心也最基本的安全功能

      所谓的同源,指的是协议,域名,端口相同。浏览器处于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源 4

    6. 什么是跨域

      跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制

    7. 跨域解决方案,最少说出三种

      **Jsonp, CORS, 代理,反向代理,哈希处理跨域,a链接处理跨域**

    8. jsonp的原理

      1. script的src属性不受同源策略的限制

      2. 将不同源的服务器端请求地址写在 script 标签的 src 属性中

         

    展开全文
  • nodejs面试总结

    万次阅读 2019-03-26 10:38:48
    一:Node 好处: 处理高并发 事件驱动 轻量 要用于搭建高性能的web服务器,  1. 它是一个Javascript运行环境  2. 依赖于Chrome V8引擎进行代码解释  3. 事件驱动  4. 非阻塞I/O ... 5.... 6.......

    一:Node 好处: 处理高并发 事件驱动 轻量  要用于搭建高性能的web服务器,

     

        1. 它是一个Javascript运行环境

      2. 依赖于Chrome V8引擎进行代码解释

      3. 事件驱动

      4. 非阻塞I/O

      5. 轻量、可伸缩,适于实时数据交互应用

      6. 单进程,单线程  它的单线程指的是自身 Javascript 运行环境的单线程

    二:Express 和 koa的区别?     

    异步 摆脱回调地域

    对response 和request进行了封装 content

    Express主要基于Connect中间件框架,功能丰富,随取随用,并且框架自身封装了大量便利的功能,比如路由、视图处理等等。而koa主要基于co中间件框架,框架自身并没集成太多功能,大部分功能需要用户自行require中间件去解决,但是由于其基于ES6 generator特性的中间件机制,解决了长期诟病的“callback hell”和麻烦的错误处理的问题,大受开发者欢迎。

    三:事件驱动模型和事件循环:

    事件驱动模型:当服务端收到请求时,就把它关闭 然后处理下一个请求 当第一个请求处理完毕后 就放回处理队列 当达到队列开头 将结果返回给用户  好处:高效 扩展性强 因为服务端一直接受请求 不等待任何读写操作

    事件循环:查看队列里面是否有队列里面有待处理的 如果有 交给主线程执行

    四:Redis:

    使用场景:支持string、list、set、zset和hash类型数据。

    1. 配合关系型数据库做高速缓存
    • 缓存高频次访问的数据,降低数据库io
    • 分布式架构,做session共享
    1. 可以持久化特定数据。
    • 利用zset类型可以存储排行榜
    • 利用list的自然时间排序存储最新n个数据

    五:mysql 和mongodb的区别 

    mysql 关系型数据库 mongodb是非关系数据库(主要)

    六:MySQL索引
    七:闭包应该注意的地方
    八:进程和线程

    进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位     

    进程是线程的容器

    十:mysql存储引擎 和区别

    InnoDB存储引擎:事务型数据库首选,支持事务安全表(ACID),支持行锁定和外键  是mysql 5.5之后的默认引擎

    MyISAM 存储引擎:不支持事务和外键,访问速度较快,是mysql5.5 之前的默认引擎

    MEMORY: 保存在内存中的数据表 ,每个memory表对应一个磁盘文件。格式是.frm  访问速度很快 缺点是:mysql服务关闭,数据丢失,另外对数据表大小有限制。
    十一:如何判断一个字符串是另一个字符串的子串

     indexof       es6:include    startWith   endWith
    十二:单点登录(SSO)

    多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

    大体意思就是多个系统共用一个登陆系统,登陆认证系统来管理用户信息。其他系统要进行登陆的拦截,如果用户没有进行登陆要跳转到登录系统进行登陆。
    十三:oauth2.0

    比如做的google 或者github 登录获取用户信息。需要先去第三方获取code(授权码),然后拿着code去请求获取到access_token(令牌),然后用令牌去获取到用户信息。

    四种方式:

    • 授权码(authorization-code)上面说的就是这种
    • 隐藏式(implicit)
    • 密码式(password):
    • 客户端凭证(client credentials)

    十四:type of 和instance of 区别 

    type of 用来判断数据类型:

    返回数据类型的字符串:

    "number", "string","boolean","object","function","undefined"

    instance of 用来判断某个对象是不是另一个对象的实例。

    下面的例子用来判断object和array:

            var obj = {"k1":"v1"};
            var arr = [1,2];
            console.log("对象的结果:"+(obj instanceof Array));
            console.log("数组的结果:"+(arr instanceof Array));

    十五:pm2 restart 和reload的区别(配置文件的重载 重启)

    restart,其杀死并重新启动该过程,reload实现了0秒停机重新加载(始终保持至少一个进程在运行)
    十六:MySQL 读写分离
    十七:pm2如何查看指定三个项目的日志
    十八:深拷贝 浅拷贝
    十九:路由机制
    二十:MySQL 批量更新
    二十一:登录流程
    二十二:cookie 和session
    二十三:基本数据类型 引用数据类型  区别

    基本数据类型:Number  String  Boolean  Null  Undefined(栈内存)

    引用数据类型:Object  包括:object array function (堆内存)
    二十四:防止sql 注入

    1.使用escape() 对传入参数进行编码

    2.使用connection.query ()的查询参数占位符

    3.使用escapeId()编码SQL查询标识符

    4.使用mysql.format()转义参数:

    二十五:require()模块加载机制

    先判断是否存在文件缓存区中,存在直接导入,没有的话,在判断是否是原生模块,

    如果是原生模块,再看是否在原生模块缓存区中,如果有直接导入,没有的话加载原生模块,缓存原生模块,在导入

    如果不是原生模块,先查找文件模块,根据扩展名载入文件模块,缓存文件模块,在导入

    二十六、module.exports 与exports,export 与export default之间的关系和区别

    1.exports 是module.exports的引用

    2.module.exports初始值是一个空对象{},所以exports的初始化值也是{}

    3.require引用模块后,返回的是module.exports

    4.exports.xxxx相当于给导出对象上直接挂载属性,该属性直接对引用模块可见

    es6之后使用export和import来导出、导入模块

    使用export default命令,为模块指定默认输出。

    展开全文
  • 面试整理|50个NodeJS面试题初级NodeJS面试题中级NodeJS面试题高级NodeJS面试题《Nodejs仿微博网站》 Node.js是一种服务器端脚本工具,使用它可以轻松构建从简单的命令行程序到复杂的企业级 Web 应用程序的所有内容...
  • 2021-10-24 NodeJS面试

    2021-10-24 17:21:52
    NodeJS模块化开发时,遵循CommonJS规范的情况下导出模块使用的对象 module是NodeJS给js模块提供的一个内置对象,一般指代的当前js文件/模块 module对象中包含了一个对象exports用于导出数据;同时NodeJS为了方便...
  • nodeJS面试

    千次阅读 2018-01-30 14:01:02
    node.js面试题大全-侧重后端应用与对Node核心的理解 Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员。所以这份面试题大全,更侧重后端应用与对Node核心的理解。   ...
  • 1、Node模块机制 1.1 请介绍一下node里的模块是什么 Node中,每个文件模块都是一个对象,它的定义如下: function Module(id, parent) { this.id = id; this.exports = {}; this.parent = parent;...
  • nodeJs面试

    千次阅读 2019-11-30 01:53:28
    简介:nodejs是后端和Web应用程序中最流行和新兴的技术。您可以使用nodejs使用模板创建前端,并为服务器信息创建微服务。在这里,我汇总了在访谈问题中可能会问到的nodejs流行问题– 什么是Node.js Node.js是一...
  • Nodejs面试

    2021-02-18 11:00:43
    1.2 请介绍一下require的模块加载机制 这道题基本上就可以了解到面试者对Node模块机制的了解程度基本上面试提到 1、先计算模块路径 2、如果模块在缓存里面,取出缓存 3、加载模块 4、的输出模块的exports属性即可 1...
  • nodejs面试题集锦

    2021-02-01 09:01:37
    1、为什么用Nodejs,它有哪些缺点? 事件驱动,通过闭包很容易实现客户端的生命活期。 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 当然Nodejs也有...
  • 后端面试问答 点击 :star: 如果你喜欢这个项目。 拉取请求受到高度赞赏。 关注我获取技术更新。 目录 - Node JS 不。 问题 节点JS 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30...
  • nodejs 面试

    千次阅读 2017-10-31 23:33:55
    nodejs面试
  • nodejs面试常见问题(更新中......)

    千次阅读 2018-04-02 13:01:49
    1.在建立中nodejs怎么去写2.nodejs在项目中怎么用的3.nodejs的常见问题什么是错误优先的回调函数?如何避免回调地狱?如何用Node来监听80端口?什么是事件循环?哪些工具可以用来保证一致的编程风格?运算错误与...
  • nodejs面试

    2016-10-09 10:38:00
    1. PM2相关 1. PM2的主要功能?*答案:在Node.js进程挂掉以后自动重启进程,并且能够方便的实现Node.js的集群模式* 2. 如何查看当前是否适合重启服务?*答案:pm2 monit,cpu占用率为0%时就可以* 3....
  • 在去年底开始换工作,直到现在算是告了一个段落,断断续续的也面试了不少公司,现在回想起来,那段时间经历了被面试官手撕,被笔试题狂怼,悲伤的时候差点留下没技术的泪水。 这篇文章我打算把我找工作遇到的各种...
  • NodeJS是一个基于Chrome V8引擎的JavaScript运行时环境 JavaScript运行时环境:可以脱离浏览器环境,直接运行js代码 基于Chrome V8引擎:解释执行js代码的效率非常高 非阻塞IO:NodeJS环境中提供了同步和异步的文件...
  • nodeJS常见面试题(一)

    千次阅读 2020-04-09 11:07:33
    箭头函数有哪些特性 箭头函数没有this,this的指向是上一级作用域 不可以当做构造函数 不可以使用arguments对象,该对象在函数体内不存在 箭头函数没有prototype属性 不能简单返回对象字面量 实现数组去重 ...
  • Nodejs的高频经典面试题解析

    千次阅读 2020-05-10 19:11:35
    NodeJS的特点是什么? 它是一个Javascript运行环境 依赖于Chrome V8引擎进行代码解释 事件驱动 非阻塞I/O 轻量、可伸缩,适于实时数据交互应用 单进程,单线程 (一个应用程序对应一个进程, 一个进程下面会有多个...
  • Nodejs面试28题大家好,这一期呢,我们来看一下nodjs的面试题。第1题, 什么是nodejs?我们在哪里使用它?Nodejs是服务器端的一门技术。它是基于Google V8 JavaScript引擎而开发的。用来开发可扩展的服务端程序。第2...
  • 说到前端就不得不提到后端,我们给用户展示页面所需的数据正是从后端获取的,所以了解后端的运行原理和技术的实现很有必要。Node. js是一个不错的选择,它是基于JavaScript语法的一...
  • NodeJs(前端面试题整合)

    千次阅读 多人点赞 2020-11-28 16:48:17
    ] } 不难发现,module是Module的实例,exports是其中一个属性,也就是说当你在node中执行一个js文件或者使用require引入模块时,nodejs都会新建一个var module = new Module(),并执行exports = module.exports...
  • 53道常见NodeJS基础面试题(附答案)

    万次阅读 2021-05-22 00:51:09
    点击下方“前端开发博客”关注公众号回复“2”加入前端群说到前端就不得不提到后端,我们给用户展示页面所需的数据正是从后端获取的,所以了解后端的运行原理和技术的实现很有必要。Node. js...
  • nodeJS面试拷问纪录

    2020-11-18 10:59:30
    为什么用nodeJS? 1.webpack 是基于nodeJs的。 2. 前端工程化。 3. npm 为什么要node版本更新 1.webpack 依赖node 新版本打包速度更快。 2.兼容新的语法 nvm工具 (nodejs的版本管理工具) 更新版本: nvm install v...
  • ES6和Nodejs面试

    2020-07-20 20:15:00
    ES6 面试题 1.let和var的区别 var声明变量可以重复声明,而let不可以重复声明,属于TDZ暂时性死区问题 作用域不同,var是函数作用域,而let是块级作用域 var可以在声明的上面访问变量,而let不存在变量提升 2.ES6中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,462
精华内容 3,784
关键字:

nodejs面试