Node.js 按图索骥

2017-06-02

根据饿了么的node-interview按主题整理了node学习资料,方便日后按图索骥,检索学习。

1. Javascript 基础问题

2. 模块

  • 模块机制,先阅读官方文档。深入理解CommonJS规范。
  • 热更新,理解require.cache,以及清空cache的问题。是否应该将可变的数据存到数据库?
  • 上下文,一般情况只有一个上下文,可以使用vm模块在一个沙盒环境运行js避免上下文被污染。参考VM官方文档
  • 包管理,深入理解npm,yarn,语义化版本等。参考npm官方文档

3. 事件/异步

4. 进程

  • 关于进程以及操作系统,推荐阅读《Unix环境高级编程》
  • 关于Node.js中的process对象,推荐看官方文档
  • 配置。可以通过设置环境变量,或者使用dotenv等库读取配置文件。
  • 标准流。熟悉process.stderr、process.stdout和process.stdin。
  • child process。可以参考之前翻译过的文章,熟悉child_process模块的用法。
  • 理解cluster模块。
  • 理解IPC进程间通信。
  • 理解守护进程的概念和实现

5. IO

  • Buffer是Node.js中用于处理二进制数据的类,与IO相关的操作均基于Buffer。官方文档。理解ES6的TypedArray。
  • String Decoder。将Buffer转成string。
  • Stream。可以参考之前翻译过的文章
  • 理解pipe的用法和实现
  • 了解Console.log的实现,基于process.stout。
  • 熟悉fs模块的使用。官方文档
  • 理解标准输入输出,理解shell和进程,ssh的使用和实现等。

6. NetWork

7. OS

8. 错误处理/调试

  • 理解常见的错误类型,JS错误、系统错误、自定义错误、断言错误。
  • 理解Node.js中处理错误的几种方式,callback(err, data)、throw/try/catch、EventEmitter的error事件。
  • 理解异步调用的函数,错误栈可能会丢失,比如在setImmediate中的异步调用。
  • 理解防御性编程
  • 知道什么时候Let it crash
  • 理解uncaughtException、unhandledRejection的使用。
  • 知道如何debug,console.log、node-inspector、 built-in debugger、debug module、vscode debug。

9. 测试

  • 理解为什么要写测试。
  • 理解单元测试、集成测试、基准测试、压力测试等。
  • 理解测试相关的一些概念,测试覆盖率Mock等。

10. util

  • 理解url的组成。
  • 熟悉querystring的使用。
  • 熟悉util的一些工具方法。
  • 熟悉常用模块的使用。

11. 存储

  • 理解数据库范式
  • 熟悉SQL的相关概念,主键、外键、索引等。
  • 熟悉Mysql、MongoDB的使用。
  • 理解数据库模式M/M、M/S等,理解事务、数据一致性等概念。
  • 理解redis、memcached,了解zookeeper、kafka、hadoop、spark、storm等。

12. 安全

  • 熟悉crypto模块的使用。
  • 理解HTTPS的认证过程,了解TLS/SSL。
  • 理解常见的Web安全问题以及防御策略,XSS、CSRF、CSP、SQL注入等。
郑超的独立博客