当前位置: 首页 > news >正文

NodeJS系列面试题

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

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

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

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

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

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

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

    // 例如:浏览器端的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来构建本地服务器

    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包模块

    第二步:连接数据库

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

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

欢迎各位大哥投稿 PR

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战
  • Quectel EM05-CE 模块测试
  • VScode通过Graphviz插件和dot文件绘制层次图,导出svg
  • 前端面试题整理
  • 揭开黑箱:目标检测中可解释性的重要性与实现
  • kail-linux如何使用NAT连接修改静态IP
  • Java面试题系列 - 第17天
  • FreeRTOS的互斥锁(互斥信号量)使用
  • grafana大坑,es找不到时间戳 | No date field named timestamp found
  • C语言 | Leetcode C语言题解之第240题搜索二维矩阵II
  • 【BUG】已解决:java.lang.reflect.InvocationTargetException
  • 设计模式-Git-其他
  • 游戏常用运行库安装包 Game Runtime Libraries Package
  • 期值(future)
  • Linux_线程的同步与互斥
  • “大数据应用场景”之隔壁老王(连载四)
  • 77. Combinations
  • Android系统模拟器绘制实现概述
  • C++11: atomic 头文件
  • C语言笔记(第一章:C语言编程)
  • iOS编译提示和导航提示
  • JS 面试题总结
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • node.js
  • VUE es6技巧写法(持续更新中~~~)
  • Vue--数据传输
  • 测试如何在敏捷团队中工作?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 再次简单明了总结flex布局,一看就懂...
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 我们雇佣了一只大猴子...
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1)svelte 教程:hello world
  • (2)STM32单片机上位机
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (javaweb)Http协议
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (七)Java对象在Hibernate持久化层的状态
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)JPA - JQPL 实现增删改查
  • (转载)hibernate缓存
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net core 依赖注入的基本用发
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Web项目创建比较不错的参考文章
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net的socket示例
  • .net生成的类,跨工程调用显示注释
  • @ModelAttribute 注解
  • @NotNull、@NotEmpty 和 @NotBlank 区别