Node.js 按图索骥

根据饿了么的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 注入等。
Topic:#node