Js 基础问题

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

[Basic] 类型判断
    [Basic] 作用域
    [Basic] 引用传递
    [Basic] 内存释放
    [Basic] ES6 新特性

常见问题

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

模块

[Basic] 模块机制
    [Basic] 热更新
    [Basic] 上下文
    [Basic] 包管理

常见问题

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

事件/异步

[Basic] Promise
    [Doc] Events (事件)
    [Doc] Timers (定时器)
    [Point] 阻塞/异步
    [Point] 并行/并发

常见问题

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

进程

[Doc] Process (进程)
    [Doc] Child Processes (子进程)
    [Doc] Cluster (集群)
    [Basic] 进程间通信
    [Basic] 守护进程

常见问题

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

IO

[Doc] Buffer
    [Doc] String Decoder (字符串解码)
    [Doc] Stream (流)
    [Doc] Console (控制台)
    [Doc] File System (文件系统)
    [Doc] Readline
    [Doc] REPL

常见问题

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

Network

[Doc] Net (网络)
    [Doc] UDP/Datagram
    [Doc] HTTP
    [Doc] DNS (域名服务器)
    [Doc] ZLIB (压缩)
    [Point] RPC

常见问题

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

OS

[Doc] TTY
    [Doc] OS (操作系统)
    [Doc] Path
    [Doc] 命令行参数
    [Basic] 负载
    [Point] CheckList

常见问题

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

错误处理/调试

[Doc] Errors (异常)
    [Doc] Domain (域)
    [Doc] Debugger (调试器)
    [Doc] C/C++ 插件
    [Doc] V8
    [Point] 内存快照
    [Point] CPU profiling

常见问题

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

测试

[Basic] 测试方法
    [Basic] 单元测试
    [Basic] 集成测试
    [Basic] 基准测试
    [Basic] 压力测试
    [Doc] Assert (断言)

常见问题

为什么要写测试? 写测试是否会拖累开发进度?
    单元测试的单元是指什么? 什么是覆盖率?
    测试是如何保证业务逻辑中不会出现死循环的?
    mock 是什么? 一般在什么情况下 mock?

util

[Doc] URL
    [Doc] Query Strings (查询字符串)
    [Doc] Utilities (实用函数)
    [Basic] 正则表达式

常见问题

HTTP 如何通过 GET 方法 (URL) 传递 let arr = [1,2,3,4] 给服务器?
    Node.js 中继承 (util.inherits) 的实现?
    如何递归获取某个文件夹下所有的文件名?

存储

[Point] Mysql
    [Point] Mongodb
    [Point] Replication
    [Point] 数据一致性
    [Point] 缓存

常见问题

备份数据库与 M/S, M/M 等部署方式的区别?
    索引有什么用,大致原理是什么? 设计索引有什么注意点?
    Monogdb 连接问题(超时/断开等)有可能是什么问题导致的?
    什么情况下数据会出现脏数据? 如何避免?
    redis 与 memcached 的区别?

安全

[Doc] Crypto (加密)
    [Doc] TLS/SSL
    [Doc] HTTPS
    [Point] XSS
    [Point] CSRF
    [Point] 中间人攻击
    [Point] Sql/Nosql 注入

常见问题

加密是如何保证用户密码的安全性?
    TLS 与 SSL 有什么区别?
    HTTPS 能否被劫持?
    XSS 攻击是什么? 有什么危害?
    过滤 Html 标签能否防止 XSS? 请列举不能的情况?
    CSRF 是什么? 如何防范?
    如何避免中间人攻击?

nodejs常见问题的更多相关文章

  1. NodeJs操作MongoDB之分页功能与常见问题

    NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...

  2. NodeJs操作MongoDB之多表查询($lookup)与常见问题

    NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...

  3. Nodejs ORM框架Sequelize(模型,关联表,事务,循环,及常见问题)

    1.建立连接 const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username ...

  4. 十个最适合 Web 和 APP 开发的 NodeJS 框架

    在浏览器以外运行 JavaScript 对于 JavaScript 爱好者来说非常神奇,同时也肯定是 web 应用程序开发界最受欢迎的进步之一.全球各地的开发者张开双臂拥抱 NodeJS. 对于新手来 ...

  5. [转]七天学会NodeJS

    转:http://nqdeng.github.io/7-days-nodejs/ NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS, ...

  6. 10 个最适合 Web 和 APP 开发的 NodeJS 框架

    在浏览器以外运行 JavaScript 对于 JavaScript 爱好者来说非常神奇,同时也肯定是 web 应用程序开发界最受欢迎的进步之一.全球各地的开发者张开双臂拥抱 NodeJS. 对于新手来 ...

  7. 七天学会NodeJS (原生NodeJS 学习资料 来自淘宝技术团队)

    NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. ...

  8. (一)、NodeJS (转载)

    NodeJS基础                                                 ------ 转载自阿里巴巴 什么是NodeJS JS是脚本语言,脚本语言都需要一个解 ...

  9. HTTP/2 常见问题回答

    常见问题 为什么修订HTTP? HTTP/1.1已经很好的服务Web超过15个年头,但它的劣势开始显现. 载入一个Web页面比之前占用更多的资源(详情可见HTTP压缩页大小统计),有效的载入这些资源很 ...

随机推荐

  1. x509证书相关内容

    什么是证书 X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档.    实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC ...

  2. Hibernate的工作原理及使用的原因

    一.工作原理: 1.读取并解析配置 2.读取并解析映射信息,创建Session Factory 3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Sess ...

  3. Typescript 和 Javascript之间的区别

    TypeScript 和 JavaScript 是目前项目开发中较为流行的两种脚本语言,我们已经熟知 TypeScript 是 JavaScript 的一个超集,但是 TypeScript 与 Jav ...

  4. vim基本命令总结

    编辑模式下i 从光标所在位置前开始插入文本I 将光标移动到当前行行首,然后在其前插入文本a 用于在光标当前所在位置之后追加新文本A 将光标移动到所在行行尾,在那里插入新文本o 在光标所在行的下面新开一 ...

  5. java static关键字和代码块

    static关键字 代码块 方法重写 1. 方法重写的特点: 2. 注意事项: static关键字 为什么需要学习static关键字? 针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑 ...

  6. prometheus监控

    一. 部署prometheus 1.1 下载 wget https://github.com/prometheus/prometheus/releases/download/v2.7.1/promet ...

  7. 硬件笔记之MacMini开启HiDPI

    0x00 概述 先科普一下,有关retina和HiDPI那点事 ,Macmini在2k显示器的显示太小了,看起来费眼,没办法,苹果原生HiDPI是支持4k显示器的,所以以后买显示器,直接买4k的一步到 ...

  8. ionic 实现 应用内(webview中html页面点击) 和 应用外 (浏览器html页面点击) 打开本地安装应用

    应用内(webview中html页面点击) : 应用内打开本地安装应用指的是webview里打开应用,需要2个步骤: 1: 需要下载一个cordova插件:com.lampa.startapp ,也可 ...

  9. spring-mvc(基础)

    一.MVC框架的概述 1.作用    ①支持直接一个方法对一请求     ② 支持数据的自动封装     ③ 自动支持上传组件     ④ 自动支持JSON的转成 2.配置流程图 3.基于xml的配置 ...

  10. centos7救援模式--误删/usr/bin/恢复

    模拟场景 centos7 误删/usr/bin/等系统内置文件夹, 导致几百个内置命令丢失. 修复 rescue模式 vm模拟一遍(如果在物理机, 可通过U盘方式直接开机U盘进入选择救援模式, 方式通 ...