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.计算机网络

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水能zai舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值