mirror of
https://github.com/ElemeFE/node-interview.git
synced 2026-01-25 16:46:33 +00:00
Fix typos
This commit is contained in:
parent
46dfab6cf1
commit
a0881b3608
12
README.md
12
README.md
@ -36,9 +36,9 @@ Hi, 欢迎来到 ElemeFE, 如标题所言本教程的目的是教你如何通过
|
||||
|
||||
> 与前端 Js 不同, 后端是直面服务器的, 更加偏向内存方面, 对于一些更基础的问题也会更加关注.
|
||||
|
||||
* `[Doc]` Modules (模块)
|
||||
* `[Doc]` Globals (全局变量)
|
||||
* `[Doc]` VM (虚拟机)
|
||||
* [`[Doc]` Modules (模块)](https://nodejs.org/dist/latest-v6.x/docs/api/modules.html)
|
||||
* [`[Doc]` Globals (全局变量)](https://nodejs.org/dist/latest-v6.x/docs/api/globals.html)
|
||||
* [`[Doc]` VM (虚拟机)](https://nodejs.org/dist/latest-v6.x/docs/api/vm.html)
|
||||
|
||||
### 常见问题
|
||||
|
||||
@ -105,11 +105,11 @@ Hi, 欢迎来到 ElemeFE, 如标题所言本教程的目的是教你如何通过
|
||||
|
||||
## Network
|
||||
|
||||
*### 常见问题
|
||||
### 常见问题
|
||||
|
||||
* HTTP 协议中的 POST 和 PUT 有什么区别?
|
||||
`TCP/UDP` 的区别? `TCP` 粘包是怎么回事,如何处理? `UDP` 有粘包吗?
|
||||
`time_wait` 是什么情况?出现过多的 `close_wait` 可能是什么原因?
|
||||
* `TCP/UDP` 的区别? `TCP` 粘包是怎么回事,如何处理? `UDP` 有粘包吗?
|
||||
* `time_wait` 是什么情况?出现过多的 `close_wait` 可能是什么原因?
|
||||
* socket hang up 是什么意思? 一般什么情况下出现?
|
||||
* 列举几个提高网络传输速度的办法?
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ Javascript 的类型判断其实是个挺折磨人的话题, 不然也不会有
|
||||
|
||||
在面试时, 作用域并不是一个很好问的知识点, 一般会问的是 `es6 中 let 与 var 的区别`, 或者列举代码, 然后通过对代码的解读来看你对作用域的掌握比较方便.
|
||||
|
||||
印象中那本《你不知道的 Javascript》讲的很好了, 有兴趣可以去看那本书.
|
||||
印象中那本 [《你不知道的 Javascript》](https://book.douban.com/subject/26351021/) 讲的很好了, 有兴趣可以去看那本书.
|
||||
|
||||
## 引用传递
|
||||
|
||||
@ -68,7 +68,7 @@ while(true)
|
||||
```javascript
|
||||
let arr = [];
|
||||
while(true)
|
||||
arr.push(1);
|
||||
arr.push();
|
||||
```
|
||||
|
||||
如果 push 的是 `Buffer` 情况又会有什么区别?
|
||||
@ -99,12 +99,10 @@ var replaceThing = function () {
|
||||
setInterval(replaceThing, 1000)
|
||||
```
|
||||
|
||||
比如上述情况中 unused 的函数中持有了 originalThing 的引用, 使得每次旧的对象不会释放从而导致内存泄漏 (例子出自[《Node.js 垃圾回收》](https://eggggger.xyz/2016/10/22/node-gc/))
|
||||
比如上述情况中 `unused` 的函数中持有了 `originalThing` 的引用, 使得每次旧的对象不会释放从而导致内存泄漏 (例子出自[《Node.js 垃圾回收》](https://eggggger.xyz/2016/10/22/node-gc/))
|
||||
|
||||
当然对于一些高水平的同学, 要求能清楚的了解 v8 内存 GC 的机制, 懂得内存快照等 (之后会在`调试/优化`的小结中讨论) 了. 比如 V8 中不同类型的数据存储的位置, 在内存释放的时候不同区域的不同策略等等.
|
||||
|
||||
包括说闭包应用的场景, 什么样的场景用闭包比较好, 如何写出
|
||||
|
||||
## ES6 新特性
|
||||
|
||||
推荐阅读阮一峰的 [《ECMAScript 6 入门》](http://es6.ruanyifeng.com/)
|
||||
@ -113,4 +111,8 @@ setInterval(replaceThing, 1000)
|
||||
|
||||
深入的话, es6 有太多细节可以深入了. 比如结合 `引用` 的知识点来询问 `const` 方面的知识. 结合 `{}` 的使用与缺点来谈 `Set, Map` 等. 比如私有化的问题与 `symbol` 等等.
|
||||
|
||||
其他像是 `闭包是什么?` 这种问烂了问题已经感觉没必要问了, 取而代之的是询问闭包应用的场景更加合理. 比如说, 如果回答者通常使用闭包实现数据的私有, 那么可以接着问 es6 的一些新特性 (例如 `class`, `symbol`) 能否实现私有, 如果能的话那为什么要用闭包? 亦或者是什么闭包中的数据/私有化的数据的内存什么时候释放? 等等.
|
||||
|
||||
`...` 的使用上, 如何实现一个数组的去重 (使用 Set 可以加分).
|
||||
|
||||
暂时写上这些, 之后会慢慢整理, 如果内容比较多可能单独归一类来讨论.
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
> 如何在不重启 node 进程的情况下热更新一个 js/json 文件? 这个问题本身是否有问题?
|
||||
|
||||
可以清楚掉 require 的缓存重新 require, 是具体情况还可以用 vm 模块重新执行.
|
||||
可以清除掉 `require` 的缓存重新 `require`, 是具体情况还可以用 VM 模块重新执行.
|
||||
|
||||
当然这个问题可能是典型的 [`X-Y Problem`](http://coolshell.cn/articles/10804.html), 使用 js 实现热更新很容易碰到 v8 优化之后各地拿到缓存的引用导致热更新 js 没意义. 当然热更新 json 还是可以简单一点比如用读取文件的方式来热更新, 但是这样也不如从 redis 之类的数据库中读取比较合理.
|
||||
|
||||
@ -26,11 +26,11 @@
|
||||
|
||||
### 模块机制
|
||||
|
||||
node 的基础中毫无疑问的应该是有关于模块机制的方面的, 也即 require 这个模块的一些原理的问题.
|
||||
node 的基础中毫无疑问的应该是有关于模块机制的方面的, 也即 `require` 这个内置功能的一些原理的问题.
|
||||
|
||||
关于模块互相引用之类的, 不了解的推荐先好好读读[官方文档](https://nodejs.org/dist/latest-v6.x/docs/api/modules.html)
|
||||
关于模块互相引用之类的, 不了解的推荐先好好读读[官方文档](https://nodejs.org/dist/latest-v6.x/docs/api/modules.html).
|
||||
|
||||
然后官方文档已经说得很清楚了, 每个 node 进程只有一个 vm 的上下文, 不会跟浏览器相差多少, 模块机制在文档中也描述的非常清楚了:
|
||||
其实官方文档已经说得很清楚了, 每个 node 进程只有一个 VM 的上下文, 不会跟浏览器相差多少, 模块机制在文档中也描述的非常清楚了:
|
||||
|
||||
```javascript
|
||||
function require(...) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user