面试虽然不是传统意义上学生时代的考试,但也是毕业之后进入社会上的必经步骤,也算是一种考试了。既然是考试,就一定会分出三六九等,根据应聘的岗位不同,面试的难度也不相同。对于java的面试准备来说,少不了的一项就是面试题的收集整理。如果应聘的岗位是初级java程序员的话,面试题就会偏简单基础一些,而对于高级java工程师和java架构师来说,面试题的难度肯定加大了。所以今天为应聘岗位高的朋友准备了10道Nodejs面试题,希望能够帮助到有需要的朋友们。
1、用Nodejs的优点是什么?有哪些缺点?
答:优点:(1)事件驱动,通过闭包很容易实现客户端的生命活期;(2)不用担心多线程,锁,并行计算的问题;(3)V8引擎速度非常快;(4)对于游戏来说,写一遍游戏逻辑代码,前端后端通用。
缺点:(1)Nodejs更新很快,可能会出现版本兼容;(2)Nodejs还不算成熟,还没有大制作;(3)Nodejs不像其他的服务器,对于不同的链接,不支持进程和线程操作。
2、为什么Nodejs是单线程的?
答:Nodejs使用的是单线程没错,但是通过异步处理的方式,可以处理大量的数据吞吐量,从而有更好的性能和扩可扩展性。
3、Nodejs和ajax的区别是什么?
答:Nodejs和ajax也就是asynchronous JavaScript and xml,都是通过JavaScript来表现的,但是他们的目的截然不同。Ajax是设计用来动态的更新页面的某个区域,从而不需要更新整个页面。Nodejs是用来开发客户服务器类型应用的。
4、 Nodejs是如何支持多处理器平台的?
答:Cluster模块是用来支持这方面的。它可以允许多个nodejs工作进程运行在相同的端口上。
5、如何避免回调地狱?
答:(1)模块化:将回调函数转换为独立的函数;(2)使用流程控制库,例如[aync];(3)使用Promise;(4)使用aync/await。
6、什么是Promise?
答:Promise可以帮助我们更好地处理异步操作。下面的实例中,100ms后会打印result字符串。catch用于错误处理。多个Promise可以链接起来。
new Promise((resolve, reject) =>
{
setTimeout(() =>
{
resolve('result');
}, 100)
})
.then(console.log)
.catch(console.error);
7、退出代码是什么?有哪些退出代码?
答:退出代码是指中断nodejs运行时返回的代码。有这么几种unused, uncaught fatal exception, fatal error, non function internal exception handler, internal exception handler run time failure,internal JavaScript evaluation failure。
8、解释Node.js Web应用程序架构?
答:Web应用程序区分为4层:客户端层:客户端层包含可以向Web服务器发出HTTP请求的Web浏览器,移动浏览器或应用程序。服务器层:服务器层包含Web服务器,它可以拦截客户端发出的请求并将响应传递给它们。业务层:业务层包含Web服务器用于执行所需处理的应用程序服务器。 该层通过数据库或一些外部程序与数据层交互。数据层:数据层包含数据库或任何数据源。
9、介绍一下Node事件循环的流程?
答:在进程启动时,Node便会创建一个类似于while(true)的循环,每执行一次循环体的过程我们成为Tick。
每个Tick的过程就是查看是否有事件待处理。如果有就取出事件及其相关的回调函数。然后进入下一个循环,如果不再有事件处理,就退出进程。
10、 在每个tick的过程中,如何判断是否有事件需要处理呢?
答:(1)每个事件循环中有一个或者多个观察者,而判断是否有事件需要处理的过程就是向这些观察者询问是否有要处理的事件。
(2)在Node中,事件主要来源于网络请求、文件的I/O等,这些事件对应的观察者有文件I/O观察者,网络I/O的观察者。
(3)事件循环是一个典型的生产者/消费者模型。异步I/O,网络请求等则是事件的生产者,源源不断为Node提供不同类型的事件,这些事件被传递到对应的观察者那里,事件循环则从观察者那里取出事件并处理。
(4)在windows下,这个循环基于IOCP创建,在*nix下则基于多线程创建。
上面就是今天为大家整理的NodeJS面试题,一共有10道,数量上不多,但是每一道题都是重点,希望大家都可以学会这10道NodeJS面试题的题目,会在Java面试中用到的。最后想系统的学习NodeJS的话,可以观看“带你快速掌握NodeJS”这门课程,在这个学习java的教程里,可以一步一步地让大家快速地掌握NodeJS这样一个前端核心框架,以适应公司的开发需要。
QCode09-04 14:38
Code大师09-04 14:50
不写代码你养我啊08-23 11:14
不写代码你养我啊09-17 18:02
要学习了06-18 18:13