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


    在这里插入图片描述

    Node.js是一种服务器端脚本工具,使用它可以轻松构建从简单的命令行程序到复杂的企业级 Web 应用程序的所有内容。
    本篇文章,将为大家分享50个和NodeJS相关的面试题及其解析,难度分为:初级、中级、高级三个部分,由易到难,循序渐进。

    初级NodeJS面试题

    Q1、如何区分 JavaScript 和 Node.js?

    特征JavaScriptNodeJS
    类型编程语言JavaScript 的解释器和环境
    公用事业用于 Web 应用程序的任何客户端活动用于访问或执行任何操作系统的任何非阻塞操作
    运行引擎蜘蛛猴 (FireFox)、JavaScript Core (Safari)、V8 (Google Chrome) 等V8 (Google Chrome)

    Q2、什么是NodeJS?
    Node.js 是在Chrome 的 V8 JavaScript 引擎上开发的极其强大的框架 ,可将 JavaScript 直接编译为原生机器码。它是一个轻量级框架,用于创建服务器端 Web 应用程序并扩展 JavaScript API 以提供常用的服务器端功能。它通常用于大型应用程序开发,特别是视频流站点、单页应用程序和其他 Web 应用程序。

    Q3、列出NodeJS的优势?

    特征描述
    快速Node.js 建立在 Google Chrome 的 V8 JavaScript 引擎之上,这使得它的库在代码执行方面非常快
    异步基于 Node.js 的服务器从不等待 API 返回数据,从而使其异步
    可扩展它是高度可扩展的,因为它的事件机制可以帮助服务器以非阻塞方式响应
    开源Node.js 拥有一个广泛的开源社区,该社区贡献了一些优秀的模块来为 Node.js 应用程序添加附加功能
    无缓冲Node.js 应用程序只是以块的形式输出数据,从不缓冲任何数据

    Q4、Angular 和 Node.js 有什么区别

    AngularNodeJS
    它是一个开源的Web应用程序开发框架它是应用程序的跨平台运行时环境
    它是用TypeScript编写的它是用C、C++ 和 JavaScript 语言编写的
    用于构建单页面客户端web应用用于构建快速且可扩展的服务器端网络应用程序
    Angular本身就是一个web 应用框架Node.js 有许多不同的框架, 如 Sails.js、Partial.js 和 Express.js 等
    非常适合创建高度活跃和交互式的网络应用程序非常适合开发小型项目
    有助于将应用程序拆分为MVC组件有助于生成数据库查询
    适合开发实时应用适用于需要更快和更具可扩展性的情况

    Q5、NodeJS的单线程模型?

    Node.js 使用单线程模型来支持异步处理。通过异步处理,应用程序可以在 Web 负载下性能更好并且更具可扩展性。因此,Node.js 使用单线程模型方法而不是典型的基于线程的实现。

    Q6、NodeJS是如何工作的?
    Node.js 是一个使用 JavaScript 作为脚本语言并在 v8 环境中运行的虚拟机。它在单线程事件循环和非阻塞 I/O 上提供高速率工作,因为它可以处理更多并发请求。此外,通过使用“HTTP”模块,Node.js 可以在任何独立的 Web 服务器上运行。

    Q7、NodeJS的应用领域?
    1、实时网络应用程序
    2、网络应用
    3、分布式系统
    4、通用应用

    Q8、NodeJS中有多少种API函数?
    有两种类型API函数

    • 异步非阻塞函数
    • 同步、阻塞函数

    Q9、异步和非阻塞有什么区别?

    • 异步
    • 非阻塞

    异步意味着不同步。使用这些我们可以发出不等待服务器响应的异步 HTTP 请求。这些函数继续响应它已经收到服务器响应的请求。 非阻塞函数用于 I/O 操作。他们立即响应任何可用数据,并根据请求继续运行。如果无法检索到任何答案,则 API 会立即返回并显示错误。

    Q10、package.json是什么文件?
    Node.js 中的 package.json文件是整个应用程序的核心。它是包含项目元数据的清单文件,我们在其中定义了包的属性。

    Q11、你对事件驱动编程的理解是什么?
    事件驱动编程是一种大量使用事件来触发各种函数的方法。事件可以是鼠标单击、按键等任何事件。当事件发生时,将执行已向元素注册的回调函数。这种方法主要遵循发布订阅模式。由于事件驱动编程的特点,使得Node.js 与其他技术相比速度更快。

    Q12、NodeJS中事件循环是什么,如何工作?
    Node.js 中的事件循环处理应用程序中的所有异步回调。它是 Node.js 最重要的特征之一,也是 Node.js 具有非阻塞 I/O 的原因。由于 Node.js 是一种事件驱动的语言,你可以轻松地将侦听器附加到事件,然后当事件发生时回调将由特定的侦听器执行。每当调用 setTimeout、http.get 和 fs.readFile 等函数时,Node.js 都会执行事件循环,然后继续执行进一步的代码,而无需等待输出。整个操作完成后,Node.js 接收输出,然后执行回调函数。这就是为什么所有的回调函数都被放置在一个循环的队列中。一旦收到响应,它们就会被一一执行。
    在这里插入图片描述

    Q13、在NodeJS上下文中解释REPL

    REPL在Node.js的代表:R-Read,E-Eval,P-Print,L-Loop。它代表一个计算机环境,例如窗口控制台或 Unix/Linux shell,可以在其中输入任何命令,然后系统可以输出响应。默认情况下,Node.js 与 REPL 环境捆绑在一起。REPL 可以执行以下列出的任务:

    • Read:读取用户的输入,将其解析为 JavaScript 数据结构,然后将其存储在内存中。
    • Eval:接收并评估数据结构。
    • Print:打印最终结果。
    • Loop:循环提供的命令,直到按两次CTRL+C。

    Q14、列出应该使用事件循环异步完成的任务

    1. 输入/输出操作
    2. 繁重的计算
    3. 任何需要阻塞的东西

    Q15、列出使用“控制流”控制 Node.js 中函数调用的步骤

    1. List item
    2. 控制执行顺序
    3. 收集数据
    4. 限制并发
    5. 调用程序的下一步

    中级NodeJS面试题

    Q16、你对测试金字塔的理解是什么?
    测试金字塔基本上是一个图表,它描述了为了项目的成功开发需要编写多少单元测试、集成测试和端到端测试的比例。
    图片

    Q17、Node.js 中的错误优先回调是什么?
    Node.js 中的错误优先回调用于传递错误和数据。你需要传递给这些函数的第一个参数必须是一个错误对象,而其他参数代表相关数据。因此,你可以传递错误对象以检查是否有任何错误并进行处理。如果没有问题,可以继续使用后续参数。

    var myPost = new Post({title: 'edureka'});
    myPost.save(function(err,myInstance){
    if(err){
    //处理错误并返回
    }
    //继续 `myInstance`
    });
    

    Q18、解释module.exports的用途?
    Node.js 中的一个模块用于将所有相关代码封装到一个代码单元中,该代码单元可以通过将所有相关功能转移到单个文件中来进行解释。例如,假设您有一个名为 greet.js 的文件,其中包含如下所示的两个函数:

    module.exports = {
    greetInHindi: function(){
    return "NAMASTE";
    },
    greetInKorean: function(){
    return "ANNYEONGHASEYO";
    }};
    

    如你所见,module.exports 提供了两个函数,可以使用以下代码将它们导入到另一个文件中:

    var eduGreets = require ("./greet.js");
    eduGreets.greetInHindi() //NAMASTE
    eduGreets.greetInKorean() //ANNYEONGHASEYO
    

    Q19、你对Node.js中的Reactor Pattern有什么理解?
    Node.js 中的Reactor Pattern基本上是一个非阻塞 I/O 操作的概念。该模式提供了一个与每个 I/O 操作相关联的处理程序,一旦生成 I/O 请求,它就会提交给多 路分解器。该解复用器是一个通知接口,能够在非阻塞 I/O 模式下处理并发。它还有助于以事件的形式收集每个请求,然后将每个事件放入队列中。从而导致事件队列的产生。同时,我们有事件循环,它迭代事件队列中存在的事件。

    Q20、“前端”和“后端”开发有什么区别?

    前端后端
    使用 HTML、CSS、JavaScript等标记和网络语言使用Python、Ruby、Perl等编程和脚本语言。
    基于异步请求和AJAX基于服务器架构
    更好的可访问性增强的安全性|
    用于搜索引擎优化用于备份

    Q21. Node.js 的 LTS 版本是什么?

    LTS代表Long Term Support版本的Node.js,接收安全更新和性能改进以及所有关键bug修复。主要关注稳定性和安全性。对 LTS 版本所做的修改仅限于错误修复、安全升级、npm 和文档更新、性能改进等。

    Q22. 列出 Node.js 中的主要安全实现?

    • 身份验证
    • 错误处理

    Q23. 你怎么理解回调地狱?

    回调地狱也被称为末日金字塔。这是一种由密集嵌套的回调引起的模式,这些回调不可读且笨拙。它通常包含多个嵌套的回调函数,从而使代码难以阅读和调试。它是由异步逻辑的不当实现引起的。

    async_A(function(){
    async_B(function(){
    async_C(function(){
    async_D(function(){
    ....
    });
    });
    });
    });
    

    Q24. 解释libuv?

    Libuv 是Node.js的多平台支持库,主要用于异步 I/O。它主要是为 Node.js 开发的,随着时间的推移,它被广泛用于其他系统,如 Luvit、pyuv、Julia 等。Libuv 基本上是对依赖于平台的 libev/IOCP 的抽象,为用户提供基于 libev 的 API。libuv 的一些重要特性是:

    • 支持全功能事件循环
    • 文件系统事件
    • 异步文件和文件系统操作
    • 异步 TCP 和 UDP 套接字
    • 子进程

    Q25. 解释NodeJS中间件概念
    一般来说,中间件是一个接收请求和响应对象的函数。换句话说,在应用程序的请求-响应循环中,这些函数可以访问各种请求和响应对象以及循环的下一个函数。中间件的 next 功能是借助一个变量来表示的,通常命名为 next。中间件功能最常执行的任务是:

    • 执行任何类型的代码
    • 更新或修改请求和响应对象
    • 完成请求-响应循环
    • 调用堆栈中的下一个中间件

    Q26.解释URL模块的概念?

    Node.js的 URL 模块提供了各种用于URL 解析和解析的实用程序 。它是一个内置模块,有助于将网址拆分为可读格式:

    var url = require('url');
    

    例如:

    var url = require('url');
    var adrs = 'http://localhost:8082/default.htm?year=2021&month=July';
    var q = url.parse(adr, true);
    console.log(q.host); //returns 'localhost:8082'
    console.log(q.pathname); //returns '/default.htm'
    console.log(q.search); //returns '?year=2021 and month=July'
    var qdata = q.query; //returns an object: { year: 2021, month: 'July' }
    console.log(qdata.month); //returns 'July'
    

    Q27.你对ESLint的理解是什么?

    ESLint 是一个开源项目,最初由 Nicholas C. Zakas 于 2013 年开发,旨在通过插件为 JavaScript 提供 linting 实用程序。Node.js 中的 Linters 是搜索某些 bug 类的好工具,尤其是那些与变量作用域相关的 bug。

    Q28.对于 Node.js,为什么 Google 使用 V8 引擎?

    Google 使用 V8,因为它是一个 Chrome 运行时引擎,可以将JavaScript 代码转换为本地机器代码。这反过来又加快了应用程序的执行和响应过程,并为您提供了一个快速运行的应用程序。

    Q29.解释控制流的工作?
    在 Node.js 中,控制流函数基本上是在异步函数调用之间执行的代码。以下是执行它必须遵循的步骤:
    首先,必须控制执行顺序。
    然后,需要收集所需的数据。
    其次,必须限制并发。
    完成后,必须调用程序的下一步。

    Q30.列出 async.queue 作为输入的两个参数?
    下面是 async.queue 作为输入的两个参数:

    1. 任务功能
    2. 并发值

    Q31.Node.js 中 spawn() 和 fork() 方法的区别?

    在 Node.js 中, spawn() 用于使用提供的命令集启动新进程。此方法不会创建新的 V8 实例,并且只有一个节点模块副本在处理器上处于活动状态。当你的子进程向 Node 返回大量数据时,可以调用此方法。
    语法:

    child_process.spawn(command[, args][, options])
    

    而 Node.js 中的 fork() 是 spawn() 的一个特殊实例,它执行 V8 引擎的一个新实例。这种方法只是意味着多个工作程序在单个 Node 代码库上运行以执行各种任务。
    语法:

    child_process.fork(modulePath[, args][, options])
    

    Q32、Node.js中的全局对象是怎么理解的?
    在 Node.js 中,全局对象本质上是全局的,并且在应用程序的所有模块中都可用。您可以直接在应用程序中使用这些对象,而不必显式包含它们。全局对象可以是模块、函数、字符串、对象等。此外,这些对象中的一些可以在模块范围内而不是在全局范围内。

    Q33、解释Node中存根的概念?
    在 Node.js 中,存根基本上是用于刺激模块或组件行为的程序或函数。在任何测试用例中,存根都会提供函数的预设答案。

    Q34、断言在NodeJS中如何工作?
    在 Node.js 中,断言用于编写测试。它仅在任何正在运行的测试用例失败时才提供反馈。该模块为您提供了一组断言测试,然后用于测试不变量。它基本上由 Node.js 内部使用,但使用 require(‘assert’) 代码,它也可以在其他应用程序中使用。

    Q35、定义测试金字塔的概念。从 HTTP API 的角度解释实现它们的过程
    测试金字塔基本上是由 Mike Cohn 开发的一个概念。根据这一点,你应该有一个更高一些低级别的单元测试相比,高层次的终端到终端的测试,通过GUI运行。
    就 HTTP API 而言,它可以定义为:

    • 每个模型的低级单元测试数量更多
    • 较少的集成测试来测试模型交互
    • 用于测试实际 HTTP 端点的较少验收测试

    Q36、解释一下ExpressJS包的用途?
    Express.js 是一个构建在 Node.js 之上的框架,它有助于管理服务器端应用程序中服务器和路由之间的数据流。它是一个轻量级且灵活的框架,可提供 Web 和移动应用程序开发所需的广泛功能。Express.js开发的中间件的Node.js的模块被称为 连接。connect 模块进一步利用 http 模块与 Node.js 通信。因此,如果您正在使用任何基于连接的中间件模块,那么您可以轻松地与 Express.js 集成。

    Q37、process.nextTick() 和 setImmediate() 的区别?
      在 Node.js 中,process.nextTick() 和 setImmediate() 都是 Timers 模块的函数,它们有助于在预定义的时间段后执行代码。但是这些功能在执行上有所不同。process.nextTick 函数等待动作的执行,直到事件循环中的下一次传递,或者一旦事件循环完成,它就会调用回调函数。另一方面, setImmediate() 用于在事件循环的下一个周期执行回调方法,最终将其返回到事件循环以执行 I/O 操作。

    Q38、解释Node.js中buffer类的用法?
    Node.js 中的 Buffer 类用于以类似于整数数组的方式存储原始数据。但它对应于位于 V8 堆之外的原始内存分配。它是一个易于访问的全局类,无需导入缓冲模块即可在应用程序中访问。使用 Buffer 类是因为纯 JavaScript 与二进制数据不兼容。因此,在处理 TCP 流或文件系统时,有必要处理八位字节流。

    Q39、NodeJS如何处理子线程?
     一般来说,Node.js 是一个单线程进程,不暴露子线程或线程管理方法。但是您仍然可以使用 spawn() 将子线程用于某些特定的异步 I/O 任务,这些任务在后台执行并且通常不执行任何 JS 代码或阻碍应用程序中的主事件循环。如果您仍然想在您的应用程序中使用线程概念,您必须明确地包含一个名为 ChildProcess 的模块。

    Q40、相对,固定,绝对和静态定位的元素有什么区别?
    Node.js 中的流是类似于数组和字符串的数据集合。它们是对象,您可以使用它们以连续方式从源读取数据或将数据写入目标。它可能无法立即使用,也不必放入内存中。这些流对于读取和处理大量数据特别有用。在 Node.js 中,流有四种基本类型:

    1. 可读: 用于从源读取大量数据。
    2. 可写:用于将大块数据写入目的地。
    3. 双工:用于两种功能;读和写。
    4. Transform:它是一种用于修改数据的双工流。

    高级NodeJS面试题

    Q41、NODE_ENV有什么用?
    如果项目处于生产阶段,Node.js 提倡使用 NODE_ENV 变量来标记它的约定。这有助于在项目开发过程中做出更好的判断。此外,当您将 NODE_ENV 设置为生产时,您的应用程序的执行速度往往会快 3 倍。

    Q42、Node.js 中 readFile 和 createReadStream 的区别?
    Node.js 提供了两种读取和执行文件的方式,分别是使用 readFile 和 CreateStream。readFile() 是一个完全缓冲的进程,只有当完整的文件被推入缓冲区并被读取时才返回响应。这是一个内存密集型过程,在大文件的情况下,处理速度可能非常慢。而 createReadStream 是部分缓冲的,它将整个过程视为一个事件系列。整个文件被分成块,然后被处理并作为响应一一发回。完成后,它们最终会从缓冲区中删除。与 readFile 不同,createReadStream 对于大文件的处理非常有效。

    Q43、列出 Node.js 的各种计时功能?
    Node.js 提供了一个 Timers 模块,其中包含在指定时间段后执行代码的各种功能。下面我列出了这个模块提供的各种功能:

    1. setTimeout/clearTimeout – 用于在指定的毫秒数后安排代码执行
    2. setInterval/clearInterval – 用于多次执行一个代码块
    3. setImmediate/clearImmediate – 用于在当前事件循环周期结束时执行代码
    4. process.nextTick – 用于调度需要在事件循环的下一次迭代中调用的回调函数

    Q44、解释Node.js中Punycode的概念
    在 Node.js 中,Punycode 是一种编码语法,用于将 Unicode (UTF-8) 字符串转换为基本的 ASCII 字符串。这很重要,因为主机名只能理解 ASCII 字符。因此,从 Node.js 0.6.2 版本开始,它与默认的 Node 包捆绑在一起。如果您想将它与任何以前的版本一起使用,您可以使用以下代码轻松实现:
    语法:

    punycode = require('punycode');
    

    Q45、Node.js 和 Ajax 的区别?
    Node.js 和 Ajax 之间最基本的区别在于,Node.js 是服务器端 JavaScript,而 Ajax 是客户端技术。简单来说,Ajax 主要用于更新或修改网页内容,而无需刷新它。另一方面,Node.js 需要开发通常由服务器而不是 Web 浏览器执行的服务器软件。

    Q46、Node.js 是否提供任何调试器?
    Node.js 确实提供了一个简单的基于 TCP 的协议和内置的调试客户端。为了调试您的 JavaScript 文件,您可以使用下面的调试参数,后跟要调试的js文件名。
    语法:

    node debug [script.js | -e "script" | <host> : <port> ]
    

    Q47、描述 Node.js 的退出代码?
    在 Node.js 中,退出代码是一组用于完成特定进程的特定代码。这些进程也可以包括全局对象。下面是 Node.js 中使用的一些退出代码:

    • 未捕获的致命异常
    • 没用过
    • 致命错误
    • 内部异常处理程序运行时失败
    • 内部 JavaScript 评估失败

    Q48、Node.js 中的 Event Emitter 是怎么理解的?
    EventEmitter 是一个 Node.js 类,包含所有能够发出事件的对象。这些对象包含一个 eventEmitter.on() 函数,通过该函数可以将多个函数附加到对象发出的命名事件。每当 EventEmitter 对象抛出一个事件时,所有附加到该特定事件的函数都会被同步调用。下面的代码显示了如何在您的应用程序中使用 EventEmitter:

    const EventEmitter = require('events');
    class MyEmitter extends EventEmitter { }
    const myEmitter = new MyEmitter();
    myEmitter.on('event', () => {
    console.log('an event occurred!');
    });
    myEmitter.emit('event');
    

    Q49、解释为什么 Express ‘app’ 和 ‘server’ 必须分开的原因?
    Express ‘app’ 和 ‘server’ 必须保持分开,因为这样做,您将 API 声明与网络相关配置分开,这有利于以下列出的方式:
    它允许在进程内测试 API,而无需执行网络调用
    更快的测试执行
    获取更广泛的代码覆盖指标
    允许在灵活的不同网络条件下部署相同的 API
    更好地分离关注点和更清晰的代码
    API 声明应驻留在 app.js 中:

    var app = express();
    app.use(bodyParser.json());
    app.use("/api/events", events.API);
    app.use("/api/forms", forms);
    

    服务器网络声明应位于 /bin/www 中:

    var app = require('../app');
    var http = require('http');
    //Get port from environment and store in Express
    var port = normalizePort(process.env.PORT || '8000');
    app.set('port', port);
    //Create HTTP server.
    var server = http.createServer(app);
    

    Q50、Node.js 支持密码学吗?
    是的,Node.js 确实通过名为 Crypto 的模块支持加密。该模块提供各种加密功能,如密码、解密、签名和验证功能,一组用于开放 SSL 的哈希 HMAC 的包装器等。例如:
    语法:

    const crypto = require'crypto');
    const secret = 'akerude';
    const hash = crypto.createHmac('swaEdu', secret).update('Welcome to Edureka').digest('hex');
    console.log(hash);
    

    关于NodeJS面试题就先简单给大家分享到这里!
    掌握了这些面试题型后,还需要结合真实项目才能够融会贯通 !
    下面课程将带你进入真实项目的应用,带大家掌握NodeJS!

    《Nodejs仿微博网站》

    在这里插入图片描述
    在这里插入图片描述

    前端学习扫码咨询
    在这里插入图片描述

    展开全文
  • nodejs面试题

    2021-05-09 11:03:58
    整理一小部分nodejs面试题1. nodejs是什么?2. nodejs和前端js的区别?3. nodejs如何进行调试?4. 当前文件和目录的路径如何获取?5. commonjs和es6 import的区别?6. path.resolve和path.join的区别?7. 事件循环...


    1. nodejs是什么?

    1. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时
    2. nodejs出现之前,js只能在游览器运行
    3. nodejs出现之后,js可以在任何安装nodejs的环境运行

    2. nodejs和前端js的区别?

    在这里插入图片描述

    1. 语法不同
      nodejs和js有共同的es语法,但是API不一样
    2. 应用不同
      2.1 前端js用于网页,在游览器运行
      2.2 nodejs可用于服务端,如开发web server
      2.3 nodejs 也可以用于本机,如webpack等本机工具

    3. nodejs如何进行调试?

    在这里插入图片描述

    1. 启动nodejs 服务时,使用inspect
    2. 代码中使用debugger断点
    3. 使用Chrome调试,在游览器输入: chrome://inspect

    4. 当前文件和目录的路径如何获取?

    1. __filename 获取当前文件
    2. __dirname 获取当前路径

    5. commonjs和es6 module的区别?

    1. 语法不同
    2. commonjs是动态引入,执行时引入
    3. ES6 module 是静态引入,编译时引入,一般放在顶部
      在这里插入图片描述

    6. path.resolve和path.join的区别?

    1. 两者都是拼接文件路径
    2. path.resolve 获取绝对路径
    3. path.join 获取在相对路径
      在这里插入图片描述

    7. 事件循环(event loop)在nodejs和游览器中的区别?

    1. 游览器事件循环引用阮一峰老师的博客:JavaScript 运行机制详解:再谈Event Loop
    2. nodejs 参考其他博主的博客,如: NodeJs 的 Event loop 事件循环机制详解

    8. session如何实现登录?

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    9. 请描述koa2和express的中间件机制

    参考博客: Koa2 和 Express 中间件对比

    10. async和await执行顺序的考察

    参考博客:async 函数的含义和用法

    11. 描述koa2洋葱圈模型

    参考博客:Koa2 中间件简易洋葱圈模型实现

    12. 如何逐行读取一个1G大小的日志文件?

    在这里插入图片描述
    在这里插入图片描述

    13. nodejs线上环境为何要开启多进程?

    1. 高效使用多核CPU
    2. 充分利用服务器内存
    3. 最终: “压榨”服务器,不浪费资源
    4. 可以使用 PM2 进行管理
    展开全文
  • nodejs面试题笔记

    2021-03-12 13:41:45
    二、nodejs前端js的区别 (1)语法层面 都使用ES语法 前端js使用 JS Web API nodejs 使用 node API (2)应用层面 前端 js 用于网页,在浏览器运行 nodejs 用于服务端,如开发 web server nodejs 也可以用于本...
    一、nodejs是什么
    • nodejs 是基于 Chome V8 引擎的 Javascript运行时
    • nodejs出现以前,js只能再浏览器运行
    • nodejs出现之后,js可以再如何安装nodejs的环境运行
    二、nodejs和前端js的区别

    (1)语法层面

    • 都使用ES语法
    • 前端js使用 JS Web API
    • nodejs 使用 node API

    (2)应用层面

    • 前端 js 用于网页,在浏览器运行
    • nodejs 用于服务端,如开发 web server
    • nodejs 也可以用于本机,如webpack等本机工具
    三、nodejs如何调试
    • 启动 nodejs 服务时,使用inspect
    • 代码中使用 debugger 断点
    • 使用 chrome 调试 - chrome://inspect
    四、当前文件和当前目录的路径,如何获取
    • _ _ filename
    • _ _dirname
    • 俩个都是全局变量
    五、commonjs 和 ES6 Module 的区别
    • 语法不同
    • commonjs 是动态引入,执行时引入
    const http = require('http')
    
    const flag = flase
    if (flag) {
        const _ = require('lodash'); //commonjs不会报错
    } 
    
    • ES6Module 是静态引入,编译时引入
    import {sum , test} from './utils'
    
    const flag = flase
    if (flag) {
        //放在 if 语句里会报错,编译时就报错
        import {sum , test} from './utils' 
    } 
    
    六、path.resolve() 和 path.join() 的区别
    • 两者都是用于拼接文件路径

    • path.join() 获取相对路径

    const p1 = path.join('..', 'src', 'code1')
    console.log(p1); // '../src1/code1'
    
    • path.resolve() 获取绝对路径
    const p1 = path.resolve('..', 'src', 'code1')
    console.log(p1); // '/Users/xxx/projects/src1/code1'
    

    欢迎访问我的个人博客

    展开全文
  • nodeJs面试题

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

    简介:nodejs是后端和Web应用程序中最流行和新兴的技术。您可以使用nodejs使用模板创建前端,并为服务器信息创建微服务。在这里,我汇总了在访谈问题中可能会问到的nodejs流行问题–

     

    什么是Node.js

    Node.js是一个开放源代码,跨平台的JavaScript运行时环境,它提供了在服务器端执行JavaScript代码的环境。
    Node.js使用事件驱动且无阻塞的I / O模型来创建实时应用程序。

     

    Node.js是单线程的吗

    什么是事件循环

    Event Lopp是一种以同步方式运行运行异步操作的机制。Node.js使用libuv库,该库管理一个称为libuv线程池的特殊线程池。

    • Node JS Web服务器接收异步请求并将其放入“事件队列”。
    • Even Loop检查是否将任何客户端请求放置在事件队列中,如果是,则在不需要任何阻塞IO操作的情况下处理它们。
    • 如果IF有一些I / O操作,则从内部线程池中检查线程的可用性,并在那里为该请求分配一个。
    • 线程负责处理和准备响应,并将其发送回事件循环。
      然后,事件循环将响应发送到相应的客户端。

    module.export与常规导出之间的区别

    除非您在模块中重新分配导出,否则export和module.exports相同。

    解释Babel和Webpack?

    babel用于将JS代码转换为给定的预设.Babel是将新JS代码转换为旧代码的JS转换程序。诸如es2015,es2016,es2017之类的预设,以便Babel将它们编译为ES5。

    Webpack是一个模块化的构建工具,包含两个部分,一个是加载器,另一个是插件。
    该webpack用于编译JavaScript模块。您可以通过其CLI或API访问webpack界面。

     

    什么是JWT?

    JWT代表json Web令牌,它用于安全地进行两方之间的通信。您可以生成具有用户特定信息的jwt令牌。当客户端再次返回服务器时,您可以再次验证令牌。

     

    什么是事件驱动架构

    事件驱动编程是一种编程范例,其中程序的流程由事件决定,例如用户操作(鼠标单击,按键按下),传感器输出或来自其他程序/线程的消息(根据维基百科)。

     

    如何配置线程池?

    您可以配置集群模块来设置线程池。可以使用UV_THREADPOOL_SIZE环境变量来设置线程池。

     

    ORM及其好处

    对象关系映射(ORM)是对象和关系数据库系统之间的映射过程。ORM帮助最小化和优化SQL查询,它具有预定义的方法来执行常见的sql操作。

     

    需求和导入之间的区别

    es6使用import导入模块,而普通js使用require导入模块。

     

    什么是Promise?

    Promise帮助表示Node.js中的异步调用函数。该对象具有拒绝和完成的回调动作。

     

    什么是Nodemon?

    nodemon是一个软件包,可在检测到目录中的文件更改时帮助自动重新启动节点应用程序。

     

    什么是PM2?

    PM2是带有内置负载平衡器的Node.js应用程序的高级流程管理器。它使您可以使应用程序永远保持活动状态,无需停机即可重新加载它们,并简化常见的系统管理任务。

     

    如何避免Node.js中的内存泄漏

    我们可以使用垃圾收集器方法来避免nodejs应用程序中的内存泄漏。V8引擎具有一个垃圾收集器,主要运行Mark和Sweep算法。

     

    Nodejs中的Helmet 是什么

    Helmet 可通过设置各种HTTP标头来帮助您保护Express应用程序。

     

    什么是Body Parser?

     

    这是一个nodejs中间件,用于解析请求主体的json数据。主体分析器提取传入请求流的整个主体部分并将其公开req.body

     

    什么是集群和用途?

    集群模块允许您利用计算机的所有内核。每个进程独立工作,因此您不能在子进程之间使用共享状态。

     

    什么是中间件

    中间件是Express js路由层在调用用户定义的处理程序之前调用的功能。中间件功能具有对请求和响应对象的完全访问权限,并且可以对其进行修改。

     

    如何管理环境变量

    .env在您应用的根目录中创建文件并添加变量。我们可以在整个应用中访问这些变量。

    展开全文
  • web安全 前端性能 浏览器 算法相关 设计模式 正则表达式 职业规划 参考资料 html/ css 行内元素和块级元素举几个例子? 行内元素:span,a,var ,em,input,img,img,textarea,var,em,s...
  • Nodejs面试题

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

    万次阅读 多人点赞 2019-04-02 19:10:42
    比如NodeJS的koa2-cors var koa = require('koa'); //npm install --save koa2-cors var cors = require('koa2-cors'); var app = koa(); //开启 app.use(cors()); 3、Nginx 4、后端程序代理 自己启一个后端程序做...
  • Web前端经典面试题有哪些?如何能走向高薪之路?Web前端在近几年是越来越火热了,很多人看到了前端的高薪资,更看到了前端行业的发展前景,所以纷纷投入到学习前端技术学习中来。下面给大家总结整理一些Web前端经典...
  • web前端常见面试题总结 1.为何选择前端这个方向? 对前端很感兴趣,之前也接触过其他语言,但是直到接触前端才发现真的有兴趣做下去,兴趣是一个人最好的老师。 前端很有前途,像现在node.js,rn,微信小程序这类工具...
  • web前端经典面试题

    万次阅读 多人点赞 2017-02-16 12:18:24
    web前端面试题   其他问题 1、请谈谈你对性能优化的认识? 网页内容 减少http请求次数 80%的响应时间花在下载网页内容(images, stylesheets, javascripts,scripts, flash等)。减少请求次数是缩短响应时间的...
  • 2018web前端最新面试题

    千次阅读 2018-10-09 17:14:53
    从八月份开始校招面试笔试,前前后后大厂小厂也都面了挺多,不过大厂基本都被我挂完了,哭晕我,还是太菜啊。面过的公司:ThoughtWorks,大疆,阿里,网易,百度,电信it研发中心,深信服,华为,小米,搜狗。拿了...
  • 想要能高薪就业,那么除了好的web前端技能以外,还得有好的面试技巧,如果提前就了解更多企业的面试要求及面试题目,那么可以让我们的面试成功的几率大大的提高,今天就给大家分享5道经典的web前端面试题,相信可以...
  • 运行在浏览器端的 JavaScript 由于也缺少类似的规范,在 ES6 出来之前,前端也实现了一套相同的模块规范 (例如: AMD),用来对前端模块进行管理。自 ES6 起,引入了一套新的 ES6 Module 规范,在语言标准的层面上实现...
  • nodejs 面试题(个人总结)

    千次阅读 2020-12-02 20:49:46
    什么是nodejs?我们在哪里使用它 ... 为什么要使用node js Node是一个基于Chrome JavaScript运行时...作为web前端开发人员需要了解一门后台语言 对于前端开发人员nodejs 更容易上手 nodejs有哪些特点 RESTf..
  • ES6和Nodejs面试题

    2020-07-20 20:15:00
    ES6 面试题 1.let和var的区别 var声明变量可以重复声明,而let不可以重复声明,属于TDZ暂时性死区问题 作用域不同,var是函数作用域,而let是块级作用域 var可以在声明的上面访问变量,而let不存在变量提升 2.ES6中...
  • 本文为大家整理了2020年最新出炉的Web前端JavaScript面试题,大家可以好好做一做,有什么不懂得地方再看答案,下面一起来查漏补缺吧! 面试题1:Object.is()与原来的比较操作符"="、"” 的区别? 答案: (1)两...
  • web前端开发面试题

    2020-07-06 21:32:02
    1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5.未来三到五年的规划是怎样的? position的值, relative和...
  • 当然是了解一些面试题了,因为很多时候,一些我们忽略的小问题可能就是企业比较看重的,所以,今天给大家整理总结了一些面试题。希望可以对大家的面试有一定的帮助,可以让大家更从容面对招聘者的考验。     ...
  • 前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分,甚至更好, 参与项目,快速高质量完成实现效果图,精确到1px; 与团队成员,UI设计,产品经理的沟通; 做好的页面结构,页面重构和用户...
  • Web前端经典面试题有哪些?如何能走向高薪之路?Web前端在近几年是越来越火热了,很多人看到了前端的高薪资,更看到了前端行业的发展前景,所以纷纷投入到学习前端技术学习中来。下面给大家总结整理一些Web前端经典...
  • 2014年最新web前端开发面试题 本文是一份非常不错的2014年web前端开发工程师的面试题集锦,并附有参考答案,推荐大家参考下。 试题目录: HTML 部分 CSS 部分 JavaScript 部分 其他问题 面试注意点: ...
  • 2021年前端面试题及答案

    万次阅读 多人点赞 2020-02-11 19:29:34
    前端面试汇总(2020年) 一 ...2、前端工程化 ...3、前端设计模式 ...8、*前端基础知识点面试题 9、前端技术栈问题 前言 由于新冠肺炎疫情,现在成天呆在家里,加上也要准备面试,就在家里看面试题...
  • web前端面试题总结

    千次阅读 多人点赞 2018-03-01 20:25:54
    web前端常见面试题总结1.为何选择前端这个方向?对前端很感兴趣,之前也接触过其他语言,但是直到接触前端才发现真的有兴趣做下去,兴趣是一个人最好的老师。前端很有前途,像现在node.js,rn,微信小程序这类工具和...
  • 如果服务器这两个时间都下发了,以后者为准 2、协商缓存:与服务器协商是否要用,是否过期 (1)Last-Modified/ If-Modified-Since Last-Modified: Web, 26 Jan 2017 00:35:11 GMT (2)Etag/ If-None-Match if-none...
  • 下面就跟着小编一起来看看web前端经典面试题总结整理。 1、CSS,JS代码压缩,以及代码CDN托管,图片整合。 (1)CSS,JS 代码压缩: 可以应用gulp的gulp-uglify,gulp-minify-css模块完成;可以应用webpack的 ...
  • web前端笔试面试题整理

    千次阅读 2018-03-08 17:07:09
    常见的设计模式:单利模式,简单的工厂模式,观察者模式 适配器模式 代理模式 桥接模式 外观模式 访问者模式 中介者模式4.nodejs 的核心模块:http url queryString file system path global5.re...
  • 1. 如何重定向路由?... 动态路由传参数 query 传参 路由解偶 web 前端 vue 面试题(一) web 前端 vue 面试题(二) web 前端 vue 面试题(三) web 前端 vue 面试题(四) web 前端 vue 面试题(五)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,091
精华内容 1,236
关键字:

web前端nodejs面试题