基础——Node面试题库

一.NodeJs的特性主要有哪些?
1.单线程,单线程的好处,减少了内存开销,操作系统的内存换页。
2.非阻塞I/O, 不会傻等I/O语句结束,而会执行后面的语句。
3.事件机制,事件环,不管是新用户的请求,还是老用户的I/O完成,都将以事件方式加入事件环,等待调度。

二.NodeJs适用于哪些场景开发?
Nodejs适用于在高并发、I/O密集、少量业务逻辑的场景

三.你是怎么调试NodeJs呢?有哪些方法?

四.你知道NodeJs是如何工作的吗?

五.NodeJs是基于单线程的吗?为什么?

六.NodeJs的回调有什么用吗?

七.Node的全局变量有哪些?

八.Node的全局对象有哪些?

九.请解释下你对EventEmitter的理解

十.你知道什么是REPL吗?

十一.npm是干什么用的?它有什么优缺点?有没有类似的方案?

十二.说说你对package.json的理解,它都有哪些作用?
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

十三.你了解NodeJs的子进程吗?

十四.你有使用过NodeJs吗?说说你对它的理解,它的运用场景有哪些呢?

十五.你有使用过express和koa吗?它俩有什么区别?
koa和express都是同一批团队开发的,可以把koa叫做express的一个升级版本吧,express里面主要使用es5的语法,处理异步用的是回调函数,而koa则不用经历这种回调地狱,Koa1和Koa2分别采用了ES6中的Generator函数+yield语句+Promise语句和ES7中的async/await+Promise来处理异步操作。

十六.说说你对Node模块的理解

十七.Node的模块加载机制是什么?

十八.Node的模块缓存在哪?

十九.假设有a.js、b.js 两个模块相互引用,会有什么问题?是否为陷入死循环?

二十.module.exports与exports的区别是什么?

二十一.说说你对线程模型的理解

二十二.说说你对EventLoop的理解

二十三.I/O多路复用轮询技术select和epoll的区别是什么?

二十四.常用的主流消息中间件都有哪些?

二十五.nodejs中require方法是同步还是异步操作?为什么?

二十六.yarn和npm有什么区别?

二十七.npm i和npm install有什么区别?

二十八.你对Mongodb有了解吗?

二十九.使用npm安装模块时,如何选择–save和–save-dev?

三十.require和import有什么区别?

三十一.CommandJS,AMD,CMD分别是什么
command是服务器端的,是同步的如nodejs
AMD和CMD是浏览器端的,是异步的,如requirejs
commandJS是服务器端模块的规范化,node就采用的这种规范,一个单独的文件就是一个模块,加载模块采用require。command加载模块是同步进行的,所有的加载都执行后才能执行后面的操作。command主要用于服务器的编程所以很多需要加载的文件已经存在在本地磁盘上了,加载起来比较快,不用考虑异步加载的方式。而浏览器中加载文件中采用异步加载的方式。AMD,CMD来啦
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出
CMD是SeaJS在推广过程中对模块化定义的规范化产出
AMD和CMD最明显的区别就是在模块定义时对依赖的处理不同
AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块
CMD推崇就近依赖,只有在用到某个模块的时候再去require

三十二.介绍下express中间件
作用:主要是用来处理请求的,本质就是个函数
  中间件本身是一个方法,接收3个参数:request请求对象、response响应对象、next下一个中间件(可选参数,需要调用下一个中间件时使用)
  当请求进来,会从第一个中间件开始进行匹配。如果匹配则进入,如果不匹配,则向后依次对比匹配
 主要场景:将一个请求的处理过程,分发到多个环节中,目的效率高,便于维护。即每个环节专门干一件事
 当一个请求进入中间件之后,如果想请求进入下一个中间件,必须通过next()交出控制权
所以next()是一个方法,用于调用下一个中间件

三十三.express常见中间件
1.应用级别的中间件

app.use(function (req, res, next) {/*表示匹配任何路由*/
    console.log(new Date())
    next()/*表示匹配完成这个中间件就继续往下执行。*/
})

2.路由中间件

app.get("/", function (req, res,next) {
    console.log("匹配成功");
    next()
})

3.错误处理中间件(404页面也是属于其中的一种)

app.use((req,res)=>{
    res.status(200).send("这个是404 没有路由匹配到!")
})

4.内置中间件(例如:静态路由匹配)

app.use('/static',express.static("public"));

5.第三方中间件
post请求在express中是不能直接获取的,但是我们可以使用第三方中间件body-parser模块来获取。

猜你喜欢

转载自blog.csdn.net/qq_37282683/article/details/107693815