NodeJS系列面试题

大家好,我是有用就扩散,有用就点赞。

  1. 有没有写过Koa中间件,说一下中间件原理,介绍下自己写过的中间件

    koa本来就是一个轻量级框架,本身支持的功能并不多,功能都是通过中间件来实现不同的需求。开发者可以通过不同的中间件来按需求扩展不同的功能。

    koa中间件本质上就是函数,可以是一个async函数,也可以是一个普通的函数。

    中间件原理:中间件会遵循洋葱模型,中间件执行顺序并不是会从头执行到尾,而是会执行最外层中间件,当调取next()函数后进入下一个中间件执行,一路执行到最里层中间件,然后在从最里层执行到最外层。

  2. 如果判断当前脚本运行在浏览器还是node环境中?

    可以通过判断在浏览器端或者是node端独特的全局对象来区分环境。

    javascript 复制代码
    // 例如:浏览器端的window或者是node端的process全局对象
    if(typeof process !== "undefined"){
        console.log("node")
    } else {
        console.log("浏览器")
    }
  3. 请描述一下cookies、sessionStorage和localStorage区别?

    相同点:都存储在客户端

    不同点:

    1. 存储大小

      cookies:数据大小不能超过4K

      sessionStorage和localStorage虽然也有存储大小的限制,但比cookies大得多,可以达到5M或更大

    2. 有效时间

      cookies:设置的cookies过期时间一直有效,即使窗口或浏览器关闭

      sessionStorage:数据在当前浏览器窗口关闭后自动删除

      localStorage:存储支持久数据,浏览器关闭后数据不丢失除非主动删除数据

    3. 数据与服务器之间的交互方式

      cookies:数据会自动的传递到服务器,服务器端也可以写cookie到客户端

      sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存

  4. 介绍一下node常用模块,并且详细介绍下Stream?

    常用模块如:内置模块http,通过http来构建本地服务器

    javascript 复制代码
    const http = require("http")
    const server = http.createServer((req,res)=>{
     res.write("hello world")
     res.end()
    })
    server.listen(3000)

    同样也可以通过http实现服务端的网络请求。

    ​ 还有fs模块可以通过fs模块实现服务器端的文件操作,实现服务端文件的增删改查操作

    还有path模块提供各种处理路劲的API;body-parser模块来处理接收post请求到服务端的数据等等模块。

    ​ Stream流是一种抽象数据结构,可以用它来读取和写入数据,通过流来读取和写入数据可以防止内存溢出,采取流方式处理数据会把数据分成64K小块数据,异步依次来进行传递,更加节约性能。

  5. Node如何和MySQL进行通信?

    可以借助一些sql相关模块实现node和mysql数据库的通信

    第一步:安装mysql2包模块

    第二步:连接数据库

    javascript 复制代码
    const mysql = require("mysql2")
    const connection = mysql.createConnection({
        host:"localhost", // 主机地址
        user:"root", // 数据库用户名
        database:"test" // 数据库名称
    })

    第三步:通过query来执行sql语句

欢迎各位大哥投稿 PR

相关推荐
胡萝卜术6 小时前
力扣5. 最长回文子串
前端·javascript·面试
叩码以求索6 小时前
三维建模:SolidWorks 2025保姆级下载与安装教程指南
学习·数学建模
触底反弹7 小时前
🔥 保姆级教程|SSE + BFF + 跨域三件套,从零实现 ChatGPT 流式输出(附完整代码)
人工智能·node.js·vite
zhangrelay8 小时前
消费电子原装锂电池服役8–20年且健康度>40%公开实测案例完整调研分析报告
笔记·学习
触底反弹8 小时前
🔥 从零搭建 RAG 知识库:爬虫→分词→向量化→检索,一步都不能错
javascript·人工智能·面试
tyqtyq228 小时前
HarmonyOS AI 应用开发实战:简历项目经历改写系统
人工智能·学习·华为·生活·harmonyos
এ慕ོ冬℘゜10 小时前
JavaScript 数组核心方法实战|新增元素 + 数组转字符串 零基础详解
开发语言·javascript·ecmascript
bush411 小时前
正点原子imx6ull-uboot,奇怪的问题
linux·学习
念雨思11 小时前
HarmonyOS AI 应用开发实战:短视频选题灵感 —— AI 驱动的内容创作引擎
人工智能·学习·华为·harmonyos·鸿蒙