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