4.2面试问题复盘

4.2面试问题复盘

1.数据库相关

  • varchar实际存储容量的问题

情景:面试官开始问我的问题是:“在设计数据库字段是是会注意哪些问题?”(后来又追问了这个题,感觉他真正想听的是在设计字符类型数据时char与varchar的选择,以及varchar“可变长”的原理)

更详细的字段设计总结

问题:如果我有一个表,该表的字段声明为接受varchar(100),然后我实际上插入单词"hello",那么在mysql服务器上将使用多少实际存储空间?

答案:6字节 = 5字节的实际长度 + 1字节(长度记录值,该值超过255会变为2字节)

varchar存储数据的底层原理:前缀 + 数据;其中前缀指的是记录varchar最大长度的值,255以内时为1,超过255以后为2

详细可参考MySQL8.0官方文档

  • 我的知识盲区:事务隔离级别、事务锁机制

事务的隔离级别

  • 事务未完成提交,突然断电,怎么办?

3.Java SE集合部分内容一定要弄得很熟练

ArrayList与LinkedList的区别(以下内容都是“没有绝对,只有相对”的原则)

  • ArrayList与LinkedList那个效率更高(理论上):
    • ArrayList:执行频繁的查找效率比LinkedList
    • LinkedList:执行频繁的插入和删除效率比Arraylist高
  • ArrayList与LinkedList内存占用对比:
    • 表面上看,LinkedList的Node存储结构似乎更占空间,但是,如果数据量很大又在实时添加数据的情况下,ArrayList占用的空间不一定会比LinkedList空间小
  • ArrayList与LinkedList的安全性对比:
    • 二者都是线程不安全的(当时答错了…)

HashMap相关内容

  • HashMap的key可以是空吗?
    • 可以null,HashTable的key不能空(当时答错了…)
  • HashMap扩容后如何移动原数组?
    • 逐个重新push
  • 我们如何较为合理的定义HashMap的初始容量?
    • 预先估计一个元素可能个数 / 负载因子(或除一个比负载因子稍微小一点的数)

4.Java 多线程有关问题

5.计算机网络

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页