20240306-1-大数据的几个面试题目
面试题目
1. 相同URL
题目: 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
方案1:估计每个文件的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。
遍历文件a,对每个url求取 hash(url)%1000[比如ASCII码值求和], 然后根据所取得的值将url分别存储到1000个小文件(记为a0, a1, … , a999)中。这样每个小文件的大约为300M。遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为b0, b1, … , b999)。
这样处理后,所有可能相同的url都在对应的小文件(a0 vs b0, a1 vs b1, … , a999 vs b999)中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。
求每对小文件中相同的url时,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。
方案2:如果允许有一定的错误率,可以使用Bloom filter,4G内存大概可以表示340亿bit。将其中一个文件中的url使用Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。
2. Query排序
题目: 有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。
方案1:
顺序读取10个文件,按照hash(query)%10的结果将query写入到另外10个文件(r1,r2…r10)中。这样新生成的文件每个的大小大约也1G(假设hash函数是随机的)。[2G左右的机器] 对r1,r2…r10用hash_map(query, query_count)来统计每个query出现的次数。利用快速/堆/归并排序按照出现次数进行排序。将排序好的query和对应的query_cout输出到文件中。这样得到了10个排好序的文件(r1,r2…r10).
对(r1,r2…r10)这10个文件归并排序(内排序和外排序结合)
方案2:
一般query的总量是有限的,只是重复的次数比较多而已,可能对于所有的query,一次性就可以加入到内存了。这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了。
3. Top k 单词
题目: 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。
- 顺序读文件,对每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(x0, x1, … x4999)中。这样每个文件大概是200k左右,如果有的文件超过了1M大小,还可以按照类似的方法继续往下分,直到分解得到的小文件的大小都不超过1M。
- 对每个小文件,统计每个文件出现的词及相应的频率(可以采用trie树/hash_map等),并取出现频率最大的100个词(可以用含100个结点的最小堆),并把100词及相应的频率存入文件,这样又得到了5000个文件。
- 下一步就是把这5000个文件进行归并(类似与归并排序)的过程了。
4. IP统计
题目: 海量日志数据,提取出某日访问百度次数最多的那个IP。
- 定位到某日,并把访问百度的日志中的IP取出来,逐个写入到大文件中。注意IP是32位,最多有2^32个IP。-
- 采用映射的方法,比如模1000,把整个大文件映射为1000个小文件
- 找出每个小文件出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。
- 然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。
5. 不重复的整数
题目: 在2.5亿个整数中找出不重复的整数,内存不足以容纳这2.5亿个整数。
方案1:
采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32*2bit = 1G内存,还可以接受。
扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。方案2:
采用上题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素。
6. Top K
题目: 海量数据分布在100台电脑中,想个办法高校统计出这批数据的TOP10。
mapreduce还没有使用,是不是应该使用下mapreduce, 找key,定value.
相关文章:

20240306-1-大数据的几个面试题目
面试题目 1. 相同URL 题目: 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:估计每个文件的大小为50G64320G,远远大于内存限制的4G。所以…...

Vue中如何处理用户权限?
在前端开发中,处理用户权限是非常重要的一个方面。Vue作为一种流行的前端框架,提供了很多便捷的方式来管理用户权限。本文将介绍一些Vue中处理用户权限的方法 1. 使用路由守卫 Vue Router提供了一个功能强大的功能,即导航守卫(N…...

【STM32】HAL库 CubeMX教程---基本定时器 定时
目录 一、基本定时器的作用 二、常用型号的TIM时钟频率 三、CubeMX配置 四、编写执行代码 实验目标: 通过CUbeMXHAL,配置TIM6,1s中断一次,闪烁LED。 一、基本定时器的作用 基本定时器,主要用于实现定时和计数功能…...

2024年最新整理腾讯云学生服务器价格、续费和购买流程
2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…...

【QT】重载的信号槽/槽函数做lambda表达式
重载的信号槽 函数指针: int fun(int a,long b) int (*funp)(int, long) fun; 实现回调函数就需要函数指针 信号重载 派生类槽函数发送两个信号 派生类给父类发两个信号 void (SubWidget::*mysigsub)() &SubWidget::sigSub;connect(&subw,mysigsub,t…...

C++之类(一)
1,封装 1.1 封装的引用 封装是C面向对象三大特性之一 封装的意义: 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 1.1.1 封装意义一: 在设计类的时候,属性和行为写在一起,表…...

【工具类】repo是什么,repo常用命令,repo和git和git-repo的关系
1. repo 1. repo 1.1. repo是什么1.2. 安装1.3. repo 命令 1.3.1. repo help1.3.2. repo init1.3.3. repo sync1.3.4. repo upload1.3.5. repo start1.3.6. repo forall 1.4. mainfest 文件1.5. git-repo简介(非android repo)1.6. 参考资料 1.1. repo是什么 Repo 是一个 go…...

Java中可以实现的定时任务策略
Java中可以实现的定时任务策略 文章目录 Java中可以实现的定时任务策略自定义独立线程JDK提供的调度线程池-**ScheduledExecutorService**内核是Spring的Task执行调度quartz调度 #mermaid-svg-mQ9rPqk0Ds3ULnvD {font-family:"trebuchet ms",verdana,arial,sans-seri…...

【目标分类图像增强方法】
图像增强方法及其原理 目标分类图像增强是一种用于提高深度学习模型泛化能力的技术,通过在训练过程中对原始图像进行各种变换来增加模型所见数据的多样性。以下是几种常见的图像增强方法及其原理: 几何变换: 旋转(Rotation&#…...

游戏盾如何应对微商城网站DDoS攻击
游戏盾如何应对微商城网站DDoS攻击?随着电子商务的快速发展,微商城网站已成为众多商家开展在线业务的重要平台。然而,与此同时,网络安全威胁也愈发严重。其中,分布式拒绝服务(DDoS)攻击是一种常…...

安卓手机如何使用JuiceSSH实现公网远程连接本地Linux服务器
文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …...

钉钉群内自定义机器人发送消息功能实现
文章目录 钉钉群内自定义机器人发送消息功能实现1、设置webhook自定义机器人2、查看官方文档,使用open api3、编写业务代码4、发送成功结果如下 钉钉群内自定义机器人发送消息功能实现 1、设置webhook自定义机器人 设置关键词 添加完成后,获得改机器人的…...

网站维护3年15000元,贵不贵?市场价多少
一般来说,给公司做好网站上线之后,网站就进入了运维期间,某功力公司给客户收费3年15000元网站运维费用,到底高不高呢? 首先,来看看网站运维都有哪些项目 网站运维涉及多个项目和任务,包括但不限…...

ROS 2基础概念#5:执行器(Executor)| ROS 2学习笔记
在ROS 2中,Executor是一个核心概念,负责管理节点(Node)中的回调函数,如订阅消息的回调、服务请求的回调、定时器回调等。Executor决定了何时以及如何执行这些回调,从而在ROS 2系统中实现异步编程。 ROS 2 …...

Unity 动画(旧版-新版)
旧版 旧版-动画组件:Animation 窗口-动画 动画文件后缀: .anim 将制作后的动画拖动到Animation组件上 旧版的操作 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c1 : MonoBehaviour {// Start is called before…...

Linux和Windows操作系统线程调度策略
本文介绍Linux和Windows操作系统线程调度策略。 不同的操作系统具有不同的线程调度策略,本文针对常见的操作系统(Linux和Windows操作系统)对其线程调度策略作简要说明,并不对其内在运行机制作详细介绍。 1.Linux操作系统线程调度…...

[OpenWrt 22.03] ttylogin添加登录密码与禁止登录的配置
ttylogin 的使用 Openwrt 串口默认是没有密码的。Openwrt启动后,一个默认的密码将被启用去保护ssh登录和页面(http)登录,而串口登录密码却是空缺的。 对于 Openwrt,当内核初始化后,就会启动第一个进程 init,init进程会进行一系列的系统初始化工作,然后会读取 /etc/in…...

RK3568平台 USB数据包的收发格式
一.USB硬件拓扑结构 compound device :多个设备组合起来,通过HUB跟Host相连composite device :一个物理设备有多个逻辑设备(multiple interfaces) 在软件开发过程中,我们可以忽略Hub的存在,硬件拓扑图简化如下&#x…...

Day 8.TCP通信
TCP通信 TCP发端: socket connect send recv close TCP收端: socket bind listen accept send recv close 1.connect int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 功能:发…...

小游戏加固方案已全面适配微信、QQ、抖音、快手、美团、华为、支付宝渠道
2023年,国内移动游戏收入与游戏用户规模双双创下历史新高。其中小游戏异军突起,市场规模达到200亿元,同比增长300%,成了万众瞩目的行业新风口。 小游戏的高速发展带来了更多的活力,产出了多款月流水过亿的热门游戏。行…...

粉色ui微信小程序源码/背景图/头像/壁纸小程序源码带流量主
云开发版粉色UI微信小程序源码,背景图、头像、壁纸小程序源码,带流量主功能。 云开发小程序源码无需服务器和域名即可搭建小程序另外还带有流量主功能噢!微信平台注册小程序就可以了。 这套粉色UI非常的好看,里面保护有背景图、…...

chrome选项页面options page配置
options 页面用以定制Chrome浏览器扩展程序的运行参数。 通过Chrome 浏览器的“工具 ->更多工具->扩展程序”,打开chrome://extensions页面,可以看到有的Google Chrome扩展程序有“选项Options”链接,如下图所示。单击“选项Options”…...

迭代器失效问题(C++)
迭代器失效就是迭代器指向的位置已经不是原来的含义了,或者是指向的位置是非法的。以下是失效的几种情况: 删除元素: 此处发生了迭代器的失效,因为erase返回的是下一个元素的位置的迭代器,所以在删除1这个元素的时候&…...

2-web端管理界面使用rabbitmq
Web管理界面可以直接操作RabbitMQ,下面进行操作并记录步骤 1、添加交换器: Add a new exchange 中,Name是交换器名称,Type是交换器类型,有direce、fanout、heders、topic 4种。 这里先只填Name和选个类型,…...

【华为OD机试】最多购买宝石数目【C卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 橱窗里有一排宝石,不同的宝石对应不同的价格, 宝石的价格标记为gems[i],0<=i<n, n = gems.length 宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续; 例如…...

RK3588 Android 12 源码编译与开发板烧录
前言 开发板型号:RK_EVB7_RK3588_LP4…_V11 获取RK3588源码 解压RK提供的Android 12的tgz,开通权限 your_verify.sh # 身份验证脚本(由RK提供) .repo/repo/repo sync -l # 检出代码 .repo/repo/repo sync -c # 同…...

学习JAVA的第十四天(基础)
目录 Collection集合 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 遍历 数据结构 栈 队列 数组 链表 前言: 学习JAVA的第十三天 Collection集合 Collection的遍历方式: 迭代器(不依赖索引)遍…...

安捷伦N5182A信号源 AgilentN5182A
描述: 1)信号特性: 250 kHz to 3 or 6 GHz频率范围 (可选低至 100 kHz) 13 dBm 1GHz输出功率 5dBm输出功率时W-CDMA动态范围:单载波 ≤-73 dBc ;4载波≤-66 dBc ≤1.2 ms切换速度在SCPI模式 2)调制与扫描&#x…...

就业班 2401--3.7 Linux Day13--日志轮转+jumpserver堡垒机
一、日志轮转 日志重要性 Linux系统日志对管理员来说,是了解系统运行的主要途径,因此需要对 Linux 日志系统有个详细的了解。 Linux 系统内核和许多程序会产生各种错误信息、告警信息和其他的提示信息,这些各种信息都应该记录到日志文件中&a…...

信息安全概论 习题
用密钥information构造一个Playfair矩阵 Playfair密码是一种替换加密技术,它不像传统的单字母替换密码那样工作,而是将信息分成一对字母(双字母)进行加密。构造Playfair矩阵时,首先需要一个密钥词,然后根据…...