2026年大数据开发工程师招聘笔试专业试卷及答案_第1页
2026年大数据开发工程师招聘笔试专业试卷及答案_第2页
2026年大数据开发工程师招聘笔试专业试卷及答案_第3页
2026年大数据开发工程师招聘笔试专业试卷及答案_第4页
2026年大数据开发工程师招聘笔试专业试卷及答案_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年大数据开发工程师招聘笔试专业试卷及答案一、单项选择题(每题2分,共10题,20分)1.在HDFS中,默认的数据块大小是?A.64MBB.128MBC.256MBD.512MB答案B解析Hadoop2.x及之后版本默认块大小为128MB,可通过dfs.blocksize配置调整。2.下列关于SparkRDD的描述,错误的是?A.RDD是不可变的分布式对象集合B.RDD支持惰性求值C.RDD可以被重复使用并自动缓存D.RDD在Shuffle时会自动持久化到磁盘以防止重复计算答案D解析RDD默认不会自动持久化,Shuffle过程产生的中间数据在任务完成后可能被清除;需要手动调用persist()或cache()才能缓存复用。3.一个Kafka主题有4个分区,消费者组中有3个消费者同时订阅该主题,在不额外设置的情况下,每个消费者可能分配到的分区数分别是?A.1、1、2B.2、1、1C.2、2、0D.1、1、1答案B解析同一消费者组内,一个分区只能被一个消费者消费,分配策略尽量平均,因此分区数为2、1、1。4.在HBase中,Region发生分裂的主要触发条件是?A.MemStore写满内存阈值B.Region中某个StoreFile大小超过阈值C.Region的读请求数量超过阈值D.RegionServer的WAL文件数量超过阈值答案B解析HBase中当Region内最大的StoreFile大小超过hbase.hregion.max.filesize(默认10GB)时,该Region会触发分裂。5.下列哪项不是数据仓库建模中的常用概念?A.星型模型B.雪花模型C.雪花算法D.事实表与维度表答案C解析雪花算法是分布式ID生成方案,与数据仓库建模无关。6.Flink中实现端到端Exactly-Once语义的核心机制是?A.Checkpoint与BarrierB.手动ACKC.幂等写入D.事务回放答案A解析Flink基于Chandy-Lamport分布式快照实现Checkpoint,通过Barrier对齐并配合可重放的数据源与幂等/事务写入,实现精确一次处理。7.关于数据倾斜的优化,下列做法不恰当的是?A.两阶段聚合(局部聚合+全局聚合)B.对热点Key加随机前缀打散C.盲目增大并行度D.过滤无业务意义的异常空值答案C解析增大并行度不一定能解决数据倾斜,因为热点Key会集中到某一个或少数几个Task,需要从Key分布和聚合策略入手。8.下列哪种数据结构最适合用于实现LRU缓存?A.数组B.双向链表+哈希表C.二叉搜索树D.优先队列答案B解析哈希表提供O(1)查询,双向链表维护访问顺序,可快速插入和删除节点,是LRU缓存的标准实现方式。9.在SparkSQL中,下列哪个操作会触发Action执行?A.map()B.filter()C.count()D.join()答案C解析map、filter、join均为Transformation,惰性执行;count()返回结果并触发实际计算,属于Action。10.Kafka中消息的有序性保证范围是?A.全局有序B.分区内有序C.主题内有序D.消费者组内有序答案B解析Kafka只保证单个分区内消息有序,不同分区之间不保证全局有序。二、多项选择题(每题3分,共5题,15分;全部选对得3分,少选得1分,多选或错选不得分)1.下列哪些Spark算子属于宽依赖?A.groupByKeyB.reduceByKeyC.mapD.filter答案AB解析宽依赖指父RDD的一个分区被子RDD的多个分区使用,通常伴随Shuffle。groupByKey和reduceByKey会触发Shuffle;map、filter属于窄依赖。2.关于HDFS的数据读写过程,下列说法正确的有?A.客户端从NameNode获取数据块位置信息B.DataNode之间通过管道(Pipeline)依次复制数据副本C.默认副本放置策略将第一个副本放在客户端所在节点D.所有数据写入操作都必须经过SecondaryNameNode答案ABC解析SecondaryNameNode只负责定期合并EditLog和FsImage,不参与数据读写链路。3.Flink中常用的窗口类型包括?A.TumblingWindow(滚动窗口)B.SlidingWindow(滑动窗口)C.SessionWindow(会话窗口)D.CountWindow(计数窗口)答案ABCD解析Flink支持基于时间或数量的多种窗口类型,包括滚动、滑动、会话和计数窗口,以及全局窗口。4.下列哪些措施有助于提升Kafka消费者组的整体消费吞吐量?A.增加Topic分区数B.增加消费者数量(不超过分区数)C.使用批量拉取与批量提交D.调大fetch.max.bytes等拉取参数答案ABCD解析分区数决定并行度上限,增加消费者可提升并行消费能力;批量操作和调大拉取参数能减少网络交互开销。5.下列哪些是Hive支持的数据存储格式?A.ParquetB.ORCC.SequenceFileD.Avro答案ABCD解析Hive支持多种存储格式,包括文本、SequenceFile、RCFile、ORC、Parquet、Avro等。三、判断题(每题1分,共10题,10分)1.Spark的RDD在发生Shuffle时会自动持久化到磁盘,因此多次使用时无需重复计算。答案错误2.在HBase中,RowKey的设计直接影响Region的负载均衡和查询性能。答案正确3.Kafka的消费者Offset全部由ZooKeeper统一管理。答案错误解析新版Kafka将Offset存储在内部主题__consumer_offsets中,ZooKeeper不再负责Offset管理。4.HDFS适合存储大量小文件。答案错误5.Flink的Checkpoint机制可以在故障后使状态恢复到最近一次完成的检查点。答案正确6.数据仓库ETL中的Extract阶段指从源系统抽取数据。答案正确7.MapReduce中,MapTask的数量等于输入分片的数量。答案正确8.使用Hive分区表时,所有查询语句都必须指定分区条件。答案错误9.在SparkSQL中,DataFrame注册为临时视图后即可使用SQL语句进行查询。答案正确10.根据CAP理论,分布式系统在同一时刻最多只能同时满足一致性、可用性和分区容错性中的两个。答案正确四、简答题(每题5分,共3题,15分)1.简述Spark中RDD、DataFrame和Dataset三者的区别与联系。答案(1)RDD是Spark最底层的分布式数据集抽象,采用函数式编程接口,适合对数据进行自定义复杂操作。(2)DataFrame带有Schema信息,类似关系型数据库中的二维表,逻辑上等价于Dataset[Row],能够利用Catalyst优化器进行查询优化。(3)Dataset是强类型的分布式数据集,结合了RDD的类型安全和DataFrame的高效执行能力,在编译期即可发现类型错误。解析三者可以相互转换,DataFrame是Dataset的特例;Dataset/DataFrame底层仍会转换为RDD执行,但通过优化器提升了执行效率。2.从生产端、Broker和消费端三个角度,简述Kafka保证消息可靠性的机制。答案(1)生产端:通过设置acks为all或-1,等待所有ISR副本确认;同时开启重试机制,防止瞬时故障导致消息丢失。(2)Broker端:通过多副本机制将消息复制到多个副本,在故障时依靠ISR和Leader选举保证分区可用;配合min.insync.replicas参数增强持久性。(3)消费端:使用手动提交Offset并在业务逻辑处理成功后再提交,配合消费者幂等性设计,避免重复消费或消息丢失。3.简述HBase的写入和读取流程。答案写入流程:客户端先写入WAL(Write-AheadLog),再将数据写入RegionServer的MemStore;当MemStore达到阈值后刷写为StoreFile,多个小文件合并成大文件。读取流程:先查BlockCache(读缓存),再查MemStore,最后根据RowKey范围查找StoreFile,将结果合并后返回客户端。五、编程题(共15分)1.给定一个超过10GB的日志文件,每行记录一个客户端IP地址,内存无法一次性容纳全部IP。请编写程序统计出现次数最多的Top10IP,并说明时间复杂度与空间复杂度。(可使用Java或Python)答案采用“哈希分片+局部统计+全局堆”的思路:第一步:遍历日志文件,使用稳定哈希函数将IP分发到N个临时文件中,保证相同IP一定落入同一临时文件。第二步:依次读取每个临时文件,用Counter统计其中每个IP的出现次数,得到该分片的完整计数。第三步:维护一个大小为10的小顶堆,遍历第二步得到的每个IP及其计数,如果计数大于堆顶则替换,最终堆中即为全局Top10。参考代码(Python):importos

importtempfile

importhashlib

fromcollectionsimportCounter

importheapq

deftop_n_ips(file_path,n=10,num_buckets=100):

tmp_dir=tempfile.mkdtemp()

bucket_paths=[os.path.join(tmp_dir,f"bucket_{i}")foriinrange(num_buckets)]

bucket_fds=[open(p,"w")forpinbucket_paths]

#第一步:哈希分片

withopen(file_path)asf:

forlineinf:

ip=line.strip()

ifip:

idx=int(hashlib.md5(ip.encode()).hexdigest(),16)%num_buckets

bucket_fds[idx].write(ip+"\n")

forfdinbucket_fds:

fd.close()

#第二步:每个分片统计,第三步:小顶堆维护全局TopN

top_heap=[]#元素为(count,ip),小顶堆

forpinbucket_paths:

counter=Counter()

withopen(p)asbf:

forlineinbf:

ip=line.strip()

ifip:

counter[ip]+=1

forip,cntincounter.items():

iflen(top_heap)<n:

heapq.heappush(top_heap,(cnt,ip))

elifcnt>top_heap[0][0]:

heapq.heapreplace(top_heap,(cnt,ip))

return[(ip,cnt)forcnt,ipinsorted(top_heap,reverse=True)]时间复杂度:O(N+Ulog空间复杂度:O(M+六、系统设计题(共25分)1.某电商平台需要构建一个实时用户行为分析系统,要求实现:•实时统计各页面的PV、UV;•当指定页面每分钟UV超过阈值时触发实时告警;•聚合结果写入ClickHouse,并供前端实时看板查询。请设计整体架构,说明关键技术选型、数据流向及容错设计要点。整体架构:用户行为日志->Kafka->Flink->ClickHouse->实时看板

|

v

Redis(UV去重)关键技术选型:-日志采集:Flume/Filebeat/SDK上报,写入Kafka;-消息中间件:Kafka,用于削峰填谷、缓冲海量日志;-实时计算引擎:Flink,负责事件时间处理、窗口聚合和告警计算;-状态存储:Redis,使用HyperLogLog近似去重,降低UV统计的内存开销;-结果存储:ClickHou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论