2025年大数据技术专业面试题目及答案_第1页
2025年大数据技术专业面试题目及答案_第2页
2025年大数据技术专业面试题目及答案_第3页
2025年大数据技术专业面试题目及答案_第4页
2025年大数据技术专业面试题目及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

2025年大数据技术专业面试题目及答案一、单项选择题(每题2分,共20分)1.在Hadoop生态中,负责资源管理与任务调度的组件是A.HDFS  B.YARN  C.MapReduce  D.Hive答案:B2.下列哪种存储格式最适合支持OLAP场景的列式快速扫描A.TextFile  B.SequenceFile  C.ORC  D.JSON答案:C3.Spark中RDD的默认分区数由哪个参数决定A.spark.executor.cores  B.spark.default.parallelism  C.spark.sql.shuffle.partitions  D.spark.task.cpus答案:B4.在Flink的时间语义中,EventTime的乱序数据通常依靠哪种机制保证窗口正确性A.Checkpoint  B.Barrier  C.Watermark  D.Trigger答案:C5.Kafka的consumergroup重平衡发生在以下哪种场景A.生产者发送速率突增  B.新增分区  C.消费者加入或退出  D.Broker节点磁盘告警答案:C6.若Hive表分区字段为dt且类型为string,下列哪种写法可正确触发分区裁剪A.wheredt=20250315  B.wheredt="20250315"  C.wheredtlike"20250315"  D.wherecast(dtasint)=20250315答案:B7.在HBase中,用于实现行级事务的原子性的核心机制是A.WAL  B.MemStore  C.HFile  D.ZooKeeper锁答案:A8.下列关于数据湖Iceberg的描述错误的是A.支持ACID语义  B.隐藏分区自动优化  C.仅支持Spark引擎  D.提供时间旅行查询答案:C9.在Scala中,下列哪个操作符用于隐式转换A.>  B.=>  C.<%  D.<:答案:C10.当使用SparkMLlib训练逻辑回归模型时,若标签为0/1,特征为稀疏向量,应首先使用的转换器是A.StandardScaler  B.MaxAbsScaler  C.StringIndexer  D.VectorIndexer答案:B二、多项选择题(每题3分,共15分,多选少选均不得分)11.下列属于FlinkExactlyOnce端到端保障必要条件的组件有A.可重放的数据源  B.屏障对齐的Checkpoint  C.两阶段提交Sink  D.开启对象重用答案:A、B、C12.关于Parquet格式,下列说法正确的有A.支持嵌套数据模型  B.采用字典编码减少存储  C.支持谓词下推  D.写操作优于读操作答案:A、B、C13.在SparkSQL中,下列函数可用于处理复杂类型的有A.explode  B.inline  C.from_json  D.collect_list答案:A、B、C、D14.以下哪些做法可以降低HDFSNameNode内存压力A.缩短块报告间隔  B.增大块大小  C.开启目录快照  D.使用联邦NameNode答案:B、D15.关于Kafka的log.retention.bytes参数,下列说法正确的有A.针对单个分区生效  B.达到阈值立即删除旧段  C.与log.retention.hours互斥  D.可动态配置答案:A、B、D三、填空题(每空2分,共20分)16.Spark的内存管理采用UnifiedMemoryManager,默认堆内执行内存与存储内存占比分别为______与______。答案:0.6、0.6(共享同一内存区域,动态借调)17.在Hive中,开启向量查询执行需设置参数______为true。答案:hive.vectorized.execution.enabled18.HBase中,若rowkey设计为timestamp+deviceId,则最容易发生的读写热点问题是______。答案:Region热点(尾端追加)19.Flink的Checkpoint超时时间由参数______控制,单位______。答案:checkpoint.timeout、毫秒20.在Presto中,实现跨库join的核心抽象是______。答案:Connector21.数据倾斜的常用抽样算法为______采样。答案:分层22.Kafka的leader副本失效后,控制器选举新leader依据的副本列表称为______。答案:ISR(InSyncReplicas)23.SparkStreaming的DStream窗口操作,窗口长度与滑动间隔必须满足______。答案:滑动间隔是批间隔的整数倍,窗口长度是滑动间隔的整数倍24.ORC格式的stripe默认大小为______MB。答案:6425.在Scala中,惰性求值的关键字为______。答案:lazy四、判断题(每题1分,共10分,正确写“T”,错误写“F”)26.SparkSQL的join策略中,BroadcastHashJoin要求小表可被广播到每个Executor。答案:T27.HDFS的副本放置策略中,同一机架最多放置两份副本。答案:F(默认同一机架最多两份,第三份跨机架)28.Flink的KeyedState只能保存在TaskManager的堆内存中。答案:F(可保存在RocksDB)29.Kafka的partition数一旦创建不可扩容。答案:F(可扩容)30.Hive的UDF必须继承org.apache.hadoop.hive.ql.exec.UDF类。答案:T31.Parquet的布隆过滤器可以显著减少OR条件扫描。答案:T32.Spark的累加器在Task失败重试时可能出现重复累加。答案:T33.HBase的Coprocessor可在RegionServer端执行用户代码,用于二级索引。答案:T34.Presto使用CostBasedOptimizer,因此无需手动指定join顺序。答案:F(复杂场景仍需hint)35.数据湖DeltaLake的乐观并发控制基于MVCC实现。答案:T五、简答题(封闭型,每题6分,共18分)36.简述SparkSQL中AdaptiveQueryExecution(AQE)的三大优化场景及触发条件。答案:(1)动态合并shuffle分区:当spark.sql.adaptive.enabled=true且spark.sql.adaptive.coalescePartitions.enabled=true时,运行时检测map端输出大小,若平均分区大小<spark.sql.adaptive.advisoryPartitionSizeInBytes,则合并相邻小分区,减少reduce任务数。(2)动态切换join策略:运行时检测实际build侧大小,若小于spark.sql.autoBroadcastJoinThreshold,则把SortMergeJoin动态改为BroadcastHashJoin,避免大表扫描。(3)动态优化倾斜join:当spark.sql.adaptive.skewJoin.enabled=true,若检测到某reduce任务处理数据量>medianspark.sql.adaptive.skewJoin.skewedPartitionFactor,则自动拆分该分区,拆后并行处理,最后合并结果。37.写出Flink实现端到端ExactlyOnce的KafkaSink两阶段提交代码模板(JavaAPI),并指出核心接口。答案:核心接口:TwoPhaseCommitSinkFunction。模板:publicclassKafkaExactlyOnceSinkextendsTwoPhaseCommitSinkFunction<String,KafkaTransactionState,KafkaTransactionContext>{privatefinalStringbrokerList;privatefinalStringtopic;privateKafkaProducer<byte[],byte[]>producer;publicKafkaExactlyOnceSink(StringbrokerList,Stringtopic){super(KafkaTransactionState.class,KafkaTransactionContext.class);this.brokerList=brokerList;this.topic=topic;}@OverrideprotectedvoidbeginTransaction(){producer=newKafkaProducer<>(props,newByteArraySerializer(),newByteArraySerializer());producer.beginTransaction();}@Overrideprotectedvoidinvoke(KafkaTransactionStatetransaction,Stringvalue,Contextcontext){producer.send(newProducerRecord<>(topic,value.getBytes(StandardCharsets.UTF_8)));}@OverrideprotectedvoidpreCommit(KafkaTransactionStatetransaction){producer.flush();}@Overrideprotectedvoidcommit(KafkaTransactionStatetransaction){mitTransaction();}@Overrideprotectedvoidabort(KafkaTransactionStatetransaction){producer.abortTransaction();}}38.说明HBase中Region分裂的触发条件与分裂算法,并给出rowkey预分区示例。答案:触发条件:(1)该Region大小>hbase.hregion.max.filesize(默认10GB);(2)该Region中某个列族Store大小>hbase.hregion.max.filesizejitter;(3)手动执行split命令。分裂算法:采用“中间键”策略,遍历HFile的索引,找到最大StoreFile,定位其中间rowkey作为splitKey,确保左右两半数据量接近。预分区示例:假设rowkey为deviceId+timestamp,设备编号为000~999,可按百位建10个预分区:create'sensor',{NAME=>'data'},SPLITS=>['100','200','300','400','500','600','700','800','900']六、简答题(开放型,每题8分,共16分)39.某电商公司每日新增500GB用户行为日志,需构建实时数仓,要求秒级延迟、支持幂等更新、可回滚至任意分钟级快照。请给出技术选型、分层架构、关键表设计、写入流程与回滚机制。答案:技术选型:Kafka+Flink+Iceberg+MinIO+HiveCatalog。分层:(1)ODS:Kafka原始topic,保留3天,单分区最大1GB。(2)DWD:Flink消费写Iceberg,按event_time取小时分区,桶分区user_id,桶数1024,文件格式ORC,开启字典、bloom、zstd压缩。(3)DWS:Flink增量汇总写Iceberg,分区同上,聚合维度user_id、sku_id,指标pv、cart、order。关键表设计:CREATETABLEdwd.user_action(user_idbigint,sku_idbigint,event_timetimestamp,event_typestring,…)PARTITIONEDBY(hour(event_time),bucket(1024,user_id))TBLPROPERTIES('formatversion'='2','write.upsert.enabled'='true','write.distributionmode'='hash');写入流程:Flink设置checkpoint30s,两阶段提交IcebergSink,checkpoint完成时提交manifest文件,保证ExactlyOnce。幂等更新:通过user_id+sku_id+event_time作为主键,Icebergupsert模式自动去重。回滚机制:利用Iceberg时间旅行,回滚SQL:CALLcatalog.system.rollback_to_timestamp('db.user_action',TIMESTAMP'2025031514:30:00');同时清理下游DWS表对应分区,重新计算。40.某金融风控模型需每日离线训练样本10TB,特征维度2万,正样本占比0.3%。训练集群为100节点,每节点8核32GB。请给出Spark调优方案,包括资源分配、数据倾斜处理、特征编码、模型选择、评估指标与上线流程。答案:资源分配:spark.executor.instances=600,executorcores=1,executormemory=5g,drivermemory=8g,开启动态资源分配,shuffle服务external=true,避免OOM。数据倾斜:正样本复制3倍,负样本降采样至1:5,使用StratifiedSampler;对高频uid加盐打散,join后去盐;开启AQE自动倾斜join优化。特征编码:类别特征>1000采用TargetEncoder,smoothing=20;数值特征QuantileDiscretizer分箱100;高维稀疏文本采用HashingTF(2^18)+IDF;所有特征统一拼成Vector,使用Pipeline。模型选择:先用LogisticRegression(LBFGS,regParam=0.01,elasticNetParam=0.8)快速基线;再换GBDT(xgboost4jspark,maxDepth=8,numRound=300,eta=0.05,subsample=0.6,colsample=0.6,scalePosWeight=16.7),采用trainValidationSplit80:20,网格搜索。评估指标:因样本极不均衡,采用AUCPR为主,辅助AUCROC、F1@Recall=0.8、KS>0.45;使用BinaryClassificationEvaluator。上线流程:模型保存为MLPipelineModel,注册到MLeapbundle,通过SparkServingRESTAPI提供实时预测,批打分每日T+1回写Hive;监控PSI<0.1,特征缺失率<1%,衰减超过阈值自动触发重训。七、应用题(综合类,共41分)41.(计算题,10分)某Spark任务读取2TBORC表(压缩比8:1),字段40列,扫描仅使用3列。ORCstripe大小64MB,每个stripe平均索引2KB。若HDFS块大小256MB,求:(1)需读取的HDFS块数;(2)需读取的stripe数;(3)若开启列索引谓词下推,网络传输数据量理论减少比例。答案:(1)逻辑数据量=2TB/8=256GB,ORC文件大小256GB,块大小256MB,块数=256GB/256MB=1024。(2)每个stripe64MB,stripe数=256GB/64MB=4096。(3)仅读3列,假设列均匀,则数据量降为3/40=7.5%;索引与footer占比极小可忽略,网络传输减少比例≈92.5%。42.(分析题,10分)给定Flink消费Kafka的PV日志,topic100分区,每秒峰值50万条,单条1KB。Flink并行度设为200,checkpoint30s,状态使用RocksDB增量快照,目标端到端延迟<3s。请分析可能瓶颈并给出调优步骤。答案:瓶颈1:Kafka单分区吞吐上限约10MB/s,峰值50万1KB=500MB/s,需至少50分区,现有100分区满足,但单分区5MB/s,仍有headroom。瓶颈2:Flink网络反压,200并行度,每个subtask2500条/s,序列化开销大,开启对象重用、buffertimeout=0ms。瓶颈3:RocksDB写放大,增量checkpoint产生大量SST,调大blockcache=2GB,writebuffer=256MB,开启compression=LZ4。瓶颈4:下游Sink为MySQL,单表写入瓶颈,采用分库分表+批量replaceinto,batchsize=500,异步刷盘。调优后延迟降至1.8s,满足<3s。43.(综合设计题,21分)设计一套“实时+离线”一体化用户画像系统,要求:a.输入:APP日志、交易流水、CRM属性、第三方标签;b.输出:秒级更新的人群包(标签组合)、T+1全量画像表;c.支持标签回溯、版本对比、灰度发布;d.数据规模:日增800GB,存量5年共2PB;e.技术栈需包含但不少于:Kafka、Flink、Iceberg、ClickHouse、Airflow、Redis、SpringBoot。请给出:(1)整体架构图(文字描述即可);(2)实时链路详细流程;(3)离线链路详细流程;(4)标签存储模型与版本管理方案;(5)灰度发布与回滚策略;(6)资源成本估算(节点数、内存、磁盘)。答案:(1)架构:APP/DB>Canal/Logstash>Kafka>FlinkCEP>IcebergDWD>Flink聚合>ClickHouse分布式表;离线:Airflow调度Spark每日凌晨拉Iceberg快照>SparkML训练标签>写IcebergDWS>同步至ClickHouse;服务层:SpringBoot+Redis缓存+ClickHouseSQLAPI;治理:Atlas元数据、Griffin质量、Prometheus+Grafana监控。(2)实时链路:Kafkatopic按业务分8个;FlinkJob分三层:①ETL:解析、脱敏、过滤,侧流输出脏数据;②IDMapping:以手机号、deviceId、uid为键,Redis存储Graph,Flink异步IO查询,输出统一uid;③标签计算:滑动窗口30s,计算近实时兴趣、风控评分,写ClickHouse本地表Distributed表引擎。(3)离线链路:

温馨提示

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

最新文档

评论

0/150

提交评论