来源:https://github.com/ElemeFE/node-interview/tree/master/sections/zh-cn
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
[Doc]
Buffer[Doc]
String Decoder (字符串解码)[Doc]
Stream (流)[Doc]
Console (控制台)[Doc]
File System (文件系统)[Doc]
Readline[Doc]
REPL
常见问题
- 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]
错误处理/调试
[Doc]
Errors (异常)[Doc]
Domain (域)[Doc]
Debugger (调试器)[Doc]
C/C++ 插件[Doc]
V8[Point]
内存快照[Point]
CPU profiling
常见问题
- 怎么处理未预料的出错? 用 try/catch ,domains 还是其它什么? [more]
- 什么是
uncaughtException
事件? 一般在什么情况下使用该事件? [more] - domain 的原理是? 为什么要弃用 domain? [more]
- 什么是防御性编程? 与其相对的 let it crash 又是什么?
- 为什么要在 cb 的第一参数传 error? 为什么有的 cb 第一个参数不是 error, 例如 http.createServer?
- 为什么有些异常没法根据报错信息定位到代码调用? 如何准确的定位一个异常? [more]
- 内存泄漏通常由哪些原因导致? 如何分析以及定位内存泄漏? [more]
测试
常见问题
- 为什么要写测试? 写测试是否会拖累开发进度?[more]
- 单元测试的单元是指什么? 什么是覆盖率?[more]
- 测试是如何保证业务逻辑中不会出现死循环的?[more]
- mock 是什么? 一般在什么情况下 mock?[more]
util
常见问题
- HTTP 如何通过 GET 方法 (URL) 传递 let arr = [1,2,3,4] 给服务器? [more]
- Node.js 中继承 (util.inherits) 的实现? [more]
- 如何递归获取某个文件夹下所有的文件名? [more]
存储
常见问题
- 备份数据库与 M/S, M/M 等部署方式的区别? [more]
- 索引有什么用,大致原理是什么? 设计索引有什么注意点? [more]
- Monogdb 连接问题(超时/断开等)有可能是什么问题导致的? [more]
- 什么情况下数据会出现脏数据? 如何避免? [more]
- redis 与 memcached 的区别? [more]
安全
[Doc]
Crypto (加密)[Doc]
TLS/SSL[Doc]
HTTPS[Point]
XSS[Point]
CSRF[Point]
中间人攻击[Point]
Sql/Nosql 注入
常见问题
- 加密是如何保证用户密码的安全性? [more]
- TLS 与 SSL 有什么区别? [more]
- HTTPS 能否被劫持? [more]
- XSS 攻击是什么? 有什么危害? [more]
- 过滤 Html 标签能否防止 XSS? 请列举不能的情况? [more]
- CSRF 是什么? 如何防范? [more]
- 如何避免中间人攻击? [more]
注意:本文归作者所有,未经作者允许,不得转载