20190312
1. int(5) 和 int(10) 有什么区别
int 类型括号里的数字并不是限制最长长度,而是小于这个长度会在前面以零填充;
2. char(10) 和 varchar(10) 的区别
1)char 的长度是固定的,varchar 的长度是可变的;
2)char(10) 存入数据长度少于10,则会在其数据后面跟空格以保持数据长度为10,所以取数据的时候要 .trim() 去掉多余的空格;而 varchar 存入什么就是什么,取数据也不用二次加工;
3)char() 由于长度固定所以存储与查找速度上比 varchar 更快;
4)char() 的存储方式是,英文字符(ASCII)占用1个字节,一个汉字占用两个字节;而 varchar() 的存储方式是,每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。
3. Promise 是干什么用的
Promise 是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺过一段时间会给你一个结果。promise有三种状态:pending(等待态),fulfiled(成功态),rejected(失败态);状态一旦改变,就不会再变。创造promise实例后,它会立即执行。
4. Promise.all() 作用
异步并发,接收一个数组参数,数组里存放 promise,当数组里 promise 全部执行结束(所有都执行成功才算成功,只要有一个函数不成功则算为失败),Promise.all() 才算执行结束。
5. node 的事件循环(这个我之前写过就不重复了)
6. node 单线程为什么能支持高并发
参考 https://www.cnblogs.com/dudeyouth/p/6698274.html 这篇博客;
7. 如何控制线上版本号和开发环境一致
原来package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本;
1)第一种方法是使用npm shrinkwrap 生成 npm-shrinkwrap.json;这样在执行npm install 时 npm 会先检查有没有 npm-shrinkwrap.json 这个文件,有的话会根据这个文件里的版本号来安装;
2)第二种就是 npm install 后生成的 package-lock.json ,它的功能和上面的 npm-shrinkwrap.json 是一样的,如果更新 package.json 和 package-loack.json ,npm install 也会覆盖老版本
8. join left 和 join right 有什么区别
这个问题 https://www.cnblogs.com/logon/p/3748020.html 写的很详细,图文形式很好理解。