首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
码坛麻瓜
西安电子科技大学 Java
关注
已关注
取消关注
@中关村一级划水运动员:
Java面试知识点总结-场景题
高并发类 设计一个能亿级并发的系统 https://blog.csdn.net/wenlin_xie/article/details/87708371https://www.cnblogs.com/zhuzhen/p/9340941.html 数据处理类 海量数据场景处理思路 分而治之/hash映射 + hash统计 + 堆/快速/归并排序 双层桶划分 Bloom filter / Bitmap Trie树/数据库/倒排索引 外排序 分布式处理 海量数据排序 1TB的数据需要排序,限定使用32GB的内存如何处理? 例如,考虑一个 1G 文件,只可用内存 100M 的排序方法。首先将文件分成 10 个 100M ,并依次载入内存中进行排序,最后结果存入硬盘。得到的是 10 个分别排序的文件。接着从每个文件载入 9M 的数据到输入缓存区,输出缓存区大小为 10M 。对输入缓存区的数据进行归并排序,输出缓存区写满之后写在硬盘上,缓存区清空继续写接下来的数据。对于输入缓存区,当一个块的 9M 数据全部使用完,载入该块接下来的 9M 数据,一直到所有的 9 个块的所有数据都已经被载入到内存中被处理过。最后我们得到的是一个 1G 的排序好的存在硬盘上的文件。 解法: 把磁盘上的 1TB 数据分割为 40 块,每份 25GB。注意,要留一些系统空间! 顺序将每份 25GB 数据读入内存,使用 quick sort 算法排序。 把排序好的数据存放回磁盘。 循环 40 次,现在,所有的 40 个块都已经各自排序了。 从 40 个块中分别读取 25G/40 = 0.625G入内存 执行 40 路合并,并将合并结果临时存储于2GB 基于内存的输出缓冲区中。当缓冲区写满 2GB 时,写入硬盘上最终文件,并清空输出缓冲区当 40 个输入缓冲区中任何一个处理完毕时,写入该缓冲区所对应的块中的下一个 0.625GB ,直到全部处理完成。 继续优化: 使用并发:如多磁盘(并发I/O提高)、多线程、使用异步 I/O 、使用多台主机集群计算 提升硬件性能:如更大内存、更高 RPM 的磁盘、升级为 SSD 、 Flash 、使用更多核的 CPU 提高软件性能:比如采用 radix sort 、压缩文件(提高I/O效率)等 海量数据查询 海量日志数据,提取出某日访问百度次数最多的那个IP 解法:首先过滤日志文件,将某日的 ip 过滤出来,保存在一个大文件内。然后对这些 ip 求 Hash 值,得到 Hash 值后再对 1000 取模,然后将计算后的值作为该 ip 写入的目标文件下标。上述操作中,每个 IP 仅会保存在 1000 个小文件中的某一个文件中。每个小文件中的数据以键值对的形式保存。最后可从这 1000 个小文件中找到一个或几个出现概率最大的 IP 。 海量日志数据,提取出搜索量前十的查询串,每个查询串的长度为1-255字节,要求内存不能超过1G(Top-K) 解法:虽然有一千万 个Query,但是由于重复度比较高,因此事实上只有 300 万的 Query ,每个 Query 最大 255 Byte,因此我们可以考虑把他们都放进内存中去,而现在只是需要一个合适的数据结构,在这里, Hash 表是优先的选择。所以摒弃分而治之或 hash 映射的方法,直接上 hash 统计,然后排序。 一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。 解法:顺序读取文件,对于每个词 x,取 Hash(x)%5000 ,存放到对应的 5000 个小文件中。这样,每个小文件大概为 200k 左右。然后加载每一个小文件并做Hash统计。最后使用堆排序取出前 100 个高频词,使用归并排序进行总排序。 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 解法:顺序读取文件 a ,对每个 url 做如下操作:求 Hash(url)%1000 ,然后根据该值将 url 存放到 1000 个小文件中的某一个小文件并记录出现次数。按照这样划分,每个小文件的大小大约 300M 。同理,对文件 b 做上述操作。此时,如果存在相同的 url ,那么 url 一定会出现在同一个下标内的文件中。接下来只需要遍历这 1000 个文件即可。 2.5亿个整数中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数 采用 2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存 2^32*2bit=1GB 内存,还可以接受。然后扫描这 2.5 亿个整数,查看 Bitmap 中相对应位,如果是 00 变 01 , 01 变 10 , 10 保持不变。扫描后,查看 bitmap ,把对应位是 01 的整数输出即可。 5亿个int找它们的中位数 首先我们将 int 划分为 2^16 个区域,然后读取数据统计落到各个区域里的数的个数,之后我们根据统计结果就可以判断中位数落到那个区域,同时知道这个区域中的第几大数刚好是中位数。然后第二次扫描我们只统计落在这个区域中的那些数就可以了。实际上,如果不是 int 是 int64 ,我们可以经过 3 次这样的划分即可降低到可以接受的程度。即可以先将 int64 分成 2^24 个区域,然后确定区域的第几大数,在将该区域分成 2^20 个子区域,然后确定是子区域的第几大数,然后子区域里的数的个数只有 2^20 ,就可以直接利用direct addr table 进行统计了。 已知某个文件内包含一些电话号码,每个号码为8位数字,统计不同号码的个数 8 位最多99 999 999,大概需要 99m 个bit,大概 10m 字节的内存即可。 (可以理解为从0-99 999 999的数字,每个数字对应一个Bit位,所以只需要 99m 个Bit==1.2MBytes,这样,就用了小小的 1.2M 左右的内存表示了所有的8位数的电话) 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 申请 512M 的内存,一个 bit 位代表一个 unsigned int 值。读入 40 亿个数,设置相应的 bit 位,读入要查询的数,查看相应 bit 位是否为 1 ,为 1 表示存在,为 0 表示不存在。
点赞 10
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
08-14 23:13
北京邮电大学 Java
京东零售 二面
你在学校里面做过哪些项目?你的技术栈什么?你在学校里面有没有竞赛专利,奖项?Java你大概学了多久?项目单个模块里面就说一下有哪些技术栈,涉及的表有哪些怎么设计这些表的。能说就是这几张表的设计,表里边的字段都涉及哪些,为什么这么设计呢?怎么做乐观锁,乐观锁是怎么解决超卖和一人一单的?如何保证数据一致性?举个例子,我再给这个库存里面再加东西,然后你怎么让 Redis 里边的数据和 MySQL 的数据是一致的?就是因为我这个库存还在上架,数据一直在变,这种极端场景是怎么处理的?解决了这个超卖,你有没有在就是压力的情况下去解决这个超卖的问题?就是多个用户去抢,有压力的情况下,在上库存的过程中,怎么去...
查看30道真题和解析
点赞
评论
收藏
分享
08-14 15:20
已编辑
美团_软件开发(实习员工)
快手秋招一面(复活版
实习拷打redis单机扛不住,又想业务不受损怎么办AI这方面有哪些了解你觉得设计一个POI有哪些难点kafka的架构mysql三大日志,写顺序redis的内存设计B+树跳表redis数据结构redis为什么高并发表现好垃圾回收器G1和CMS的适用场景是什么手撕:最长回文子串面试体验最好的一次,很有礼貌很温柔的面试官
查看11道真题和解析
点赞
评论
收藏
分享
07-31 17:07
湘潭大学 嵌入式工程师
嵌入式烂完了?
不!是我烂完了!!嵌入式怎么这么难找实习??要摆烂了,开学就大四秋招了,真的找不到实习,有没有大佬帮我看看这份简历有没有问题,有没有什么需要修改的地方。感觉自己大学算是什么都没学,也没有什么竞赛经历,项目也是临时做出来的有一些地方是编的,找不到实习是不是秋招就毁完了,焦虑啊😭😭
DKS233:
项目写太简单了,你用什么技术实现了什么功能,优化了多少,分了哪些模块,解决了哪些难点,最好分模块写,你写的太模糊了。精通还是少用吧,你确定问你底层你扛的住吗,最好用熟悉。具备良好**意识,这种空话不要写,技能层面,要写就写实在的,比如“熟悉常用数据结构,如,堆,栈,链表,哈希表,平衡树”这种
你的简历改到第几版了
点赞
评论
收藏
分享
07-04 11:16
已编辑
饿了么_技术中心_研发工程师Java(实习员工)
双非本 0offer😭 又被捞了
没实力 更新...被捞了,昨天中午 oc,下午意向请问意向了是否 offer 一定发呀,hr 说小助手后续会联系
空白格_1:
科软的还被排序?不是大雪深埋吗
点赞
评论
收藏
分享
08-14 00:18
后端
腾讯内推腾讯面经
腾讯-校招内推 热乎乎的内推码:EUTPZZRV 腾讯崇尚开放沟通,鼓励员工畅所欲言,为员工提供良好的沟通交流平台。 走上面链接投递就是我内推,全程push 杜绝石沉大海 分享一些面经: 第一轮技术面 闭包作用及实际应用场景 HTTP/1.1、HTTP/2、HTTP/3的核心差异 实现红绿灯控制效果(异步时序逻辑) React Hooks的设计动机与类组件对比 浏览器事件代理原理及实际应用 手写Promise核心逻辑(包含resolve/reject) 数组去重与高频字符统计算法 Web安全防护措施(XSS、CSRF) 浏览器渲染流程与重排/重绘优化 跨域解决方案(JSONP、CORS、代...
腾讯HR面2804人在聊
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
小红书-引擎架构- java实习-一&二面凉经
3965
2
...
影石嵌入式面经
3503
3
...
拼多多笔试
3415
4
...
pdd笔试
2878
5
...
京东笔试(离AK最近的一次,可惜)
2797
6
...
大疆结构秋招一面
2139
7
...
救救孩子吧
2110
8
...
美团8.16笔试(进度2.25/3)
2054
9
...
猿辅导-内容服务后端-java实习-一面凉经
1993
10
...
再也不诋毁后端了(附27届双非本找第一段实习经历)
1982
创作者周榜
更多
正在热议
更多
#
秋招笔面试记录
#
225485次浏览
3771人参与
#
我心目中的理想工作是这样的
#
74516次浏览
858人参与
#
如果工作一直消耗情绪还要继续做吗
#
7183次浏览
57人参与
#
牛客周边新品开箱
#
8167次浏览
86人参与
#
晒出你年味最浓的照片
#
18940次浏览
147人参与
#
假如你的老板掉河里,你的工作能为他做什么
#
32939次浏览
386人参与
#
今年春节,家人对你说的最多的话是什么?
#
15706次浏览
120人参与
#
如果公司给你放一天假,你会怎么度过?
#
20505次浏览
134人参与
#
毕业季,你想好怎么跟生活对线了吗?
#
237361次浏览
3790人参与
#
给26届的秋招建议
#
46188次浏览
1155人参与
#
在职场上,你最讨厌什么样的同事
#
28748次浏览
212人参与
#
扒一扒那些奇葩实习经历
#
72911次浏览
940人参与
#
秋招投递记录
#
29629次浏览
324人参与
#
我的秋招“寄”录
#
51187次浏览
646人参与
#
辞职之后最想做的一件事
#
21865次浏览
226人参与
#
校招第一份工作你干了多久?
#
100246次浏览
442人参与
#
比亚迪求职进展汇总
#
753160次浏览
3104人参与
#
饿了么求职进展汇总
#
65816次浏览
640人参与
#
实习的内耗时刻
#
65273次浏览
688人参与
#
如果校招重来我最想改变的是
#
281652次浏览
2916人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务