「Java面试」存储MD5的值应该用VARCHAR还是CHAR?

「Java面试」存储MD5的值应该用VARCHAR还是CHAR?昨天一个工作 4 年的粉丝 遇到了一个很有意思的面试题 这道面试题的文字版我已经整理在 20 万字的文档里了吗 有需要的可以 Si 信我发 Mic 领取

大家好,欢迎来到IT知识分享网。

昨天一个工作4年的粉丝,遇到了一个很有意思的面试题。

“存储MD5的值应该用VARCHAR还是CHAR”!

觉得是用VARCHAR类型的小伙伴,请仔细看完这篇文章。

大家好,我是Mic,一个工作14年的Java程序员。

这道面试题的文字版我已经整理在20万字的文档里了吗,有需要的可以Si信我发“Mic”领取

考察目的

这个问题考察1~4年左右开发经验的同学。

大家肯定会觉得这个问题很简单啊,直接回答VARCHAR就行了。

但如果只是这么简单,你就太单纯了。

这个问题考察的目的至少有两个:

  • 考察数据库里面的基本数据类型的理解
  • 基于这个问题作为切入口,了解求职者对数据库的掌握程度

这个问题后面,一定伴随这“为什么”,

面试官一定是不不不去挖坑,让你往里面跳,直到你回答不上来位置。

所以我们在回答这个问题的时候,就需要更加全面的去回答。

问题分析

MD5是由数字和字母组成的一个16位或者32位长度的字符串,一般在应用开发中都是使用32位。

看起来,我们用varchar(32)或者char(32)都可以存储,那用哪种更好呢?

要回答这个问题,必须要了解这两个类型的功能特性和区别。

  • 第一个,char是一个固定长度的字符串,Varchar是一个可变长度的字符串
    假设声明一个char(10)的长度,如果存储字符串“abc”,虽然实际字符长度只有3,但是char还是会占10个字节长度。
    同样,如果用varchar存储,那它只会使用3个字符的实际长度来存储。

  • 第二个,存储的效率不同,char类型每次修改以后存储空间的长度不变,所以效率更高
    varchar每次修改数据都需要更新存储空间长度,效率较低
  • 第三个,存储空间不同,char不管实际数据大小,存储空间是固定的,而varchar存储空间等于实际数据长度,所以varchar实际存储空间的使用要比char更小

基于他们特性的分析,可以得出一个基本的结论:

  • char适合存储比较短的且是固定长度的字符串
  • varchar适合存储可变长度的字符串

高手:

我认为应该使用Char类型,原因是:

char类型是固定长度的字符串,varchar是可变长度字符串。

而MD5是一个固定长度的字符,不管数据怎么修改,长度不变,这个点很符合char类型。

另外,由于是固定长度,所以在数据变更的时候,不需要去调整存储空间大小,在效率上会比varchar好。

需要高手面试文档合集(附赠大厂内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以后台私信【Mic】或者评论区留言。

「Java面试」存储MD5的值应该用VARCHAR还是CHAR?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/108342.html

(0)
上一篇 2026-02-08 22:20
下一篇 2026-02-09 11:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信