面体题整理
1、Object 作为 HashMap 的 key 的话,对 Object 有什么要求吗?
考察点:哈希表
参考回答: 要求 Object 中 hashcode 不能变。
解读: 什么是hashcode。Java语言中,Object对象有个特殊的方法:hashcode(), hashcode()表示的是JVM虚拟机为这个Object对象分配的一个int类型的数值,JVM会使用对象的hashcode值来提高对HashMap、Hashtable哈希表存取对象的使用效率。
关于Object对象的hashCode()返回值,网上对它就是一个简单的描述:“JVM根据某种策略生成的”.
什么是JVM。Java虚拟机(Java Virtual Machine 简称JVM)。通常来说,高级语言运行在不同的平台上,需要编译为不同的语言,但是如果不同的平台都有虚拟机,由虚拟机来执行Java语言,就不需要编译为不同的语言,这也就解释了为什么Java可以跨平台运行。
2、hashset 存的数是有序的吗
参考回答: Hashset 是无序的。
解读:什么事hashset。hashset储存的是唯一的对象,没有下标,只能通过增强for,或者迭代器进行遍历。当出现相同的对象,会合并,只储存一个空间。
3、请你设计一个算法,用来压缩一段URL?
常用的url压缩算法是短地址映射法。具体步骤是:
① 将长网址用md5算法生成32位签名串,分为4段,,每段8个字符;
② 对这4段循环处理,取每段的8个字符, 将他看成16进制字符串与0x3fffffff(30位1)的位与操作,超过30位的忽略处理;
③ 将每段得到的这30位又分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串;
④ 这样一个md5字符串可以获得4个6位串,取里面的任意一个就可作为这个长url的短url地址。

浙公网安备 33010602011771号