版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年联通校招《大数据开发》笔试真题(附答案)一、单项选择题(每题1.5分,共30分)1.以下哪个组件是Hadoop生态中的分布式协调服务?A.HiveB.ZooKeeperC.FlumeD.Sqoop答案B解析ZooKeeper是一个分布式协调服务,常为HBase、Kafka、HDFSHA等提供分布式锁、配置管理和集群元数据管理。2.HDFS默认的副本因子(replicationfactor)是多少?A.1B.2C.3D.4答案C解析HDFS默认将数据块复制为3份,默认存储于相同机架的两个不同节点上,以保证容错与可靠性,可通过dfs.replication配置修改。3.MapReduce中,哪个阶段负责将相同key的数据分发到同一个Reduce任务?A.Map阶段B.Shuffle阶段C.Reduce阶段D.Input阶段答案B解析Shuffle阶段包含分区(Partition)、排序(Sort)、合并(Combine)与归并(Merge),通过分区函数保证具有相同key的记录进入同一个Reducer。4.下列哪种数据结构适合在Spark中表示"key-value对"的分布式集合?A.RDDB.DataFrameC.DatasetD.PairRDD答案D解析PairRDD是包含键值对的RDD,通过rdd.mapToPair()等操作生成,支持reduceByKey、join、groupByKey等键值对专属算子。5.Spark中map与flatMap的主要区别是什么?A.map返回RDD,flatMap返回DataFrameB.map是一对一映射,flatMap是一对多映射并压平结果C.map是转换算子,flatMap是行动算子D.两者没有区别答案B解析map对每个元素返回一个元素;flatMap对每个元素返回一个迭代器(多个元素),并将所有结果压平为单个RDD。6.Spark中默认的持久化存储级别是下列哪一项?A.MEMORY_ONLYB.MEMORYANDDISKC.DISK_ONLYD.MEMORYONLYSER答案A解析Spark默认持久化级别为MEMORY_ONLY,仅将RDD分区缓存在内存中,内存不足时分区在需要时重新计算。7.以下关于Kafka分区与消费者组的关系,描述正确的是?A.一个分区可以被同一个消费者组内多个消费者同时消费B.一个分区只能被同一个消费者组内一个消费者消费C.消费者组内消费者数量必须等于分区数D.消费者组内消费者数量必须大于分区数答案B解析Kafka中同一消费者组内,一个分区最多只能分配给一个消费者;反之,一个消费者可被分配多个分区。消费者数大于分区数时,多余的消费者处于空闲状态。8.Kafka中用于标识消息在分区内位置的字段是什么?A.keyB.valueC.offsetD.timestamp答案C解析每条消息在所属分区内都有一个唯一且递增的offset,消费者通过提交offset记录消费进度,以实现消息的持续消费与故障恢复。9.Hive中用于控制数据倾斜的常见参数是下列哪一项?A.hive.mapred.modeB.hive.groupby.skewindataC.hive.exec.parallelD.hive.fetch.task.conversion答案B解析hive.groupby.skewindata开启后会启动两个MR任务,在中间层对倾斜key进行随机分发,从而缓解GroupBy聚合时的数据倾斜问题。10.Hive中内表(管理表)与外表(外部表)的本质区别是什么?A.内表存储在HDFS,外表存储在本机B.内表数据不能查询,外表数据可以查询C.删除内表时元数据与数据均被删除;删除外表时仅删除元数据,保留数据D.内表没有分区,外表可以有分区答案C解析Hive管理表删除时,HDFS中的数据和Metastore元数据一并删除;外部表删除时只删除元数据,HDFS上的数据文件仍然保留。11.下列哪个Hive参数可以在开启分区裁剪时避免全表扫描?A.hive.optimize.bucketmapjoinB.hive.optimize.prunerC.hive.exec.parallelD.hive.map.aggr答案B解析hive.optimize.pruner控制分区裁剪优化,开启后Hive在执行查询时会跳过不匹配的分区目录,减少扫描数据量。12.Flink中保证Exactly-Once语义的核心机制是什么?A.分布式快照(Checkpoint)B.SparkStreaming的微批处理C.Kafka的消费者组D.Redis缓存答案A解析Flink基于Chandy-Lamport分布式快照算法实现Checkpoint,结合Kafka等支持事务的Source/Sink以及两阶段提交(Two-PhaseCommit),共同保证端到端的Exactly-Once语义。13.Flink中keyBy算子的作用是下列哪一项?A.对数据流进行全局排序B.根据指定key对数据流进行逻辑分区C.对数据流进行窗口聚合D.将数据流拆分为多个独立子流答案B解析keyBy根据key的哈希值对数据流进行分区,相同key的数据被路由到同一个子任务,后续可在每个key上独立进行状态管理与窗口计算。14.在数据仓库分层架构中,以下哪个层主要负责清洗、转换、标准化原始数据?A.ODS层B.DWD层C.ADS层D.DIM层答案B解析ODS层存放原始数据;DWD层对数据进行清洗、去重、标准化、维度退化等操作,形成一致的明细数据;ADS层面向应用提供汇总指标;DIM层存放维度数据。15.HBase中一张表的数据是按照什么键进行排序存储的?A.插入时间B.RowKey的字典序C.列族名称D.时间戳倒序答案B解析HBase表中的数据按RowKey的字节序(字典序)排序存储,因此RowKey设计直接影响查询性能与数据分布均匀性。16.下面关于HBase的MemStore与StoreFile的关系,描述正确的是?A.MemStore数据先写入HDFS,再刷新到内存B.数据先写WAL,再写入MemStore,MemStore达到阈值后刷写为StoreFileC.StoreFile直接提供读写服务,MemStore仅是备份D.MemStore清理后数据永久丢失答案B解析HBase写入时先写WAL(HLog)保证容错,再写入MemStore;当MemStore达到阈值(默认128MB)或全局内存压力较大时,刷写为HDFS上的StoreFile(HFile),后续通过Compaction合并小文件。17.在数仓建模中,星型模型与雪花模型的主要区别是什么?A.星型模型不使用事实表B.雪花模型的维度表会进一步规范化拆分C.星型模型不适用OLAP场景D.两者没有区别答案B解析星型模型中维度表不做拆分,直接与事实表关联;雪花模型将维度表进一步规范化(如将地区维度拆分为省市县多张表),减少冗余但增加查询关联复杂度。18.下列哪种数据压缩方式最适合提高Hive上ORC文件的存储效率?A.LZOB.SnappyC.GzipD.ZSTD答案D解析ZSTD在提供高压缩比的同时保持较高的压缩/解压速度,适合ORC、Parquet等列式存储文件;Snappy速度更快但压缩比偏低,Gzip压缩比高但速度慢。19.关于SparkShuffle中HashShuffleManager与SortShuffleManager,以下说法正确的是?A.SortShuffleManager一定会产生磁盘小文件B.HashShuffleManager在未合并时会产生大量小文件C.Spark2.x默认使用HashShuffleManagerD.两种Shuffle机制均不产生溢写文件答案B解析未开启合并机制时,HashShuffleManager每个MapTask会为每个Reducer生成一个文件,文件数=M×R,极易产生大量小文件;SortShuffleManager为Spark1.6+默认,按分区排序后输出文件,并结合reduce端拉取机制减少文件数。20.数据质量校验中,用于度量数据缺失情况的指标是下列哪一项?A.唯一率B.空值率C.精确率D.召回率答案B解析空值率指某字段中空值(NULL或空串)记录数占总记录数的比例,是最基本的数据质量监控指标之一。二、多项选择题(每题2分,共20分)1.下列哪些组件属于Hadoop生态圈?A.HiveB.HBaseC.KafkaD.Flume答案A、B、C、D解析Hive(数据仓库)、HBase(NoSQL数据库)、Kafka(消息队列)、Flume(日志采集)均属于Hadoop生态体系组件。2.关于SparkRDD的特性,下列说法正确的有哪些?A.RDD是不可变的B.RDD可分区C.RDD具有容错性D.RDD是惰性求值的答案A、B、C、D解析RDD(弹性分布式数据集)具有不可变性、可分区的特性;通过血缘(Lineage)机制在分区丢失后重新计算实现容错;转换操作(如map、filter)是惰性的,只有遇到行动算子才真正执行。3.Kafka的特性包括以下哪些?A.高吞吐、低延迟B.消息持久化C.分布式可扩展D.消息回溯消费答案A、B、C、D解析Kafka具有高吞吐低延迟、消息持久化到磁盘、水平扩展、支持通过offset回溯消费等特性。4.Flink中常见的Window类型包括哪些?A.TumblingWindowB.SlidingWindowC.SessionWindowD.GlobalWindow答案A、B、C、D解析Flink支持滚动(Tumbling)、滑动(Sliding)、会话(Session)和全局(Global)四种窗口类型,前三者分别对应TumblingEventTimeWindows、SlidingEventTimeWindows、EventTimeSessionWindows。5.关于Hive分区表,下列说法正确的有哪些?A.分区字段是一个虚拟列,不参与实际数据存储B.分区可以降低查询扫描的数据量C.动态分区可在写入时自动创建分区目录D.静态分区和动态分区可以混合使用答案A、B、C、D解析分区字段是虚拟列,值为对应分区目录名;查询时通过分区裁剪减少扫描量;INSERT时可使用PARTITION(dt)显式指定静态分区,或使用PARTITION(dt)加SELECT方式动态生成分区,二者可混合使用。6.在协调HDFS高可用时,ZooKeeper承担哪些职责?A.管理Active/StandbyNameNode的选主B.存储HDFS文件数据C.记录NameNode的Active状态D.执行MapReduce计算任务答案A、C解析ZooKeeper通过临时节点和Watcher机制实现NameNode主备选举与状态记录;HDFS数据由DataNode存储,计算任务由YARN调度执行。7.下列关于SQL中GROUPBY的用法,符合语法的有哪些?A.SELECTdept_id,COUNT(*)FROMempGROUPBYdept_id;B.SELECTdept_id,AVG(salary)FROMempGROUPBYdept_id;C.SELECTdept_id,MAX(salary)FROMempWHEREsalary>5000GROUPBYdept_id;D.SELECTdept_id,salaryFROMempGROUPBYdept_id;答案A、B、C解析GROUPBY后SELECT中只能包含分组列和聚合函数。D选项中salary既不在分组列中,也没有被聚合,违反分组查询规则,故错误。8.以下关于HBaseRowKey设计原则,合理的做法有哪些?A.尽量使用单调递增的RowKey(如时间戳直接做RowKey)B.采用加盐(salting)方式打散写入热点C.保证RowKey长度尽量短D.将经常一起查询的字段拼接进RowKey答案B、C、D解析直接使用时间戳等单调递增RowKey会导致热点写集中在Region尾部,产生Region热点;采用加盐、哈希或反转前缀等方式打散可保证写入均衡。RowKey应尽量短(通常不超过16字节)以节省内存;将高频查询条件拼接进RowKey可利用前缀过滤提高查询效率。9.下列哪些工具可用于海量日志数据的采集?A.FlumeB.LogstashC.FilebeatD.DataX答案A、B、C解析Flume、Logstash、Filebeat均适用于日志采集与传输;DataX是异构数据源离线同步工具,主要用于结构化数据在数据库、数仓之间的批量同步,不适合日志流式采集。10.关于ClickHouse与Doris的对比,下列说法正确的有哪些?A.ClickHouse是列式存储数据库B.Doris同时支持明细模型、聚合模型和更新模型C.ClickHouse擅长单表亿级数据聚合查询D.Doris不支持实时写入答案A、B、C解析ClickHouse与Doris均为列式存储的OLAP数据库。ClickHouse在单表聚合场景优势明显;Doris支持明细(Duplicate)、聚合(Aggregate)、更新(Unique)三种数据模型,并支持实时导入。D选项错误。三、判断题(每题1分,共15分)1.HDFS适合存储大量小文件。答案错误解析NameNode将文件元数据保存在内存中,大量小文件会耗尽NameNode内存并降低读写效率,HDFS适合大文件存储。2.Spark的reduceByKey在Map端会先进行局部聚合。答案正确解析reduceByKey会在Map端执行Combine(局部聚合),减少Shuffle数据量,性能优于未做局部聚合的groupByKey。3.MapReduce中,Combiner的输出类型必须与Reduce的输入类型一致。答案正确解析Combiner本质是运行在Map端的局部Reducer,其输入输出key-value类型规定与Reducer一致。4.Spark的broadcast变量在Executor端可被修改。答案错误解析广播变量是只读的,用于在Executor端缓存大表数据。广播变量的副本不可在Executor端被修改。5.Flink支持事件时间(EventTime)处理,且能处理乱序数据。答案正确解析Flink支持EventTime语义,通过Watermark机制处理乱序数据,允许设置延迟允许度,保证窗口计算的正确性。6.Kafka的消息一旦被消费者消费,就会立刻从磁盘上删除。答案错误解析Kafka基于日志保留策略(log.retention.hours,默认168小时)或大小阈值删除旧消息,与消费者是否消费无关;消费者可以基于offset回溯消费未被删除的消息。7.Hive中分区列的值必须与数据文件中的某一列完全对应。答案错误解析分区列是虚拟列,不存储在数据文件中,而是通过目录名(如dt=20250101)表示,用户看不到物理存储形式。8.HBase适合对全表做复杂的关联查询分析。答案错误解析HBase是KV型NoSQL数据库,擅长海量数据随机读写,不支持SQL复杂关联分析;此类场景应使用Hive、SparkSQL、ClickHouse等OLAP组件。9.数据仓库中,ODS层通常保存原始数据,不做大幅度清洗。答案正确解析ODS(操作数据存储)层与源系统保持同构,主要做增量/全量同步、简单格式转换,复杂的清洗和标准化一般在下游DWD层完成。10.SparkStreaming和Flink都可以实现状态管理。答案正确解析SparkStreaming通过mapWithState支持状态管理;Flink通过KeyedState(ValueState、ListState、MapState等)和Checkpoint机制实现有状态流处理。11.Hive中ORDERBY是全局排序,SORTBY是分区内排序。答案正确解析ORDERBY对全部数据全局排序,通常只用一个Reducer,效率低;SORTBY在每个Reducer输出文件内部排序,整体不保证全局有序。12.在大数据量关联查询中,使用MapJoin可以有效避免Shuffle。答案正确解析MapJoin将小表分发到每个MapTask内存中,在Map端直接完成关联,不经过Shuffle阶段,适合大表Join小表场景。13.ClickHouse的MergeTree引擎主要用于OLTP高并发点查场景。答案错误解析MergeTree是ClickHouse面向分析场景的核心表引擎,擅长海量数据的批量写入与聚合查询;OLTP高频点查不是ClickHouse的应用方向。14.物化视图(MaterializedView)可以存储预先计算好的查询结果,以加速报表查询。答案正确解析物化视图将查询结果物化为物理存储,查询时直接读取预计算结果,避免重复计算,适合固定报表的高频查询加速。15.数据湖与数据仓库可以共存,数据湖存储原始数据,数据仓库承载加工后的高价值数据。答案正确解析湖仓一体架构中,数据湖以低成本存储全量原始数据(结构化、半结构化和非结构化),数据仓库在其上构建分层模型,兼顾灵活性、成本与查询性能。四、简答题(每题5分,共15分)1.简述Hadoop生态中NameNode和DataNode的职责。答案NameNode为主节点,负责管理HDFS的命名空间(目录、文件与块映射关系)、维护副本策略、处理客户端读写请求;DataNode为从节点,负责实际存储数据块、执行数据块的读写、定期向NameNode上报心跳与块报告,并参与数据块的复制与删除。2.简述Spark中宽依赖与窄依赖的区别,并各举一例。答案窄依赖是指父RDD的每个分区最多被子RDD的一个分区使用,不需要跨节点进行Shuffle操作,例如map、filter和union;宽依赖是指父RDD的每个分区可能被子RDD的多个分区使用,父RDD的数据需要经过Shuffle重新分发,例如groupByKey、reduceByKey和join。窄依赖在某个分区计算失败时只需重算对应父分区,而宽依赖失败时通常需要重算全部父分区数据,因此窄依赖执行效率更高。3.简述实时数仓与离线数仓在数据处理时效性与架构上的主要区别。答案离线数仓以T+1或更长周期批量处理为主,使用Hive、Spark等批处理框架,数据延迟高,适合日报、月报等固定报表场景;实时数仓以分钟级乃至秒级延迟为目标,采用Flink、Kafka等流式计算组件,数据按事件实时流转(如ODS→DWD→ADS的流式分层),适合实时大屏、实时风控、实时推荐等场景。离线数仓通常基于HDFS存储与分区表,实时数仓在存储上常结合Kafka、Doris、ClickHouse或HBase实现低延迟查询。五、SQL编程题(每题5分,共10分)1.已知订单表orders结构如下:•order_idSTRING—订单ID•user_idSTRING—用户ID•amountDECIMAL(10,2)—订单金额•order_timeSTRING—下单时间,格式为yyyy-MM-ddHH:mm:ss请编写HiveSQL,统计每个用户的累计消费金额(即从首单到当前订单的累计值)及消费排名(按累计金额降序)。SELECT
user_id,
order_time,
amount,
SUM(amount)OVER(PARTITIONBYuser_idORDERBYorder_timeROWSBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW)AScum_amount,
RANK()OVER(ORDERBYSUM(amount)OVER(PARTITIONBYuser_id)DESC)ASrank
FROM(
SELECT
user_id,
order_time,
amount,
SUM(amount)OVER(PARTITIONBYuser_idORDERBYorder_timeROWSBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW)AScum_amount
FROMorders
)t
GROUPBYuser_id,order_time,amount,cum_amount;解析:使用窗口函数SUM(...)OVER(PARTITIONBY...ORDERBY...)实现累计求和,ROWSBETWEENUNBOUNDEDPRECEDINGANDCURRENTROW指定从分区起点累计到当前行;排名使用RANK()OVER(ORDERBY...DESC)按累计消费金额降序排列。2.已知用户表users:•user_idSTRING—用户ID•reg_dateSTRING—注册日期,格式为yyyy-MM-dd已知消费流水表user_pay:•user_idSTRING—用户ID•pay_timeSTRING—支付时间,格式为yyyy-MM-ddHH:mm:ss•pay_amountDECIMAL(10,2)—支付金额请编写SQL统计「首单用户」数量:即注册日期当天完成第一笔支付的用户(一个用户可能有多笔支付记录)。SELECTCOUNT(DISTINCTt.user_id)ASfirst_order_user_cnt
FROM(
SELECT
u.user_id,
p.pay_time,
ROW_NUMBER()OVER(PARTITIONBYp.user_idORDERBYp.pay_timeASC)ASrn
FROMusersu
JOINuser_payp
ONu.user_id=p.user_id
)t
WHEREt.rn=1
ANDTO_DATE(t.pay_time)=u.reg_date;解析:通过窗口函数ROW_NUMBER()按用户分组、按支付时间升序编号,取出rn=1的首笔支付记录,并与注册日期比较,统计满足条件的用户数。注意需要将users表字段reg_date在子查询中一并带出,或在外部通过JOIN关联后过滤。六、综合题(10分)1.某运营商业务部门需要一个「用户实时消费监控大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秀山土家族苗族自治县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年交口县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年宁武县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年南昌县社区工作者招聘考试备考题库及答案解析
- 2026年合水县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年留坝县社区工作者招聘笔试备考题库及答案解析
- 2026年临泽县医疗事业单位人员招聘笔试备考试题及答案解析
- 2026年翁源县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年塔河县医疗事业单位人员招聘考试备考试题及答案解析
- 2026年新平彝族傣族自治县医疗事业单位人员招聘考试备考试题及答案解析
- 术中获得性压力性损伤预防
- DL-T596-2021电力设备预防性试验规程
- 新学期开笔礼
- 大学语文(第三版)课件 都江堰
- 混凝土浇灌证明1
- 安规考试题库
- GB/T 19363.1-2022翻译服务第1部分:笔译服务要求
- 山东2023年青岛银行总行部门社会招聘考试参考题库含答案详解
- 遥控匹配防盗设定方法-丰田it2使用知识
- SB/T 10530-2009商务领域射频识别标签数据格式
- 中药的采收、加工与贮藏 课件
评论
0/150
提交评论