海量数据面试题-以及其他场景题目

50亿不重复的数据---2G内存--找中位数
int范围是2^31--2*10^9, 没有符号的貌似也不够
5*10^9, 假设是int,4字节, 2*10^10B~KMG---20G左右!!!注意是2^30
所以只需要分成10个即可,按照最高位0000-1111 这样子写入到16个文件,并且计算每个文件的数量
随后只需要排序,寻找中位数
同理快速判断是否存在,也是Bitmap或者按照位进行文件分类
- 业务人员在跳转瞬间更新最低价,如何解决列表页最低价与详情页最低价的一致性
要解决列表页最低价与详情页最低价的一致性问题,可以考虑以下几种方案:

异步更新:当业务人员跳转到详情页时,可以异步更新最低价信息。在用户进入详情页之前,可以在列表页中设置一个标记,表示最低价正在更新中。当异步更新完成后,再将最新的最低价信息更新到详情页中。

缓存更新:当业务人员跳转到详情页时,可以直接从缓存中获取最新的最低价信息。如果最低价信息已经过期,则可以重新从数据库中读取最新的最低价信息,并将其更新到缓存中。

定时更新:可以设置一个定时任务,定时从数据库中读取最新的最低价信息,并将其更新到缓存中。当用户访问详情页时,直接从缓存中获取最新的最低价信息,以保证列表页和详情页的最低价信息一致。

需要注意的是,以上方案仅是一些思路,具体实现方式需要根据具体的业务需求和系统架构来确定。同时,在实现方案时,还需要充分考虑系统的性能和安全性问题,避免方案实现过程中出现安全漏洞或系统崩溃等问题。

如何防止在活动时间段外用户购买折扣商品
订单审核:在用户购买商品后,可以设置一个订单审核流程,对用户购买的商品进行审核,确保订单符合系统规定的条件。例如,审核用户购买的商品是否在活动时间内、是否满足活动的购买条件等。如果订单审核不通过,则可以拒绝用户的购买请求。

队列处理:可以将用户购买请求放入一个队列中,等到活动时间段开启时再处理队列中的请求。这样可以确保只有在活动时间段内的用户购买请求才会被处理,而在活动时间段外的请求则会被放置在队列中等待。

系统配置:可以在系统中设置一个活动时间段的配置项,只有在活动时间段内购买的用户才能享受折扣优惠,而在活动时间外购买的用户无法享受优惠。可以通过对系统配置的修改来限制用户在活动时间段外购买折扣商品。
全部评论
要防止在活动时间段外用户购买折扣商品,可以考虑以下几种方案: 时间限制:可以在系统中设置一个活动时间段,只有在活动时间内购买的用户才能享受折扣优惠,而在活动时间外购买的用户无法享受优惠。可以通过服务器的时钟来判断当前时间是否在活动时间段内,从而进行限制。 购买限制:可以在系统中设置一个购买限制,限制用户在活动时间段内只能购买一定数量的商品。例如,每个用户只能在活动期间内购买一定数量的商品,或者限制每种商品的购买数量。 校验机制:可以在用户购买时对购买时间进行校验,确保用户只能在活动时间内购买折扣商品。可以将活动时间信息保存在数据库或缓存中,在用户购买时从中读取,并与当前时间进行比较。 日志记录:可以在用户购买时记录日志,包括购买时间、商品信息等。当用户购买的商品超出活动时间段时,可以通过日志记录进行监测和审计,并进行后续处理。 需要注意的是,以上方案可以单独或组合使用,具体实现方式需要根据具体的业务需求和系统架构来确定。同时,为了确保系统的安全性和稳定性,还需要对方案进行充分的测试和验证。
点赞 回复 分享
发布于 2023-03-17 14:49 日本
一大堆字符串如何统计各个字符串出现次数 大概字典树/前缀树?内存不够就按照首字母映射到26个文件里面
点赞 回复 分享
发布于 2023-03-13 00:09 日本

相关推荐

10-10 23:04
门头沟学院 C++
1. 移动语义的适用场景是什么?2. 内存泄露通常有哪些原因?3. (追问)除了未释放和循环引用,还有哪些原因?4. 多线程如何处理并发(变量)问题?5. 防止并发有哪些方式?(追问锁以外的机制)6. 除了锁,还有哪些方式?(再次追问)7. 信号量是如何进行管理的?8. 多进程间通信有哪些方式?请讲几个。9. 你做的流媒体服务器是单进程多线程架构吗?10. 一对一聊天和群聊(多对多)在架构上有什么不同?为什么群聊可能需要多进程?多进程具体做什么?11. 同步和异步的区别是什么?能否举一个异步的业务场景例子(比如你项目中的异步日志系统)?12. 异步日志系统的大致实现思路是什么?13. 这个日志系统是自研的还是使用开源组件?14. 你的项目里用到了哪些设计模式?15. 单例模式是线程安全的吗?16. 除了工厂和单例,还了解或使用过其他模式吗?(如观察者、策略模式)它们的使用场景是什么?17. 你在项目中遇到的最复杂或最难的问题是什么?是如何解决的?(引申出加密解密问题)18. 加密解密问题具体是什么原因?最终如何解决?19. 从1000万条记录的数据集中找出分数最高的Top K个记录,你会用什么算法?时间复杂度是多少?20. (追问)该算法对内存有要求吗?21. 快速选择(部分快排)算法的时间复杂度是多少?22. (深入探讨)为什么快速选择算法的平均时间复杂度是O(N)?23. TCP和UDP有什么区别?24. 为什么TCP需要三次握手?25. 什么是I/O多路复用?26. epoll的边沿触发(ET)和水平触发(LT)模式有什么区别?你的项目是如何支持和选择这两种模式的?27. 边沿触发(ET)模式是否可靠?在什么情况下可能存在问题?28. 什么是死锁?在什么情况下会发生?如何避免或解决死锁?29. 如果发现数据库查询效率很低,你会通过哪些方式来排查和优化?30. (追问)除了优化SQL、索引和分库分表,还有哪些优化思路?31. 项目是在什么操作系统上开发的?32. 是否使用过GDB进行调试?如何调试程序崩溃(如使用core dump文件)?33. 在项目开发中,除了GDB,还使用了哪些调试工具和方法来排查BUG?34. 你最近在看什么技术书籍?有什么心得或启发?
投递同为股份等公司10个岗位
点赞 评论 收藏
分享
评论
2
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务