面试要点 nodejs篇

1.node有哪些定时功能?

①setTimeout()
②setInterval()
③setImmediate()
④process.nextTick()
process.nextTick它是在同步任务执行完再执行的,而且是所有异步任务里面最快执行的。位于同步任务和微任务之间执行的

process.nextTick(),效率最高,消费资源小,但会阻塞CPU的后续调用;
setImmediate(),消耗的资源小,也不会造成阻塞,但效率也是最低的;
setTimeout(),精确度不高,消耗资源大,可能有延迟执行的情况发生;

2.node.js的核心内置类库(事件流,文件,网络)

核心事件:EventEmitter, Stream, FS, Net和全局对象
EventEmitter:是node中一个实现观察者模式的类,主要功能是监听和发射消息,用于多模块交互问题
Stream:是基于事件EventEmitter的数据管理模式,有各种不同的抽象接口组成,主要包括可写,可读,可读写,可转换等几种类型
内置的fs模块:
①POSIX文件Wrapper,对应于操作系统的原生文件操作
②文件流 fs.createReadStream和fs.createWriteStream
③同步文件读写,fs.readFileSync和fs.writeFileSync
④异步文件读写, fs.readFile和fs.writeFile

3.node中的异步和同步怎么理解

node是单线程,异步是通过一次次的循环事件队列实现的,同步这是阻塞式的IO,在高并发下是一个很大的性能问题,所以同步一般只在基础框架的启动的时候使用,用来加载配置文件,初始化程序

4.有哪些方式可以进行异步流程的控制?

①多层嵌套回调
②为每一个回调单独写一个函数,函数里面再调用
③用第三方框架例如:asymc,q,promise

5.有哪些方法可以防止程序崩溃?

①try-catch-finally
②EventEmitter/Stream error事件处理
③domain统一控制
④jshint静态检查
⑤jasmine/mocha进行单元测试

6.如何绑定node程序到80端口

①sudo启动(因为默认系统不允许非root用户启动1024以下端口)
②apache、nginx代理
③用操作系统的firewall iptables进行端口重定向

7.rest api

①get 用于获取数据
②delete 用于删除数据
③put 用于更新或者添加数据
④post 用于添加数据

8.express、koa、express的区别

框架定义
express基于nodejs平台,快速、开放、极简的web开发框架
koa基于nodejs平台的下一代web开发框架
egg为企业级框架和应用而生
框架特点
expressa.强大的路由 b.专注于高性能 c.超高测试覆盖率 d.http帮助程序(重定向,缓存等)e.内容协商 f.支持14个以上模板引擎 g.快速生成应用程序
koaa.支持回调函数和异步说明 b.使用洋葱圈模型处理中间件,每个中间件都会执行两次,可以轻易实现后置处理逻辑 c.支持content请求执行上下文
egga.基于koa开发,性能优异 b.提供基于egg定制上层框架的能力 c.高度可扩展的插件机制d.内置多进程管理 e.框架稳定,测试覆盖率高 f.渐进式开发
框架缺点
expressa.支持使用异步编码。但大量api和中间件容易形成回调地狱 b.对错误的处理不够优雅
koaa.session、视图模板,路由,文件上传,日志管理等中间件未官方统一,导致解决方案参差不齐
egg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小邓不爱吃芹菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值