2025年中国移动大数据岗笔试题及答案_第1页
2025年中国移动大数据岗笔试题及答案_第2页
2025年中国移动大数据岗笔试题及答案_第3页
2025年中国移动大数据岗笔试题及答案_第4页
2025年中国移动大数据岗笔试题及答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

2025年中国移动大数据岗笔试题及答案一、单项选择题(每题2分,共20分)1.以下关于Hadoop生态组件的描述中,错误的是()。A.HBase基于LSM树存储,适合高并发随机读写B.Hive的元数据默认存储在MySQL中时,需开启事务支持以保证ACID特性C.SparkRDD的persist()方法默认存储级别为MEMORY_ONLYD.Kafka的ISR(In-SyncReplicas)集合动态维护与leader保持同步的follower答案:B(Hive的元数据默认存储在Derby中,若使用MySQL需手动配置,且Hive的ACID事务需要额外启用,元数据库本身无需开启事务支持)2.某电商用户行为日志表(user_id,event_type,event_time)中,需计算“当日活跃用户中,次日再次活跃的用户占比”,正确的SQL思路是()。A.按user_id分组,取最小event_time作为首日,计算次日是否有记录B.按user_id和日期分组,标记每日是否活跃,再关联相邻两日记录C.使用窗口函数lead()获取用户下一次活跃时间,判断是否在24小时内D.对event_time做日期截断,统计每个用户每日首次活跃时间,再自连接答案:B(需先按用户和日期去重标记活跃,再通过自连接关联当日与次日记录,避免同一用户当日多次活跃的干扰)3.分布式系统中,以下场景最可能引发数据倾斜的是()。A.使用RDD的repartition(100)重新分区B.对主键为UUID的表进行groupby操作C.用HashPartitioner对用户ID(取值均匀)分区D.对某高热度商品ID字段进行join操作答案:D(高热度商品ID会导致对应分区数据量远大于其他分区,引发倾斜)4.关于实时计算框架Flink的描述,正确的是()。A.Flink的Checkpoint机制依赖WAL(预写日志)保证Exactly-Once语义B.Watermark的本质是事件时间的进度标记,用于触发窗口计算C.KeyedStream的shuffle方式为Rebalance,数据会轮询分发D.FlinkSQL的UDF只能在Scala/Java中实现,无法用Python开发答案:B(Watermark用于处理乱序事件,当Watermark超过窗口结束时间时触发计算;Checkpoint通过状态快照实现Exactly-Once;KeyedStream基于key的哈希分区;Flink1.15+支持PythonUDF)5.数据湖(DataLake)与数据仓库(DataWarehouse)的核心差异是()。A.数据湖存储结构化数据,数据仓库存储非结构化数据B.数据湖支持实时写入,数据仓库仅支持批量写入C.数据湖遵循“读时模式”,数据仓库遵循“写时模式”D.数据湖面向分析场景,数据仓库面向事务场景答案:C(数据湖在写入时不强制schema,读取时解析;数据仓库在写入时强制schema校验)6.某移动用户行为数据中,需识别“连续3天每日使用流量超过500MB的用户”,最适合的技术是()。A.Hive的窗口函数row_number()B.Spark的GraphX图计算C.Flink的滑动窗口(SlidingWindow)D.ClickHouse的物化视图答案:A(通过窗口函数按用户排序,计算连续日期的差值是否为1,结合条件过滤)7.以下关于Kafka分区(Partition)的说法,错误的是()。A.增加分区数可提高消费者组的并行度B.分区数越多,生产者的吞吐量越高(不考虑网络瓶颈)C.分区的leader选举由ZooKeeper负责(Kafka2.8+后由KRaft模式管理)D.同一分区的消息按写入顺序存储,消费者按顺序读取答案:C(Kafka2.8+默认使用KRaft模式,元数据由Controller节点管理,不再依赖ZooKeeper)8.设计数据仓库维度模型时,以下场景应使用雪花模型而非星型模型的是()。A.维度表数据量小,需频繁查询维度属性B.维度表存在多层级关联(如省-市-区)C.事实表需要与多个维度表快速joinD.ETL过程要求高加载效率答案:B(雪花模型通过规范化维度表减少冗余,适合多层级维度;星型模型使用宽维度表,适合快速查询)9.关于SparkShuffle的优化,以下措施无效的是()。A.增大spark.shuffle.file.buffer(洗牌文件缓冲区)B.减少spark.sql.shuffle.partitions(SQLshuffle分区数)C.启用spark.shuffle.unsafe.enabled(基于堆外内存的shuffle)D.对大表进行repartition(1000)后再groupby答案:D(过多分区会增加任务数和磁盘IO,可能加剧shuffle压力)10.某运营商需构建用户画像标签体系,标签“近30天ARPU(每用户平均收入)”的类型是()。A.统计型标签(基于历史行为计算)B.规则型标签(基于固定阈值划分)C.预测型标签(基于模型预测)D.时序型标签(基于时间序列分析)答案:A(ARPU是通过统计近30天收入总和除以天数得到的数值型标签)二、填空题(每空2分,共20分)1.HDFS默认块大小为______MB,该设置的意义是______(降低元数据管理开销/提高随机读写效率)。答案:128;降低元数据管理开销2.SparkRDD的transformation操作是______(惰性/立即)执行的,其依赖关系构成______(DAG/树状)结构。答案:惰性;DAG3.Kafka生产者发送消息时,acks参数设置为______时,仅需leader写入成功即返回确认,该模式的一致性风险是______。答案:1;可能丢失未同步到follower的消息4.数据湖的元数据管理工具(如ApacheHudi的______或ApacheIceberg的______)用于记录数据文件的位置、分区、版本等信息。答案:HiveMetastore;TableService5.Flink中处理事件时间(EventTime)乱序数据时,需设置______来定义最大允许的延迟时间,当水位线(Watermark)超过窗口结束时间+该值时,窗口将被______(触发/丢弃)。答案:水位线延迟(WatermarkDelay);触发三、简答题(每题8分,共40分)1.简述数据倾斜的常见诊断方法及处理策略。诊断方法:①观察任务日志,查看各分区数据量(如SparkUI的shufflereadsize);②统计key的分布(如通过groupbykeycount()排序,找出高频key);③监控任务执行时间,定位慢任务对应的分区。处理策略:①过滤异常key(如空值、测试数据);②对高频key添加随机前缀,分散到多个分区计算后再聚合;③调整分区器(如使用RangePartitioner替代HashPartitioner);④开启Spark的skewjoin优化(spark.sql.skewJoin=true),对大key单独处理。2.对比离线数据仓库与实时数据仓库在架构设计上的核心差异。①数据来源:离线数仓主要处理T+1的批量数据(如Hive),实时数仓需接入Kafka等流数据源(如Flink+ClickHouse);②存储结构:离线数仓多采用分层架构(ODS→DWD→DWS→ADS),实时数仓强调“近实时”,可能合并部分层级(如DWD直接到实时DWS);③计算模型:离线数仓以批处理为主(SparkSQL),实时数仓以流处理或流批一体(FlinkSQL);④一致性要求:实时数仓需处理乱序、迟到数据,依赖Watermark和窗口机制保证准确性;离线数仓通过重跑任务修正错误。3.设计湖仓一体(LakeHouse)架构时,需重点考虑哪些技术要点?①元数据统一:通过ApacheIceberg、Hudi等格式统一管理数据湖和数仓的元数据,支持版本控制、时间旅行;②存算分离:计算引擎(如Spark、Flink)与存储(如对象存储)解耦,降低成本并提高扩展性;③数据一致性:支持ACID事务(如Iceberg的行级更新),解决数据湖“写多读少”导致的脏读问题;④分析性能:优化文件格式(如Parquet的列存)、索引(如BloomFilter)和缓存机制,提升查询效率;⑤流批一体:支持批量写入(数仓)和实时写入(数据湖)的统一处理,通过流引擎直接写入湖仓。4.分布式事务在大数据场景中面临哪些挑战?如何应对?挑战:①数据分布广:跨节点、跨数据中心的事务协调复杂度高(如CAP理论中的网络分区问题);②性能瓶颈:传统2PC(两阶段提交)的协调者易成为瓶颈,无法满足高并发需求;③一致性与可用性权衡:强一致性可能降低系统可用性(如HBase的跨Region事务);④长事务风险:大数据任务(如ETL)执行时间长,锁资源占用久,易引发死锁。应对:①采用柔性事务(如TCC补偿、Saga模式)替代强一致事务;②使用分布式锁(如RedisRedlock)或乐观锁(版本号校验)减少锁竞争;③拆分大事务为小事务(如按分区处理),降低协调成本;④结合业务场景放宽一致性要求(如最终一致性),提升系统吞吐量。5.简述A/B测试(用户分桶实验)的关键实施步骤及注意事项。步骤:①明确实验目标(如“新界面是否提升用户点击率”);②定义核心指标(如CTR、留存率)和辅助指标(如页面停留时间);③确定分桶策略(如按用户ID哈希分桶,保证分组的随机性和均匀性);④预实验验证(小流量测试,观察指标稳定性和系统负载);⑤全量实验运行(确保样本量足够,避免统计显著性不足);⑥统计分析(t检验、方差分析),判断指标差异是否显著;⑦结论输出(推广/优化/放弃新方案)。注意事项:①分桶重叠:避免用户同时进入多个实验桶,导致指标混淆;②样本量计算:根据最小可检测差异(MDE)和统计功效(通常80%)确定实验时长;③辛普森悖论:需按维度(如用户类型、地区)细分分析,避免整体指标误导;④流量隔离:核心业务实验与非核心实验分开,防止资源竞争影响结果。四、编程题(每题15分,共30分)1.用SparkSQL编写代码,计算用户次日留存率。输入表为user_action(user_idSTRING,event_timeTIMESTAMP),要求:统计2024-12-01至2024-12-31期间每日的新活跃用户;次日留存率=(当日新用户中次日活跃的用户数)/(当日新用户总数)。```sql步骤1:标记用户每日首次活跃时间,确定是否为当日新用户(假设新用户定义为该用户首次活跃日期)WITHfirst_activeAS(SELECTuser_id,DATE(event_time)ASactive_date,MIN(DATE(event_time))OVER(PARTITIONBYuser_id)ASfirst_dateFROMuser_actionWHEREevent_timeBETWEEN'2024-12-01'AND'2024-12-3123:59:59'),步骤2:筛选2024-12月内的新用户(首次活跃日期在该月)new_users_dailyAS(SELECTactive_date,user_idFROMfirst_activeWHEREfirst_date=active_dateANDactive_dateBETWEEN'2024-12-01'AND'2024-12-31'),步骤3:关联次日活跃用户retention_dataAS(SELECTa.active_date,a.user_id,CASEWHENb.user_idISNOTNULLTHEN1ELSE0ENDASis_retentionFROMnew_users_dailyaLEFTJOINnew_users_dailybONa.user_id=b.user_idANDb.active_date=DATE_ADD(a.active_date,1))步骤4:计算每日留存率SELECTactive_date,COUNT(DISTINCTuser_id)ASnew_users,SUM(is_retention)ASretained_users,SUM(is_retention)1.0/COUNT(DISTINCTuser_id)ASretention_rateFROMretention_dataGROUPBYactive_dateORDERBYactive_date;```2.用FlinkSQL实现实时计算小时级GMV(商品交易总额),要求:输入流为order_stream(order_idSTRING,user_idSTRING,amountDECIMAL(10,2),create_timeTIMESTAMP(3));处理乱序数据(允许最大延迟5分钟);输出每小时的GMV(如10:00-11:00的GMV在11:05前输出)。```java//步骤1:创建Kafka源表CREATETABLEorder_source(order_idSTRING,user_idSTRING,amountDECIMAL(10,2),create_timeTIMESTAMP(3),WATERMARKFORcreate_timeAScreate_timeINTERVAL'5'MINUTE-设置水位线,允许5分钟延迟)WITH('connector'='kafka','topic'='order_topic','scan.startup.mode'='earliest-offset','properties.bootstrap.servers'='kafka1:9092,kafka2:9092','format'='json');//步骤2:定义小时级滚动窗口,计算GMVCREATETABLEhourly_gmv_sink(hour_startTIMESTAMP(3),total_gmvDECIMAL(15,2),PRIMARYKEY(hour_start)NOTENFORCED)WITH('connector'='jdbc','url'='jdbc:mysql://mysql-host:3306/bigdata_db','table-name'='hourly_gmv','username'='user','password'='pass');INSERTINTOhourly_gmv_sinkSELECTTUMBLE_START(create_time,INTERVAL'1'HOUR)AShour_start,-窗口起始时间SUM(amount)AStotal_gmvFROMorder_sourceGROUPBYTUMBLE(create_time,INTERVAL'1'HOUR);```五、综合分析题(20分)某移动运营商需构建用户流失预警模型,目标是提前7天识别高流失风险用户。请设计模型构建的全流程,并说明各阶段的关键技术点及注意事项。流程设计与关键技术点:1.业务理解与目标定义明确流失定义:如“连续7天无通话、无流量使用且未登录APP”(需结合运营商历史数据验证阈值合理性);确定预测周期:提前7天预警,需保证模型输入数据的时间窗口(如用前30天行为预测未来7天流失);业务指标:关注召回率(减少漏判)和精确率(减少误判),平衡两者(如使用F1-score作为主评估指标)。2.数据采集与清洗数据来源:用户基本信息(套餐类型、入网时长)、行为数据(通话时长、流量使用、APP登录次数)、客服交互(投诉记录、套餐变更)、账单数据(欠费次数、ARPU);清洗要点:处理缺失值(如用中位数填充连续型字段,众数填充离散型)、异常值(如通话时长为负,标记为缺失)、去重(同一用户同一时间的重复记录);时间对齐:所有特征需基于“预测时间点”前的固定窗口(如T-30到T-1天),避免未来数据泄露。3.特征工程基础统计特征:近7天/30天的通话次数均值、流量峰值、欠费次数;时序特征:流量使用的环比增长率((当日流量-前日流量)/前日流量)、通话时长的趋势(线性回归斜率);交叉特征:套餐类型×ARPU(高ARPU用户使用低价值套餐可能更易流失)、投诉次数×响应时长(长时间未解决投诉的用户风险高);嵌入特征:对用户属地(省/市)进行Embedding编码,捕捉地域流失模式;特征筛选:通过IV值(信息价值)、随机森林的特征重要性、L1正则化剔除冗余特征(如相关系数>0.8的字段)。4.模型选择与训练基础模型:逻辑回归(可解释性强,用于基线)、XGBoost(处理非线性关系,对缺失值鲁棒);高级模型:LightGBM(更快训练速度

温馨提示

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

评论

0/150

提交评论