--- nav: title: 面试 path: /interview group: title: 💊 面试题库 order: 2 --- # 性能 ## 1. 不要用 Eval eval 的作用是将用户输入的字符串转化为可执行的代码,类似欺骗的效果,这样的坏处是会受到 XSS 攻击。 ## 2. 使用 strict 模式 严格模式下的变量 **重复声明** 等操作会抛出一些隐藏的错误。 ```javascript 'use strict'; var obj = { a: '1', a: '2', }; // 抛出错误 syntax error ``` ## 3. 使用 Eslint 测试代码规范 可以使我们早期捕获一些 bug,并及时修正。 ## 4. 全面测试 测试很重要,不但单元要测试,还要全面测试,例如用 mocha 测试代码覆盖率。使用 jest 进行单元测试 ## 5. Unix 下不要直接使用 sudo node app.js 这样如果产生错误,会让整个系统宕机,可以使用 nginx 反向代理。 ## 6. 避免 shell command 注入 ```-t child_process.exec('ls', function (err, data) { console.log(data); }); ``` 上面的 child_process.exec 调用的是 /bin/sh ,也就是执行了一个解释器。 > 为了避免这个问题,我们可以使用:child_process.execFile。 ## 7. 临时文件 创建文件时,处理上传的文件要注意,这些文件可能会吃掉你的磁盘所有空间。 > 使用 Streams。 ## 8. 加密 Web 应用 用 https 代替 http,请求的过程可以添加签名头。 ## 9. Reflected Cross Site Scripting 也就是跨站脚本攻击,就是但用户发送一段数据,如果在未做任何处理的情况下直接插入 DOM,这可能会出现安全问题,例如: ```javascript //用户输入的数据中带脚本,如果不做处理,会被执行。 Im human