腾讯面试:40亿QQ号,给你1G内存,怎么去重?

前段时间,有个小伙伴给我分享了他去腾讯面试的经历。他说被问到了一道去重的面试题:

给你40亿个QQ号,要求相同的QQ号码仅保留一个,内存限制为1个G,你会怎么实现?

小伙伴由于没有回答好,导致面试挂了。

这其实就是个经典的海量数据去重问题,而且还附带一个让人头疼的条件:内存限制只有1G!

1.理解题目:从QQ号和内存限制说起

我们先来分析一下问题本身。

QQ号其实是一串数字,范围是4字节的无符号正整数,也就是32位,理论上最大值接近43亿。所以,如果单纯存储这40亿个QQ号,需要耗费多少内存呢?

简单计算一下:

4000000000*4 /1024/1024/1024 ≈ 15GB

总共需要15GB的内存,显然远远超过了题目给的1GB限制。这就需要我们换个思路,不能“硬塞”,要想办法巧妙地存储和处理这些QQ号。

所以问题的本质就是“在内存非常有限的情况下,高效实现重复数据的去重”。

解决方案有很多,但是主流的方案有两种:

  • 方案1:使用BitMap
  • 方案2:使用布隆过滤器

两者各有千秋,但在本题中,我们使用BitMap更加合适。

2.解决方案:用BitMap的精妙之处化繁为简

2.1 什么是BitMap?

所谓位图(BitMap)其实就是一个bit数组,即每一个位置都是一个bit,其中的取值可以是0或者1。

通俗点说,BitMap就像一个超级节省空间的“登记簿”。

  • 如果某个QQ号存在,就在对应的“格子”上标记为1;

  • 如果不存在,则是0。

比如,我们需要记录QQ号:1、4、6。传统方法可能需要用3个整型变量,每个4字节,总共12字节。但是BitMap只需要用一个字节(8位),直接把第1、4、6位分别置为1即可,是不是更高效?这里节省了 12倍空间。

BitMap最大的优势在于能够用极小的存储空间去表示巨大的数值范围,并且支持快速查询、去重等操作。它特别适合这种“有或没有”的问题,不需要存储原始数据。

2.2如何使用BitMap进行40亿个QQ号去重?

回到我们的问题:40亿个QQ号,限制1G内存,如何用BitMap去重?

步骤如下:

1)申请一个足够大的BitMap,大小为40亿个bit,也就是:

4000000000 * 1 /8/1024/1024 = 476M

只需要不到500MB的空间就可以搞定!

2)遍历这40亿QQ号,把每个号码映射到BitMap中,把对应位置的bit设置为1。

比如,QQ号“12345678”会直接映射到BitMap的第“12345678”个位置,然后置为1,表示它已经出现过。

3)通过遍历BitMap,找出所有bit值为1的位置,这些就是所有的去重后的QQ号。

通过这样的方式,我们用BitMap成功实现了40亿QQ号去重,最大内存消耗也不到500MB,不会有内存不足的问题。

2.3 BitMap的优缺点

优点:

  • 超极节省内存

相比直接存储数据,BitMap的内存消耗大约只有八分之一甚至更少,非常高效。

  • 操作快

插入、查询、去重的时间复杂度都是O(1),十分适合处理海量数据。

  • 易于实现

算法简单,只需要依赖一个数组,理解成本低。

缺点:

  • 只能表示“有或没有”

BitMap只能用0和1表示是否存在,无法存储更复杂的数据(如具体值或出现次数)。

  • 需要确定值域范围

BitMap只能操作固定范围的数据,超出范围将导致无法标记。

3.总结

通过这道题我们看到了BitMap的优雅之处,它让我们用不到500MB的内存,成功完成了40亿QQ号的去重操作。更重要的是,这种思路在很多场景中都有广泛应用,比如:

  • 大规模数据去重

  • 数据快速排序

  • 集合运算(交集、并集、差集)

  • 布隆过滤器的底层实现

所以,掌握BitMap不仅能帮你顺利通过面试,在实际的大数据场景中也非常实用!

你还有其他更好的思路吗?欢迎留言讨论~

https://mp.weixin.qq.com/s/82P8d8HECMelgQc0Cd_UIA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1177703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年市场做得好的清障车源头厂家哪个好,折臂高空作业车/蓝牌清障车/二手蓝牌平板拖车/重载清障车,清障车品牌有哪些 - 品牌推荐师

随着城市交通密度提升与道路救援需求激增,清障车作为保障交通畅通的核心装备,其技术迭代与市场格局正经历深刻变革。2025年,行业呈现“头部集中、细分分化”特征:头部企业依托技术壁垒与规模效应巩固优势,新兴品牌…

吐血推荐9个AI论文平台,专科生搞定毕业论文格式规范!

吐血推荐9个AI论文平台,专科生搞定毕业论文格式规范! AI 工具助力论文写作,专科生也能轻松应对 在当今这个信息爆炸的时代,撰写毕业论文已成为许多专科生面临的挑战。面对复杂的格式规范和繁重的写作任务,不少同学感到…

学术探险家的智能罗盘:书匠策AI解锁本科论文写作新次元

在学术的浩瀚宇宙中,本科论文写作常被视作一场“新手村大冒险”——选题撞车、文献迷航、逻辑黑洞、语言卡壳……这些问题如同隐藏的陨石带,让无数探索者折戟沉沙。但如今,一款名为书匠策AI的智能工具正以“学术罗盘”的姿态,为本…

‌测试自动化新星:AI驱动的视觉测试工具盘点

AI如何重塑视觉测试领域‌ 在软件测试的演进历程中,视觉测试(Visual Testing)一直是确保用户界面(UI)一致性和用户体验的关键环节。传统方法依赖脚本化的像素比对,但面对动态内容、响应式设计和跨设备兼容…

java-SSM372多人试卷批改考试命题系统-springboot

目录具体实现截图系统概述技术架构核心功能创新点应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 系统概述 Java-SSM372多人试卷批改考试命题系统基于SpringBoot框架开发,整…

台焊机批量定制哪家性价比高?靠谱厂家揭秘 - 工业品牌热点

一、基础认知篇 问题1:什么是台焊机批量定制?和普通台焊机采购有何区别? 台焊机批量定制是指根据企业特定的生产需求(如焊接材质、产能规模、工艺节拍、产线布局等),由厂家针对性设计、生产多台规格统一且适配企…

软件测试中的生成式AI:机遇与陷阱全解析

AI浪潮下的测试变革‌ 生成式人工智能(Generative AI),特别是大型语言模型(LLMs)如ChatGPT、Claude、Gemini以及代码生成模型如GitHub Copilot,正以前所未有的速度重塑各行各业。软件测试,作为…

‌AI如何让软件发布速度提升300%?内部报告揭秘‌

软件发布瓶颈与AI的变革力量 在当今快速迭代的软件开发环境中,发布速度已成为企业竞争力的关键指标。传统软件发布流程中,测试环节常占整体时间的40-60%,涉及手动测试用例设计、回归测试执行和缺陷修复,导致发布周期冗长&#xf…

学霸同款2026 AI论文网站TOP9:本科生毕业论文神器测评

学霸同款2026 AI论文网站TOP9:本科生毕业论文神器测评 2026年学术写作工具测评:为何要关注这些AI论文网站? 随着人工智能技术的不断进步,越来越多的本科生开始借助AI工具提升论文写作效率。然而,面对市场上五花八门的A…

【Java源码】基于SpringBoot的在线考试系统

1项目介绍本课程演示的是一套基于SpringBoot的在线考试系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。包含:项目源码、项目文档、数据库脚本、软件工具等所有资料带你从零开始部署运行本套系统该项目附带的源码资料可…

AI会淘汰测试工程师吗?数据与真相的深度解构

一、颠覆性数据背后的行业实相 自动化替代率现状(2025全球测试报告) 脚本化用例执行:73%任务可由AI完成(Capgemini数据) 探索性测试:AI覆盖率仅29%(ISTQB年度调研) 误报消除率&…

AI开发工具战场全景图:测试视角的王者之争

一、评测框架设计:面向测试工程师的核心维度 为精准评估工具价值,我们建立四维评测体系: 1. **智能编码支持力** - 代码生成准确率(AST语法树验证) - 单元测试覆盖率提升幅度 - 边界用例自动生成能力 2. **测试全…

AI代码审查工具:软件测试工程师的技术革命

一、传统代码审查的瓶颈与AI的破局 在持续集成/持续部署(CI/CD)成为主流的当下,传统人工代码审查面临三重困境: 效率瓶颈:手动审查千行代码平均耗时4-6小时(据GitLab 2025报告) 漏洞遗漏&…

基于 Flutter × OpenHarmony 图书馆管理系统之构建书籍列表

文章目录基于 Flutter OpenHarmony 图书馆管理系统之构建书籍列表前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码(对代码进行解析)代码解析心得总结基于 Flutter OpenHarmony 图书馆管理系统之构建书籍列表 前言 在数字化与智能化迅速发展的…

‌机器学习在缺陷预测中的神奇力量:真实案例分享‌

当缺陷预测遇见机器学习 在持续交付成为主流的软件开发环境中,传统基于代码度量的缺陷预测模型(如McCabe复杂度)逐渐显露出滞后性与低覆盖率问题。机器学习通过动态学习历史缺陷模式、代码演进特征及团队协作数据,构建出具备自进…

【前沿技术】不仅是翻译,更是“智能体协作”:揭秘 AI 如何组建一支“数字美工团队”为你批量修图?

Python AI Agent 多智能体 自动化工作流 跨境电商 图像处理摘要在跨境电商的视觉生产中,一张完美的本地化图片往往需要懂语言的翻译、懂修图的美工、懂产品的运营共同参与。传统的脚本只是机械地执行命令,而 Image Translator Pro 引入了前沿的 多智能体…

突发!前端框架Astro被收购,Bun 创始人第一时间发来贺电!

就在刚刚,前端圈传来一则重磅消息:Astro 官方宣布正式被 Cloudflare 收购!Astro 的核心团队将全员加入 Cloudflare,继续负责 Astro 的开发和维护。消息一出,连 Bun 的创始人 Jarred Sumner 也在第一时间赶到现场&#…

【私有化部署】断网也能跑?为何大卖都把 AI 图片翻译软件装进“本地硬盘”?

Python 本地部署 边缘计算 数据安全 模型量化 跨境电商摘要随着 AI 技术的普及,SaaS(软件即服务)模式虽然方便,但其 数据安全隐患 与 网络延迟依赖 逐渐成为跨境电商企业的痛点。新品图片上传云端是否会被泄露?旺季服务…

【Python视觉】告别“死板机翻风”:揭秘 AI 如何自动匹配“原图字体”实现设计级重构?

Python 字体匹配 计算机视觉 排版算法 跨境电商 OpenCV摘要在电商视觉营销中,字体(Typography) 是传递品牌调性的核心元素。然而,传统的 AI 翻译工具往往忽略这一点,统一使用默认字体(如 Arial/宋体&#x…

学术探险家的秘密武器:书匠策AI如何重构本科论文写作的“生存法则”

在学术的荒野中,本科论文写作常被形容为一场“生存挑战”——选题撞车、文献迷航、逻辑混乱、格式踩雷……这些问题像隐藏的陷阱,让无数新手学者陷入焦虑。但如今,一款名为书匠策AI的智能工具正以“学术探险装备”的姿态,为本科生…