字节提前批一面

场景题:如何找到 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都是流行的消息队列中间件,用于在分布式系统中传递消息。它们都有自己的优点和适用场景。

  1. Apache Kafka
    Apache Kafka是一个高吞吐量、低延迟的分布式发布订阅消息系统。Kafka的主要特点是:
  • 高吞吐量:Kafka可以处理数百万条消息,每秒钟处理数千个消息。
  • 可扩展性:Kafka可以轻松地扩展到数百个节点,以处理大量的消息。
  • 持久性:Kafka将消息存储在磁盘上,以确保消息不会丢失。
  • 多语言支持:Kafka支持多种编程语言,包括Java、Python、C++等。
    Kafka适用于需要处理大量数据的场景,例如日志收集、实时数据流处理等。
  1. 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
瑞吉外卖项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值