场景题:如何找到 100亿字符串中 出现次数前10的字符串
TOP K类问题:
https://zhuanlan.zhihu.com/p/441597621
主要围绕 并发,多线程,哈希,大顶堆(局部淘汰法),排序算法讨论。
快读排序,多路归并排序,分治法(MapReduce)等
要找到在100亿个字符串中出现次数前10的字符串,一种可能的方法是使用 MapReduce 模型。
具体来说,可以将这100亿个字符串分成若干个小块,每个小块包含若干个字符串。然后对于每个小块,使用 Map 函数将每个字符串映射为一个 (字符串, 出现次数) 的键值对,其中出现次数初始值为1。接着使用 Reduce 函数将相同的字符串的键值对合并,并将它们的出现次数累加起来。
这样就可以得到每个小块中出现次数前10的字符串。然后将这些字符串和它们的出现次数存储在一个大的哈希表中,并且保持这个哈希表的大小不超过10。在处理完所有的小块之后,这个哈希表中就包含了整个数据集中出现次数前10的字符串和它们的出现次数。
最后可以对这个哈希表按照出现次数排序,并输出前10个字符串即可。
需要注意的是,上述方法需要大量的计算和存储资源,因此需要使用分布式计算和分布式存储等技术,以及合适的硬件设备来支持这个计算任务。同时,还需要针对具体的数据集和计算环境进行优化,以达到更好的性能和效果。
了解MQ吗?
Apache Kafka、RabbitMQ和ActiveMQ都是流行的消息队列中间件,用于在分布式系统中传递消息。它们都有自己的优点和适用场景。
- Apache Kafka
Apache Kafka是一个高吞吐量、低延迟的分布式发布订阅消息系统。Kafka的主要特点是:
- 高吞吐量:Kafka可以处理数百万条消息,每秒钟处理数千个消息。
- 可扩展性:Kafka可以轻松地扩展到数百个节点,以处理大量的消息。
- 持久性:Kafka将消息存储在磁盘上,以确保消息不会丢失。
- 多语言支持:Kafka支持多种编程语言,包括Java、Python、C++等。
Kafka适用于需要处理大量数据的场景,例如日志收集、实时数据流处理等。
- RabbitMQ
RabbitMQ是一个开源的消息队列中间件,RabbitMQ的主要特点是:
- 可靠性:RabbitMQ使用AMQP协议,确保消息传递的可靠性。
- 灵活性:RabbitMQ支持多种消息传递模式,包括点对点、发布/订阅等。
- 可扩展性:RabbitMQ可以轻松地扩展到数百个节点,以处理大量的消息。
- 多语言支持:RabbitMQ支持多种编程语言,包括Java、Python、C++等。
RabbitMQ适用于需要可靠性和灵活性的场景,例如任务队列、异步通信等。
有用过其他noSql数据存储吗?
NoSQL数据库是指非关系型数据库,它们不使用传统的表格关系模型,而是使用其他数据模型来存储数据。以下是一些常见的NoSQL数据库:
MongoDB:一种文档数据库,使用JSON格式存储数据。
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常流行的 文档类型数据库 。
MongoDB 的存储结构是什么?
MongoDB 的存储结构区别于传统的关系型数据库,主要由如下三个单元组成:文档(Document):MongoDB 中最基本的单元,由 BSON 键值对(key-value)组成,类似于关系型数据库中的行(Row)。集合(Collection):一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。数据库(Database):一个数据库中可以包含多个集合,可以在 MongoDB 中创建多个数据库,类似于关系型数据库中的数据库(Database)。也就是说,MongoDB 将数据记录存储为文档 (更具体来说是BSON 文档open in new window),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。
https://www.bilibili.com/video/BV11a411a7zA/?spm_id_from=333.337.search-card.all.click&vd_source=3b464bc3e4b80af19b5c5840c0e49ffc
Redis:一种内存数据库,用于高速读写操作。
https://www.bilibili.com/video/BV1sY411z78z/?spm_id_from=333.337.search-card.all.click&vd_source=3b464bc3e4b80af19b5c5840c0e49ffc
SpringCloud了解吗?单体服务和微服务的区别?
https://www.bilibili.com/video/BV1gX4y1b747?p=71&vd_source=3b464bc3e4b80af19b5c5840c0e49ffc
设计模式了解吗?
https://www.bilibili.com/video/BV1JB4y1y7GH/?spm_id_from=333.337.search-card.all.click&vd_source=3b464bc3e4b80af19b5c5840c0e49ffc 两个小时
JVM内存模型,垃圾回收机制, 双亲委派模型
看面试指南
项目中的分库分表
https://www.bilibili.com/video/BV13a411q753/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click
瑞吉外卖项目