10.17日面试总结
1 git rebase和merge的区别
rebase会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上,也就是先把提交cancel掉,把当前分支更新为最新的origin分支,再把这些 cancel掉的更新给加上,这样 就像当于是在远端最新的更新上继续工作。
2 数据库n+1查询问题
执行一次查询获得n条记录,由于关联查询引起的n次查询造成性能下降,
通过懒加载可以部分缓解1+n次查询带来的性能问题,
3 tinyint , smallint int bigint 的区别
tinyint 一个字节 0到255
smallint 两个字节 0到2的15次-1
int 四个字节,0到2的31次方-1
bigint 8个字节,0到2的63次方-1
4 char varchar区别
char固定长度,如果小于指定长度,则添加空格补齐,
varchar可变长度,效率char>varchar>text
Mysql 5中
非空CHAR的最大总长度是255【字节】;非空VARCHAR的最大总长度是65533【字节】。
可空CHAR的最大总长度是254【字节】;可空VARCHAR的最大总长度是65532【字节】。
原因:非空标记需要占据一个字节,VARCHAR超过255需要用2个字节标记字段长度,不超过255用1个字节标记字段长度.
在mysql 5.7.19中测试,字段编码用utf8-generalci,
varchar 最大 长度21843 可空(空的checkbox选中)时为21842
char最大 长度255 可空也是255
5