数据管理技术考试试题及答案_第1页
数据管理技术考试试题及答案_第2页
数据管理技术考试试题及答案_第3页
数据管理技术考试试题及答案_第4页
数据管理技术考试试题及答案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

数据管理技术考试试题及答案一、单项选择题(每题2分,共20分)1.在关系数据库中,若属性集X能唯一确定属性集Y,且X的任何真子集都不能唯一确定Y,则称X对Y的A.完全函数依赖B.部分函数依赖C.传递函数依赖D.多值依赖答案:A解析:完全函数依赖强调“最小性”,即决定因素X不能再缩减,否则依赖关系消失。部分依赖则允许决定因素存在冗余属性,传递依赖涉及间接决定,多值依赖描述的是一对多独立关系,与题干不符。2.某OLTP系统采用两阶段封锁协议,事务T1在时间t1对数据项Q加共享锁,事务T2在时间t2对Q加排他锁且t2>t1,则T2A.立即获得锁B.进入等待队列直到T1释放锁C.引发T1回滚D.引发T2回滚答案:B解析:共享锁与排他锁冲突,两阶段封锁协议要求排他请求必须等待已有共享锁全部释放,因此T2被阻塞。3.在HDFS中,NameNode收到客户端写请求后,第一步动作是A.将数据流式写入本地磁盘B.根据副本策略返回一组DataNode列表C.向客户端发送心跳包D.触发副本回收线程答案:B解析:NameNode仅维护元数据,实际数据流不经过它。它根据机架感知策略挑选DataNode列表并返回客户端,客户端随后直接与DataNode建立流水线。4.某星型模式事实表含外键列product_key、customer_key、time_key,度量列为sales_amount。若需按“季度”汇总销售额,应A.在事实表上创建位图索引B.在time维度表增加quarter属性并建立rollup索引C.将事实表分区键改为quarterD.在customer维度表增加quarter属性答案:B解析:季度是时间维度上的层次属性,必须在time维度表中扩展,再通过连接实现汇总;rollup索引可加速groupbyquarter操作。5.在PostgreSQL中,对JSONB列data建立GIN索引后,下列查询仍可能无法使用索引的是A.SELECT*FROMtblWHEREdata@>'{"tag":"vip"}'B.SELECT*FROMtblWHEREdata->>'name'='Alice'C.SELECT*FROMtblWHEREdata?'tag'D.SELECT*FROMtblWHEREdata#>'{profile,age}'>25答案:D解析:GIN索引支持@>、?、?&、?|等操作符,但#>返回文本,需配合表达式索引或btree才能加速范围比较,原生GIN不加速>操作。6.某企业采用Kafka作为日志总线,TopicA分区数为6,消费者组G1有8个实例,则A.2个实例空闲B.6个实例空闲C.所有实例均分配分区D.触发rebalance后可能产生消息重复答案:A解析:Kafka以分区为分配单位,每个分区只能被组内一个实例消费,6个分区最多6个实例工作,剩余2个空闲;重复消费由提交偏移策略决定,与实例数无关。7.在MongoDB分片集群中,要使得对字段uid的范围查询能被路由到尽可能少的分片,应A.使用哈希分片键{uid:"hashed"}B.使用范围分片键{uid:1}并选择单调递增前缀C.使用复合分片键{uid:1,ts:1}且uid放第一位D.使用{_id:"hashed"}答案:C解析:范围查询需连续性,哈希分片会打散数据导致广播查询;复合分片键首字段为uid,可让mongos通过前缀定位到数据块,减少扫描分片。8.某数据仓库采用雪花模型,将产品维表拆成product→category→department三层。若查询需department_name,则A.必须连接三张表B.可在department表建立位图连接索引避免连接C.可在product表冗余department_name列D.无法使用星型转换答案:C解析:雪花模型增加连接开销,物理上可通过冗余列实现“反雪花”优化,降低查询复杂度;位图连接索引在Oracle中可用,但非通用方案。9.在MySQL8.0中,对InnoDB表执行ALTERTABLE…ALGORITHM=INPLACE,LOCK=NONE,下列操作允许的是A.将列类型从VARCHAR(30)改为VARCHAR(50)B.增加一个全文索引C.改变列顺序D.将字符集从utf8改为utf8mb4答案:A解析:同宽度扩展VARCHAR允许在线DDL;全文索引、列顺序变更、字符集转换均需重建表,无法完全避免锁。10.在数据治理元模型中,属于“业务元数据”的是A.字段加密算法B.表在HDFS上的存储路径C.指标“活跃用户数”的计算口径D.字段压缩编码答案:C解析:业务元数据面向用户,描述业务含义、规则与质量要求;技术元数据涉及存储、加密、压缩等实现细节。二、多项选择题(每题3分,共15分,多选少选均不得分)11.关于CAP理论,下列说法正确的是A.分区容错性在分布式系统中必须保证B.放弃一致性意味着系统一定返回脏数据C.在分区发生时,HBase选择一致性而牺牲可用性D.Cassandra在QUORUM读写时可视为最终一致E.单机MySQL不涉及CAP权衡答案:ACDE解析:B错误,放弃一致性仅表示可能返回旧数据而非一定脏数据;分区发生时HBase依赖Zookeeper阻塞写操作保证一致性;CassandraQUORUM满足R+W>N时为强一致;单机系统无网络分区故不涉CAP。12.下列技术组合可实现“exactly-once”语义的是A.Kafka幂等生产者+事务型生产者B.SparkStreaming+手动维护偏移到ZookeeperC.FlinkKafkaSink+两阶段提交D.Storm1.x+至少一次处理+去重表E.PulsarFunctions+共享订阅+ackTimeout答案:ACD解析:A通过PID与序列号实现端到端幂等;C通过预提交与Kafka事务保证;D通过外部去重表实现等效精确一次;B与E仍可能重复。13.在数据湖场景下,下列做法能够提升查询性能的是A.将小文件定期合并为Parquet大文件B.对分区列采用yyyy-mm-dd-hh格式过度细化C.在Iceberg中建立隐藏分桶分区D.对冷数据采用ZSTD压缩E.使用HiveLLAP缓存热数据答案:ACDE解析:B过度细化导致元数据爆炸;A减少文件数量降低NN压力;C通过分桶裁剪减少扫描;D提高压缩率减少IO;E内存缓存加速。14.关于数据血缘,下列描述正确的是A.SQL解析可静态提取列级血缘B.SparkRDD的map操作无法自动捕获血缘C.AirflowDAG可表达任务级血缘D.数据血缘可用于影响分析E.数据血缘一定包含运行时行数答案:ABCD解析:静态SQL解析可获得列级依赖;RDD为黑盒算子;AirflowDAG描述任务依赖;血缘用于下游影响评估;运行时行数属于统计信息,非血缘必须。15.在GDPR合规要求下,数据控制者必须A.支持数据可携带权B.72小时内向监管方报告泄露C.任命数据保护官DPOD.默认采用假名化技术E.在儿童数据处理时验证父母同意答案:ABE解析:C仅在特定规模或敏感数据处理时强制;D假名化为推荐非强制;ABE为明确条款。三、判断题(每题1分,共10分,正确打“√”,错误打“×”)16.在RedisCluster模式下,客户端缓存slots映射可降低MOVED重定向次数。答案:√解析:客户端本地缓存clusterslots信息,可直接定位目标节点,减少一次RTT。17.使用HiveonTez时,开启vectorizedquery可提升ORC文件读取性能。答案:√解析:向量化执行批量处理列数据,减少虚函数调用,提高CPU缓存命中率。18.在Oracle中,位图索引适合高并发OLTP系统的主键列。答案:×解析:位图索引锁粒度大,高并发DML下易产生阻塞,不适合OLTP主键。19.数据仓库采用第三范式建模可完全消除冗余,因此查询性能一定优于星型模型。答案:×解析:3NF减少冗余但增加连接开销,分析型查询往往反范式化提升性能。20.在Kafka中,Producer的acks=all设置可保证消息不丢失,即使Leader刚写入就宕机。答案:√解析:acks=all要求所有ISR副本确认,Leader宕机后新Leader拥有完整数据,消息不丢失。21.在SparkSQL中,使用cache()默认存储级别为MEMORY_ONLY,若内存不足则丢弃分区。答案:√解析:MEMORY_ONLY不spill到磁盘,内存不足时按LRU丢弃,下次需重新计算。22.数据湖仅支持schema-on-read,无法实施schema约束。答案:×解析:现代表格式如Delta、Iceberg支持schema约束与演化,兼具schema-on-read灵活与治理。23.在MongoDB中,对数组字段建立多键索引后,索引大小与数组平均长度成正比。答案:√解析:多键索引为数组每个元素创建索引条目,长度越大条目越多,空间线性增长。24.使用HBase协处理器Observer可在RegionServer端过滤数据,减少网络传输。答案:√解析:Observer钩子运行在服务端,可提前过滤,返回结果集更小。25.数据治理成熟度模型中,达到“已管理”级别即代表数据质量无需再改进。答案:×解析:已管理级表明流程可度量,但持续改进为更高优化级要求,非终点。四、填空题(每空2分,共20分)26.在MySQLInnoDB中,实现可重复读隔离级别依赖________与________两种锁。答案:Next-KeyLock、GapLock解析:Next-KeyLock为索引记录锁+间隙锁,防止幻读。27.数据仓库中,缓慢变化维类型2通过________列追踪历史版本。答案:代理键+时间戳范围(或版本号)解析:类型2新增行并标记有效期,代理键区分不同版本。28.在Flink中,实现全局窗口TopN需使用________函数与________状态。答案:ProcessWindowFunction、MapState解析:ProcessWindowFunction可访问窗口元数据,MapState存储中间TopN列表。29.当Hive表存储格式为Parquet时,可通过________参数开启字典编码,减少________占用。答案:parquet.enable.dictionary、存储空间解析:字典编码对低基数列高效,压缩重复字符串。30.在数据资产目录中,采用________标识符可跨系统唯一标识一张表。答案:URN(UniformResourceName)解析:URN包含系统、库、表等命名空间,保证全局唯一。31.在Elasticsearch中,对text字段排序需开启________子字段,否则会导致________异常。答案:keyword、Fielddata解析:text默认分词,排序需keyword子字段;开启fielddata耗内存且官方不推荐。32.数据湖housekeeping任务中,________策略可自动删除超过保留期限的快照,________策略可合并小文件。答案:expire_snapshots、rewrite_files解析:Iceberg提供两种内置过程,分别清理历史与合并数据。33.在OracleRAC环境下,为保证序列全局唯一且性能高,应创建________序列。答案:CACHE+NOORDER解析:CACHE减少全局争用,NOORDER避免节点间排序开销。34.使用Spark动态资源分配时,可通过________参数设置Executor空闲超时时间,单位为________。答案:spark.dynamicAllocation.executorIdleTimeout、秒解析:超时后Executor被回收,节省集群资源。35.数据质量维度中,________指数据值与真实世界一致程度,________指同一数据在不同位置含义相同。答案:准确性、一致性解析:准确性强调与真实值偏差,一致性强调跨系统语义一致。五、简答题(每题10分,共30分)36.描述一次完整的MySQL主从复制延迟排查与优化过程,要求包含指标采集、根因定位、优化方案、验证方法。答案:1)指标采集:a.在从库执行showslavestatus\G,记录Seconds_Behind_Master趋势;b.通过pt-heartbeat工具获取真实延迟,避免依赖系统时钟;c.采集io_thread、sql_thread状态,确认瓶颈环节;d.使用mysqld_exporter收集全局指标:Innodb_rows_updated、Binlog_cache_disk_use、diskioutil%;e.采集从库慢查询,分析是否存在大事务或锁等待。2)根因定位:a.若io_thread落后,检查网络带宽、主库binlogdump线程负载;b.若sql_thread落后,查看relay_log执行速度,定位是否存在无索引更新、大事务、频繁全表扫描;c.通过binlog解析工具mysqlbinlog查看主库事务大小,发现单事务更新200万行;d.对比主从硬件,发现从库使用SATA盘,iowait达35%;e.检查从库是否开启log_slave_updates、binlog_group_commit,确认额外刷盘压力。3)优化方案:a.业务侧将大事务拆分为1万行批量提交,降低单事务执行时间;b.在从库添加复合索引,将updatewhere条件列纳入索引,减少行扫描;c.从库磁盘升级为SSD,iowait降至5%;d.设置slave_parallel_type=LOGICAL_CLOCK、slave_parallel_workers=8,开启并行复制;e.调整innodb_flush_log_at_trx_commit=2,降低刷盘频率;f.主库开启binlog_row_image=minimal,减少网络传输。4)验证方法:a.持续运行pt-heartbeat24h,延迟从峰值850s降至30s以内;b.通过grafana监控从库SQL线程lag曲线,确认平稳;c.使用sysbench在主库压测,QPS2万场景下从库延迟<1s;d.业务端全链路对账,主从数据零差异。37.说明数据湖格式ApacheIceberg的“隐藏分区”与“分区演化”特性,并给出电商订单表实战案例,展示如何在不重写历史数据的情况下将分区由天演化为小时。答案:1)隐藏分区:Iceberg将分区列逻辑定义与物理布局解耦,用户写入时无需显式指定分区值,系统自动提取分区值并生成manifest;查询时where子句中的列条件自动下推,无需匹配物理目录结构,避免Hive式“错列查询全表扫描”问题。2)分区演化:允许表在不同阶段使用不同分区策略,历史数据保持旧分区,新数据使用新分区;元数据层面通过snapshot记录分区规范版本,读取时自动合并多版本分区,无需重写存量文件。3)实战案例:a.初始建表:CREATETABLEorder_dl(order_idbigint,user_idbigint,amountdecimal(10,2),order_timetimestamp)PARTITIONEDBYdays(order_time);写入2023-01-01至2023-03-31共3个月数据,物理目录结构为/order_dl/order_date=2023-01-01/xxx.parquet。b.业务需求:4月起需将分区粒度改为小时,以减少下游小时级任务扫描数据量。ALTERTABLEorder_dlSETPARTITIONSPEC(hours(order_time));该命令仅更新元数据,历史数据仍按天分区存在。c.写入4月1日10点数据,系统生成新目录/order_dl/order_time_hour=2023-04-01-10/xxx.parquet;查询4月1日10点至12点订单:SELECT*FROMorder_dlWHEREorder_timeBETWEEN'2023-04-0110:00:00'AND'2023-04-0112:00:00';Iceberg自动识别新分区规范,仅扫描对应小时目录,历史数据按天目录过滤。d.性能对比:演化为小时后,Trino扫描数据量从900GB降至38GB,查询耗时由220s降至18s;历史数据无需重写,节省计算成本约70%。38.阐述数据网格(DataMesh)的核心原则,并对比传统数据湖架构,说明如何在金融风控领域落地领域驱动的数据所有权模式。答案:1)核心原则:a.领域所有权:数据由产生数据的领域团队负责,而非集中数据团队;b.数据即产品:把数据集视为产品,提供SLA、文档、支持渠道;c.自助平台:提供领域无关的自动化基础设施,降低数据产品构建门槛;d.联合治理:全局标准化通过联邦治理委员会与领域团队协作制定,避免中央瓶颈。2)对比传统数据湖:传统模式采用集中存储、集中团队、ETL驱动,易出现沟通壁垒、需求响应慢、数据质量责任不清;数据网格将存储与计算下沉到领域,消除单点瓶颈,提升敏捷性,但要求领域团队具备数据工程能力。3)金融风控落地:a.划分领域:按业务线划分“信贷审批”、“交易反欺诈”、“客户行为”、“征信外部数据”四个领域;b.任命数据产品负责人:每个领域设立数据产品经理,负责数据资产目录、质量SLA(如T+0更新、准确率99.5%);c.自助平台搭建:统一数据湖仓底座(Iceberg+Trino+Atlas),提供自动CI/CD流水线,领域团队通过YAML声明表结构、分区、Retention;提供数据质量模板(GreatExpectations),领域团队可拖拽生成规则;提供事件门户(Kafka+SchemaRegistry),领域团队自助注册事件流;d.治理机制:成立联邦数据委员会,制定全局标识符(客户IDURN)、敏感数据分类(PII4级)、元数据标准;每季度评审数据产品成熟度,未达基础级(文档、质量评分<80)的领域限制发布新表;e.成效:需求交付周期由3个月缩短至3周;数据质量问题责任追溯时间从5天降至1天;领域团队复用率提升,征信数据产品被3个下游领域订阅,减少重复采集费用200万/年。六、综合设计题(25分)39.某短视频公司日活1亿,用户行为日志峰值500万QPS,平均每条日志0.8KB。公司需构建实时数仓,支持实时指标:1)5分钟内统计各视频最新播放次数;2)1分钟内检测异常流量(某IP请求量突增>100倍);3)T+0日级报表,按视频类别、地域、时段汇总播放时长、完播率;4)数据保留30天,冷数据压缩归档。请设计端到端架构,说明技术选型、数据模型、分区策略、Exactly-once保证、资源估算,并给出Flink核心作业伪代码与指标计算SQL。答案:1)技术选型:采集层:日志通过OpenResty本地写文件,Filebeat采集→Kafka(3集群,每集群30broker,Topicbehavior,分区600,RF=3,min.insync.replicas=2);流计算:Flink1.17onYARN,checkpoint到HDFS,状态后端RocksDB,启用增量checkpoint;存储层:实时指标:RedisCluster,keyTTL1h,使用hash结构存<video_id,hour_play>;明细数据:Kafka→Flink→Iceberg表behavior_dl,bucket(视频ID,64)分区,文件格式ParquetZSTD;汇总数据:Iceberg表behavior_agg,按(category,province,hour)分区;查询层:Trino对接Iceberg,Superset可视化;归档:Spark批任务每日把>7天数据转为ORCZSTD并移至OSS,Iceberg元数据保留。2)数据模型:明细表behavior_dl(event_timetimestamp,user_idstring,video_idstring,categorystring,provincestring,play_durationint,is_finishboolean,ipstring,event_typestring-play/start/finish)汇总表behavior_agg(categorystring,provincestring,hour_begintimestamp,play_cntbigint,total_durationbigint,finish_cntbigint)3)分区策略:明细表采用Iceberg隐藏分区bucket(video_id,64)+事件时间小时分区,保证视频维度均匀,避免热点;汇总表采用(category,province,hour)组合分区,满足查询裁剪。4)Exactly-once:Flink启用checkpoint,两阶段提交Sink到Iceberg,预提交生成snapshot,checkpoint成功后才commit;Kafkaproducer幂等+事务,保证端到端不丢不重;Redis更新采用checkpointedmapstate,重启后重放kafka位点,覆盖写入,保证幂等。5)资源估算:峰值500万QPS×0.8KB≈4GB/s,Kafka单broker100MB/s,需40broker,考虑RF×1.5,120broker,三集群每集群40broker;Flink并行度:source600分区→600slot,计算CPU1:1,内存4GB/slot,共2.4TB内存,需80台32GBNodeManager;Iceberg日增量4GB/s×86400≈345TB,压缩后约120TB,30天3.6PB,OSS冷存单价0.03元/GB/月,月成本约11万。6)Flink作业伪代码:StreamExecutionEnvironmentenv=…env.enableCheckpointing(60000).setCheckpointStorage("hdfs://ns1/flink/checkpoints").setRestartStrategy(RestartStrategies.fixedDelayRestart(3,10000))FlinkKafkaConsumer<String>source=newFlinkKafkaConsumer<>("behavior",…).setStartFromLatest()DataStream<Event>even

温馨提示

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

评论

0/150

提交评论