前端面试2021(NodeJS篇)

1.什么是NodeJS,NodeJS有哪些特点

NodeJS是一个基于Chrome V8引擎的JavaScript运行时环境
JavaScript运行时环境:可以脱离了浏览器环境,直接运行js代码
基于Chrome V8 引擎:解释执行js代码的效率非常高
非阻塞IO:NodeJS环境中提供了同步和异步的文件IO处理

2.使用NodeJS的文件模块,使用同步的方式创建文件并向文件中写入文本数据

         const fs = require('fs')
        const fd = fs.openSync(__dirname+'/index.html','w')
        fs.writeSync(fd,'内容')
        fs.closeSync(fd)
    fs.writeFileSync(__dirname + '/index.html', '内容')

3.使用NodeJs的文件模块,使用同步的方式从文件中读取内容并展示到页面中

         const fs = require('fs')
        const fd = fs.openSync(__dirname + '/index.html')
        const content = fs.readSync(fd, 'utf-8')
        fs.closeSync(fd)
    const content = fs.readFileSync(__dirname + '/index.html', 'utf-8')

4.简述NodeJS的文件模块,同步操作函数和异步操作函数的优缺点

同步函数的特点,编写的代码,从上到下按照编写顺序依次执行,上一行代码没有执行完成的情况下,下一行代码处于阻塞、等待状态
优点:如果编写的代码,后面的代码需要依赖前面代码的执行结果,此时同步方式更加符合开发习惯
缺点:在一些代码互相没有依赖的情况下,同步执行的代码比较消耗时间
异步函数的特点,编写代码从上到下的顺序,但是执行过程中下一行代码不会等待上一行代码执行完成后采取执行,而是上一行代码开始执行,下一行代码紧接着直接执行
优点:如果编写的代码,后面的代码和前面的代码如果没有依赖关系,异步执行的方式更加节省时间,在效率上有很大的提升
缺点:在一些代码互相有依赖的情况下, 编写方式只能通过回调函数的方式执行,否则直接按照顺序方式编写的代码执行会出现问题

5.NodeJS如何初始化项目应用

NodeJS为了方便前端/后端项目的独立管理,通过node init命令初始化一个项目文件夹为NodeJS应用,初始化完成后会在文件夹中生成标志性配置文件package.json,文件中存储了当前项目的初始配置

6.简述package.json配置文件中都有哪些常见配置项

package.json配置文件是NodeJS应用标志性配置文件,包含了
name :项目名称
author:项目作者
version:项目版本
scripts:项目脚本命令
dependencied:项目第三方依赖
main:项目入口文件

7.NodeJS中如何添加第三方模块

一般情况下会用node init命令初始化一个Node应用,然后在应用中通过npm命令安装第三方模块
npm install <模块名称> -g
或 npm install <模块名称> -S

8.npm命令安装模块,添加-g选项和-S选项有什么区别

-g选项表示全局安装,安装的模块在当前计算机中的任何NodeJS应用中都可以访问
-S选项表示局部安装/项目安装,安装的模块只在当前项目中使用,项目开发中除了通过模块之外建议使用项目安装的方式

9.什么是模块化,什么是模块化开发

模块化就是将项目中不同的功能拆分成多个独立的模块,通过模块之间的互相组合完成一定功能的操作过程
模块化开发就是完成模块化拆分和最后的模块化合并的开发模式

10.module.exports和exports有什么区别

NodeJS模块化开发时,遵循CommonJS规范的情况下导出模块使用的对象
module式NodeJS给js模块提供的一个内置对象,一般指代当前js文件/模块
module对象中包含了一个对象exports用于导出数据,同时NodeJS为了方便数据导出操作,通过引用赋值的方式将module.exports赋值给exports,可以使用exports导出数据,具体使用时需要注意模块实际导出数据使用的依然是module.exports,所以在这两个关键词混合操作时注意导出数据的有效性问题

11.http模块如何创建并启动一个web服务

const http = require('http')
const server = http.createServer((req,res)=>{
      //接收并处理用户请求
})
server.listen(3000,'0.0.0.0',err=>{
    err ? console.log(err) : console.log('服务器正常启动)
})

12.什么是IP地址,什么是端口,什么是网络协议,你都知道哪些常见的网络协议

IP地址:全程Internet Protocol,网际互联协议,主要用于规范和描述在互联网上给你的计算机之间的网络连接;具体体现在使用固定的规则表示互联上的唯一计算机
IP地址主要使用版本使用二进制表示表示的IPv4和使用十六进制表示的IPv6,现阶段主流IP地址主要是IPv4,IPv6地址已经开始部署使用,但是软件开发时依然没有作为主要的参考地址
端口:全称port,数据通信端口,描述了一台计算机上可以安装很多软件,每个软件连接网络的时候都需要数据通信,端口的出现就是为了保证每个软件都可以独立的进行网络数据通信
网络协议:全程protocol,网络数据通信协议,描述了工作在网络上的多台计算机进行数据正确的共享的格式和规则
常见的网络协议:
ftp:file transfer protocol 文件传输协议
http : hyper text transfer protocol 超文本传输协议
https: hyper text transfer protocol security 安全的超文本传输协议
smtp:simple mail transfer protocol 简单邮件传输协议
ssh:security shell 安全外壳协议,也成为安全隧道协议
TCP:Transfer Control Protocol 传输控制协议

13.简述一个请求从发起到看到了浏览器页面的过程中都发生了什么事

浏览器输入URL地址发起请求后
-工作在网络上的DNS域名解析服务器接收到的域名,解析出域名对应的IP地址
-请求继续向具体的IP地址发送,由网络上IP地址对应的服务器主机接收到请求
-服务器主机根据请求端口,找到服务器主机上端口对应的WEB服务器
-WEB服务器根据请求路径,交给对应的业务模块进行对应的业务处理,包装处理结果

-处理结果包装成响应数据,返回给客户端
-客户端浏览器解析响应数据,渲染展示对应的页面

14.简述HTTP和HTTPS协议的联系和区别

HTTP协议和HTTPS协议,都是超文本传输协议,HTTPS提供了安全数据通道,让工作在网络上的超文本数据在传输的时候具备了保密功能,保障了数据的安全传输

15.什么是同步,什么是异步,项目中你是怎么使用的

同步是多个任务按照顺序执行,前面的任务执行完成后才能开始执行下一个任务
异步是多个任务按照执行顺序同时调用执行,前面的任务执行是否完成不影响下一个任务的执行过程
项目开发中如果上一个执行任务的结果,对下一个任务有影响,需要按照同步的方式进行处理,如读取HTML文件内容响应给用户的操作
项目开发中如果上一个执行任务的结果,对下一个任务没有影响,可以通过异步的方式进行处理,如Node http模块中监听请求和启动服务就可以执行异步处理

16.npm 命令的作用是什么?都有哪些常见的操作命令

npm命令主要用于管理NodeJS环境中的第三方模块
npm instal 安装依赖
npm config 用于配置信息
npm uninstall 卸载依赖

17.JavaScript、NodeJS和Express有什么区别和联系

Javascript是一个编程语言
NodeJS是一个Javascript运行时环境
Express是一个基于NodeJS的WEB应用开发框架

18.什么是路由

路由是WEB应用开发中的一个组件,用于接收用户请求并分发到不同的业务函数进行处理的过程,路由主要包含请求地址和处理函数映射关系

19.简述GET请求和POST请求的联系个区别

GET请求和POST请求都是HTTP1.1规范中的请求方式
GET请求主要描述向服务器获取数据的请求,可以附带参数,参数会出现在URL地址的最后面?符号的后面,以明文的形式进行传递,参数只能传递字符串
POST请求主要描述向服务器请求新增数据,可以附带参数,参数包含在请求体中不会显示在可视界面上,参数可以是任意类型的数据

20.Express中如何处理静态资源的

Express中通过内置中间件处理静态资源
app.use(express.static("静态文件存放文件夹名称"))

21.GET请求的参数有什么特点,Express中怎么接收的

GET请求主要是浏览器中的地址栏、超链接、

你可能感兴趣的:(前端面试2021(NodeJS篇))