`
liguocai2009
  • 浏览: 32010 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转]大数据处理三小题。Can you? ^_^

 
阅读更多





无挑战,不工作之三 - 开发工程师招聘




1:概述题

都知道数据库使用索引能够提高效率,为什么,用自己的理解简单描述。

这道题是后面n多题的基础。


2:实战题

引用
2.1
借了一道据说是腾讯面试的题目,和我当年在某公司商业分析部招聘的题目几乎一样,这道题很有代表性,拿出来说一下。
现在有个文件里有40亿条无重复整型数,为4字节无符号数,或者说,0 到 2的32次方。下面要求你写一个程序,列出所有 0 -2的32次方里,该文件不存在的整数。注意你的系统可用内存是有限的,也许只有1G或2G。如果这40亿条有重复,有什么区别?

 

引用
2.2
一个很典型常见问题,对用户做地区判定,比如新浪首页,百度新闻首页,会根据不同地区用户显示当地的新闻;比如百度,谷歌搜索结果会根据不同用户地区显示不同广告。这个是基于用户ip地址的,ip地址区间是国际组织分配的,非常散列,并不是严谨的顺序, 现在已知有10万段的ip地址对应段。在高并发情况下,如何在用户访问的时候快速返回该用户对应的地区,给出你的方法和要点。注意,效率是考核的关键,如果一秒钟无法实现超过1000次不同ip的查询结果(单台双至强服务器只做该查询的情况下),效率肯定不行的。

 

引用
2.3
又一个典型问题,目前政府有屏蔽词表,每个网站都要遵守,发帖的时候会自动替换屏蔽词;另一个场景是诸如新浪新闻等媒体往往有商业词表,发新闻的时候会自动建立关键词铆接。这个相当于一个简单的基于词典的分词系统,下面的问题就是,如何实现一个快速有效的,基于自定义词典精确匹配的分词系统,一是要满足每
天几万篇,几十万篇文章发布的要求;另一个必须的要求是,当词库倍增扩展时(比如10万词),效率的影响不允许是线性降低的。




如果您愿意接受挑战,与我们一起创业,创造大局面,欢迎将您的答案发送到 caozheng@gmail.com

,谢谢。优秀的答案我会尽可能回复,谢谢。

原文 : http://hi.baidu.com/caoz/blog/item/2902baa153984b86471064fd.html

 

 

分享到:
评论
4 楼 liguocai2009 2011-12-15  
ZeaLoVe 写道
ZeaLoVe 写道
第一题用编程珠玑的位图法轻松搞定。。。

定义一个bool数组 a[] 大小就2的32次方+1,然后全部初始化为0, 0表示数字没出现,1表示数字出现了。然后读入文件,出现数字N就把a[N]=1 重复的情况也差不多。读完文件后,扫描一次a数组就行了,输出里面等于0的数字就是文件中没出现的。
时间复杂度 O(2N)因为文件读入可能会有点慢。空间需要2的32次方/8 byte 大约0.5G

大概这样,不知道我的理解OK不?

关键是40亿个整数到内存就是14G+了?
而且存放结果用了2^32/8*2^30 = 0.5G.
如何利用读取和判断成了关键。

前面有提示,说要用到索引的思想哦。
3 楼 ZeaLoVe 2011-12-08  
ZeaLoVe 写道
第一题用编程珠玑的位图法轻松搞定。。。

定义一个bool数组 a[] 大小就2的32次方+1,然后全部初始化为0, 0表示数字没出现,1表示数字出现了。然后读入文件,出现数字N就把a[N]=1 重复的情况也差不多。读完文件后,扫描一次a数组就行了,输出里面等于0的数字就是文件中没出现的。
时间复杂度 O(2N)因为文件读入可能会有点慢。空间需要2的32次方/8 byte 大约0.5G

大概这样,不知道我的理解OK不?
2 楼 liguocai2009 2011-12-08  
看起来哥挺专业的,有什么好的大数据处理资料介绍一下?我们公司现在处理大量数据的时候老是内存溢出,然后宕机。往往都是一个arrayList放了20万+条数据。。。
1 楼 ZeaLoVe 2011-12-05  
第一题用编程珠玑的位图法轻松搞定。。。

相关推荐

    Python库 | can_show_you_anything_ai-0.1.8.tar.gz

    "can_show_you_anything_ai" 库很可能集成了机器学习、计算机视觉、自然语言处理或语音识别等AI子领域的一些工具和算法,使得开发者能够快速搭建起演示或教育性的AI应用。 Python作为一种强大的开发语言,广泛应用...

    FFT.zip_FFT matlab_You Can!_fft_fft matlab_matlab fft

    FFT算法极大地提高了计算离散傅里叶变换(DFT)的效率,尤其对于大规模数据处理。标题中的"FFT.zip_FFT matlab_You Can!"表明这是一个关于MATLAB实现FFT的代码集合,旨在帮助用户理解并应用FFT。 "FFT You can ...

    can_you_catch_me.rar_catch me

    本文将围绕"can_you_catch_me.rar_catch me"这个游戏项目,深入探讨MFC对话框控件的基本属性和应用。 首先,游戏"catch me"是一个基于MFC的小游戏,旨在帮助开发者熟悉和掌握对话框控件的使用。对话框在Windows程序...

    Disk-Information-Update.rar_You Can!_disk update

    标题中的“Disk-Information-Update.rar_You Can!_disk update”表明这是一个关于磁盘信息更新的压缩文件,其中包含了可以让你了解或操作磁盘更新的相关资料。"You Can!"可能是一个鼓励用户自行掌握和执行磁盘更新的...

    MSA.rar_You Can!_msa

    在"You Can! MSA"的主题下,我们探讨的是如何轻松地构建和管理微服务架构。微服务的核心理念在于解耦,它将大型应用分解成一组小而专注的服务,每个服务都有自己的业务能力,并通过API进行通信。这样做的好处是,...

    I can see you by honker_f117.rar

    标题"I can see you by honker_f117.rar"暗示我们正在处理一个远程协助软件的源代码,可能是一个用于安全远程访问和控制的程序。这个软件可能是由编程语言C#编写,C#以其面向对象的特性,丰富的库支持以及.NET框架的...

    IT英语选择题库宣贯.pdf

    这是一句询问是否需要帮助的常用语,"Is there anything I can do for you?"。 10. Do you think you could __________ me your dictionary? 正确答案是B. lend。lend表示借出,borrow是借入。 11. I would ______...

    Bai1.rar_You Can!

    2. **指令集**:学习特定架构(如x86、ARM等)的汇编指令,包括数据处理、转移控制、输入/输出等。 3. **寄存器**:理解处理器中的寄存器如何工作,它们如何存储和传递数据。 4. **语法与符号**:学习汇编语言的...

    IT英语选择题库.pdf

    该题目隐含的知识点是计算机的基本概念和数据处理的概念。 5. __________ devices __________ output results from the computer __________ a form that can be used by people. 这里考察的是计算机外围设备的...

    解决样式多问题 You can define up to 4000 styles 包括poi全部jar

    4. **分批处理**:如果数据量太大,无法在一个工作簿中避免超过4000个样式,可以考虑将数据分批处理,创建多个小工作簿,每个工作簿内的样式不超过限制。 5. **自定义实现**:对于特别复杂的需求,可以考虑绕过...

    adv.zip_You Choose!_adv

    描述中的"AVD example where you can either choose random nodes or your own."进一步解释了这是一个AVD的实例,它允许用户有选择性地进行操作。用户既可以挑选系统提供的随机节点,也可以选择自行定义的节点。这...

    信息安全_数据安全_Seriously,I Can Still See You.pdf

    "信息安全_数据安全_Seriously,I Can Still See You.pdf" 这个文件标题暗示了内容可能涉及一种安全威胁,即即使采取了一定的防护措施,攻击者仍然可以窥探到敏感信息。这通常涉及到高级的黑客技术,如网络监控、...

    计算机专业英语模拟试题2.pdf

    1、With Windows, you can run several powerful applications at once and switch quickly ____ them. 答案:B. among 解释:在Windows中,你可以同时运行多个强大应用程序并快速在它们之间切换。 2、He doesn’t ...

    Test-C-CPP.rar_You Can!

    理解数组的索引和遍历方式对于处理批量数据至关重要。而指针是C语言的精髓,它可以存储内存地址,使你能直接操控内存,实现高效的数据操作和动态内存管理。 在解决压缩包中的练习题目时,你可能会遇到一些进阶主题...

    matlab-camer.zip_You Can!

    在MATLAB中调用摄像头是许多用户在进行图像处理或实时数据分析时的常见需求。"matlab-camer.zip_You Can!" 这个压缩包文件很可能是为了帮助用户学习如何在MATLAB环境中与摄像头交互而设计的。让我们深入探讨一下...

    Is Parallel Programming Hard, And, If So, What Can You Do About It?

    - **分布式内存模型**(如MPI)更适合处理大规模并行计算任务,特别是当数据集很大时。 - **混合模型**结合了共享内存和分布式内存的特点,适用于需要处理大量数据同时又有复杂数据共享需求的应用。 2. **使用...

    Is Parallel Programming Hard, And, If So, What Can You.pd

    在深入探讨并阐述《Is Parallel Programming Hard, And, If So, What Can You.pdf》一书的知识点之前,首先需要对文档中给出的片段进行梳理。文档的标题与描述都暗示了书籍的主题围绕着并行编程的难度以及应对这种...

    GPRS_SERVERSIDE_PYTHON.rar_python_python gprs_python can

    为了进一步理解这个项目,你需要解压并查看代码,了解具体实现细节,包括如何配置GPRS连接,如何处理CAN数据,以及数据存储和访问的方式等。同时,可能还需要参考相关的Python库文档,如`pygsm`用于GPRS通信,`...

    caz.rar_Do You_drawql3_对话框与窗口

    【描述】"You can hook the system and do what you want!" 这句话涉及到系统钩子(System Hook)的概念。在编程中,系统钩子是一种技术,允许程序监视和控制其他程序的行为。通过设置钩子,开发者可以拦截系统消息...

    I CAN SEE YOU +IPAddressControlLib

    标题"I CAN SEE YOU + IPAddressControlLib"涉及到的是一款名为"I Can See You"的远程控制软件,结合描述,我们可以深入理解其功能和所包含的组件。远程控制软件允许用户通过网络远程访问并控制另一台计算机,这在...

Global site tag (gtag.js) - Google Analytics