1、一个键值对如何插入hashmap?
方法一:使用hashmap的put()方法
hashmap.put(key, value);
方法二:使用hashmap的putIfAbsent()方法
hashmap.putIfAbsent(key, value);
2、哈希的应用场景?
哈希可以应用于多种领域,其中一些应用场景如下:
1. 数据存储:哈希可以用于存储结构化的数据,比如内存对象,键值对等。
2. 加密:哈希算法可以被用来为安全信息加密,比如数字签名,消息摘要等。
3. 校验:哈希算法可以用来校验数据完整性,比如校验文件完整性,校验文件下载等。
4. 搜索:哈希算法可以用来快速搜索,它可以用来将搜索对象映射到一个字符串,通过字符串快速搜索。
3、图搜索场景如何应用哈希来优化?
可以使用哈希来对图搜索中的节点和边进行存储,并将其映射到字符串,以实现快速搜索。
此外,可以使用哈希表来进行分块处理,只要将图中的节点按照任意哈希算法进行存储就可以实现,而不需要遍历整个图。这样能够大大提高搜索的效率,以及对大型数据的处理能力。
4、MD5使用哈希冲突,会有什么问题?
MD5是一种唯一的哈希函数,可以将任意长度的信息映射到一个128位的输出。但是,由于MD5是一个不可逆的函数,有可能会出现哈希冲突,也就是说,多个不同的输入可能会映射到同一个输出。这样就会导致安全问题,比如数据篡改攻击,伪造攻击等。
5、1T数据,内存有限,如何把这些数据排序
在内存有限的情况下,可以使用桶排序或基数排序来将1T数据进行排序。
桶排序:通过分桶的思想将元素放入不同的桶中进行排序,然后再将每个桶中的元素合并起来,从而实现排序。
基数排序:通过将T数据依次按位排序,分拆不同的桶中,再将各个桶中的数据进行归并排序,最终实现排序。
6、一个医院,有病人,会按照先来后到排序,现在来了个病重患者,你如何设计一个数据结构和算法来处理这些病人。
可以使用优先队列的数据结构和算法来处理这些病人。优先队列是一种特殊的队列,其中元素以具有优先级的方式存储,具有更高优先级的元素先于具有更低优先级的元素出队列,可以用于处理这种情况。具体步骤如下:
1. 将发生变更的病人的优先级设置为最高;
2. 将已入队的病人按照先来后到的原则放入优先队列;
3. 通过优先队列的性质取出最先来的病人进行治疗。
7、桌子放硬币,轮流放一个,放不下时算输,如何设计必赢策略。
可以使用反悔策略,具体步骤如下:
1. 在每一次轮到自己放硬币时,先放一块小硬币,这样可以使得最后一块硬币无法放下;
2. 如果另一个玩家在轮到自己之前,把最后一块硬币放下,则可以反悔,拿走前面的小硬币,选择放置一块大的硬币。
这样就可以保证自己最后一块硬币放下,实现必赢策略。
8、输入一个正数n,输出所有和为n的连续正数序列。
可以使用双指针的方法来解决这个问题,具体步骤如下:
1. 定义两个指针low和high,初始时low和high都指向1,表示从1开始搜索;
2. 计算low和high指向的数字序列和,如果和小于n,则high右移;
3. 如果和大于n,则low右移;
4. 如果和等于n,则输出这个序列,并将low右移;
5. 重复上述步骤,直到low大于n/2。
9、有一段文字,包含6个字母 ABCDEF,假设这六个字母出现的频率分别是 A 27 B 8 C 15 D 15 E30 F5。现在要进行编码,如何设计让总文本最短
可以使用Huffman编码,步骤如下:
1. 将出现频率最高的字母A分配最短的编码(例如:0);
2. 将其他字母按照字母出现的频率从高到低进行排列,依次分配“1”开头的编码(例如:E 30 -> 1, C 15 -> 10, D 15 -> 11, B 8 -> 100, F 5 -> 101);
3. 将上述编码应用到原文本中,得到最短的编码文本。根据本例,原文本ABCDEF编码为0110011101
标签:硬币,可以,面试,阿里,搜索,low,哈希,排序,复盘 From: https://www.cnblogs.com/15078480385zyc/p/17019990.html