nodejs面试

1. PM2相关

1. PM2的主要功能?*答案:在Node.js进程挂掉以后自动重启进程,并且能够方便的实现Node.js的集群模式*

2. 如何查看当前是否适合重启服务?*答案:pm2 monit,cpu占用率为0%时就可以*

3. 如果服务器上的所有程序都挂了,用PM2的什么命令能够恢复服务?*答案:pm2 resurrect*

2. MongoDB相关

1. collection中有类似{person: {clothes: {color: 'black'}}}这样的记录,想查询出该记录,查询条件该怎么写?*答案:{"person.clothes.color": 'black'}*

2. 如果在schema中指定了字段A的默认值,但数据库中并没有该字段,查询结果是什么?*答案:查询结果为默认值*

3. 服务器维护相关

1. Linux上如何查看磁盘空间是否满了?*答案:df -h*

2. 如果磁盘空间满了,如何找到该删除哪个文件?*答案:du -h,然后找占磁盘空间大的日志文件,备份文件之类的*

3. 如果删除了文件,但发现磁盘空间并没有变小,该如何处理?*答案:重启读写该文件的进程*

4. 如何用node监听80端口?*答案:只有root用户才能监听80端口,推荐的做法是用nginx做反向代理*

5. request模块第2次HTTP请求默认会带着第1次HTTP请求得到的cookie么?如果想要在第2次请求中带着第1次请求的cookie,该设置哪个选项?*答案:默认不会带cookie,需要设置jar选项为true*

6. 回调和Promise相关

1. node API中的回调函数的参数都遵循什么惯例?*答案:err一般为第一个参数,这被称为错误优先的回调函数*

2. Promise的resolve()方法能传递几个参数给then()方法的参数?*答案:1个*

7. async库的queue在使用中如果遇到卡死的情况该如何处理?*答案:高版本的async有timeout()方法,使用该方法即可避免卡死。低版本的async在需要在处理任务的时候,将任务标记为已处理,然后用queue.running()获取当前正在处理的任务数,当任务数小于一个比较小的值时,将未处理的任务信息打印出来,就是这些任务导致了卡死。然后单独测试这些任务,解决问题即可*

8. (该题可选)是否用过Jenkins,有什么心得?

9. (该题可选)是否用过docker,有什么心得?