置顶 饿了么大前端 Node.js 进阶教程
发布于 1 个月前 作者 lellansin 13792 次浏览 最后一次编辑是 12 天前 来自 分享

untitled4.png

饿了么大前端 Node.js 进阶教程

因为 2016 年面试了很多做 Node.js 的同学,发现大部分做 Node 的同学都是前端转过来的,对后端的知识大多一片空白。所以很难招到比较好的 Node.js 服务端程序员(注意,不是全栈)。

于是出于我们一贯的开源与分享精神,我们筹备了这个名字叫《如何通过饿了么 Node.js 面试》的开源的 Node.js 进阶教程。

github 仓库地址:https://github.com/ElemeFE/node-interview

导读

本教程包含 2~3 年经验的 Node.js 服务端需要知道的知识点。

需要注意的是, 并不适用于零基础的同学, 你需要有一定的 JavaScript/Node.js 基础, 并且有一定的工作经验. 另外本教程的重点更准确的说是服务端基础中 Node.js 程序员需要了解的部分.

稳重将一些常见的问题划分归类, 每类标明涵盖的一些覆盖点, 并且列举几个常见问题, 通常这些问题都是 2~3 年工作经验需要了解或者面对的. 如果你对某类问题感兴趣, 或者想知道其中列举问题的答案, 可以通过该类下方的 阅读更多 查看更多的内容.

整体上大纲列举的并不是很全面, 细节上覆盖率不高, 很多讨论只是点到即止, 希望大家带着问题去思考.

Js 基础问题

与前端 Js 不同, 后端是直面服务器的, 更加偏向内存方面.

常见问题

  • js 中什么类型是引用传递, 什么类型是值传递? 如何将值类型的变量以引用的方式传递? [more]
  • js 中, 0.1 + 0.2 === 0.3 是否为 true ? 在不知道浮点数位数时应该怎样判断两个浮点数之和与第三数是否相等?
  • const 定义的 Array 中间元素能否被修改? 如果可以, 那 const 的意义是? [more]
  • JavaScript 中不同类型以及不同环境下变量的内存都是何时释放? [more]

阅读更多

模块

常见问题

  • a.js 和 b.js 两个文件互相 require 是否会死循环? 双方是否能导出变量? 如何从设计上避免这种问题? [more]
  • 如果 a.js require 了 b.js, 那么在 b 中定义全局变量 t = 111 能否在 a 中直接打印出来? [more]
  • 如何在不重启 node 进程的情况下热更新一个 js/json 文件? 这个问题本身是否有问题? [more]

阅读更多

事件/异步

常见问题

  • Promise 中 .then 的第二参数与 .catch 有什么区别? [more]
  • Eventemitter 的 emit 是同步还是异步? [more]
  • 如何判断接口是否异步? 是否只要有回调函数就是异步? [more]
  • nextTick, setTimeout 以及 setImmediate 三者有什么区别? [more]
  • 如何实现一个 sleep 函数? [more]
  • 如何实现一个异步的 reduce? (注:不是异步完了之后同步 reduce) [more]

阅读更多

进程

常见问题

  • 进程的当前工作目录是什么? 有什么作用? [more]
  • child_process.fork 与 POSIX 的 fork 有什么区别? [more]
  • 父进程或子进程的死亡是否会影响对方? 什么是孤儿进程? [more]
  • cluster 是如何保证负载均衡的? [more]
  • 什么是守护进程? 如何实现守护进程? [more]

阅读更多

IO

常见问题

  • Buffer 一般用于处理什么数据? 其长度能否动态变化? [more]
  • Stream 的 highWaterMark 与 drain 事件是什么? 二者之间的关系是? [more]
  • Stream 的 pipe 的作用是? 在 pipe 的过程中数据是引用传递还是拷贝传递? [more]
  • 什么是文件描述符? 输入流/输出流/错误流是什么? [more]
  • console.log 是同步还是异步? 如何实现一个 console.log? [more]
  • 如何同步的获取用户的输入? [more]
  • Readline 是如何实现的? (有思路即可) [more]

阅读更多

Network

常见问题

  • cookie 与 session 的区别? 服务端如何清除 cookie? [more]
  • HTTP 协议中的 POST 和 PUT 有什么区别? [more]
  • 什么是跨域请求? 如何允许跨域? [more]
  • TCP/UDP 的区别? TCP 粘包是怎么回事,如何处理? UDP 有粘包吗? [more]
  • TIME_WAIT 是什么情况? 出现过多的 TIME_WAIT 可能是什么原因? [more]
  • ECONNRESET 是什么错误? 如何复现这个错误?
  • socket hang up 是什么意思? 可能在什么情况下出现? [more]
  • hosts 文件是什么? 什么叫 DNS 本地解析?
  • 列举几个提高网络传输速度的办法?

阅读更多

OS

常见问题

  • 什么是 TTY? 如何判断是否处于 TTY 环境? [more]
  • 不同操作系统的换行符 (EOL) 有什么区别? [more]
  • 服务器负载是什么概念? 如何查看负载? [more]
  • ulimit 是用来干什么的? [more]

阅读更多

错误处理/调试/优化

常见问题

  • 怎么处理未预料的出错? 用 try/catch ,domains 还是其它什么? [more]
  • 什么是 uncaughtException 事件? 一般在什么情况下使用该事件? [more]
  • domain 的原理是? 为什么要弃用 domain? [more]
  • 什么是防御性编程? 与其相对的 let it crash 又是什么?
  • 为什么要在 cb 的第一参数传 error? 为什么有的 cb 第一个参数不是 error, 例如 http.createServer?
  • 为什么有些异常没法根据报错信息定位到代码调用? 如何准确的定位一个异常? [more]
  • 内存泄漏通常由哪些原因导致? 如何分析以及定位内存泄漏? [more]

阅读更多

整理中的专题

  • 测试
  • util
  • 存储
  • 安全

最后

目前 repo 处于施工现场的情况,如果发现问题欢迎在 issues 中指出。如果有比较好的问题/知识点/指正,也欢迎提 PR。

另外关于 Js 基础 是个比较大的话题,在本教程不会很细致深入的讨论,更多的是列出一些重要或者更服务端更相关的地方,所以如果你拿着《JavaScript 权威指南》给教程提 PR 可能不会采纳。本教程的重点更准确的说是服务端基础中 Node.js 程序员需要了解的部分。

82 回复

前几天在github上看到你们这个面试啊,excited。

可是只有我是从node入门写着写着变成浏览器端的了么。。。而且还觉得,nodejs没有浏览器端好玩?

超棒的~ 饿了么也跳进weex的坑了

已 star ! 期待 eleme 越来越强! 👏

顶一下 写的很nice 楼主对linux有很深入的了解

弱弱的问一句,饿了么大前端进阶 == 资深nodejs后端吗?为什么放在这个章节下面,有些小好奇。一直以为nodejs做后端是一个很冷门的路子,走的人不多。看完前面的面试题后,我感觉nodjes的后端路子还是能走的很精彩的; BTW:写这份面试题的人,一定是一个linux服务端大牛(从守护进程的实现感受到,不甘使用现有工具,努力造轮子的心); Ps:最近在找nodejs后端相关工作,希望有机会聊聊:)

很好,目前自学node中!

已收藏~~~ 对于自学者太重要了

感谢分享

来自酷炫的 CNodeMD

比较全的Node后端面试题。

太棒啦,github已粉

2017.3.1 更新 Network 专题, 添加在线阅览页 https://elemefe.github.io/node-interview/

network的链接写错了

感谢分享,在对的时间遇到对的资源,嘿嘿

@reverland 服务器端比浏览器好玩多了。我现在es7直接在node上玩,连babel都不用。webpack之类的更不用动。爽的很。

赞一下,这个用来查漏补缺还是挺不错的

好东西啊😝

来自酷炫的 CNodeMD

赞 PS: markdown里的JS的完整书写(JavaScript),第二个S要大写吧

支持下饿了么大前端

天天啥都用现成的库,导致我现在狗屁不通啊!!!!

@lileilei 会用库也是一种技能啊

更新了 os, 错误处理 两个专题, 感谢各位支持 ( ̄▽ ̄)~*

学习了 支持下

赞,大前端牛逼

从头到尾撸了一遍感觉压力好大

看完之后感觉自己这几年的nodejs白用了

赞<br/><br/><a class=“form” href=“https://github.com/shinygang/Vue-cnodejs”>I‘m webapp-cnodejs-vue</a>

这个太好了

写的不错,最近在看,感觉大前端就是各种端,各种引擎,各种node架构起来的各种优化

收藏了,支持下

回到顶部