2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案_第1頁
2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案_第2頁
2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案_第3頁
2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案_第4頁
2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2025年大數(shù)據(jù)技術(shù)專業(yè)面試題目及答案一、單項(xiàng)選擇題(每題2分,共20分)1.在Hadoop生態(tài)中,負(fù)責(zé)資源管理與任務(wù)調(diào)度的組件是A.HDFS??B.YARN??C.MapReduce??D.Hive答案:B2.下列哪種存儲格式最適合支持OLAP場景的列式快速掃描A.TextFile??B.SequenceFile??C.ORC??D.JSON答案:C3.Spark中RDD的默認(rèn)分區(qū)數(shù)由哪個(gè)參數(shù)決定A.spark.executor.cores??B.spark.default.parallelism??C.spark.sql.shuffle.partitions??D.spark.task.cpus答案:B4.在Flink的時(shí)間語義中,EventTime的亂序數(shù)據(jù)通常依靠哪種機(jī)制保證窗口正確性A.Checkpoint??B.Barrier??C.Watermark??D.Trigger答案:C5.Kafka的consumergroup重平衡發(fā)生在以下哪種場景A.生產(chǎn)者發(fā)送速率突增??B.新增分區(qū)??C.消費(fèi)者加入或退出??D.Broker節(jié)點(diǎn)磁盤告警答案:C6.若Hive表分區(qū)字段為dt且類型為string,下列哪種寫法可正確觸發(fā)分區(qū)裁剪A.wheredt=20250315??B.wheredt="20250315"??C.wheredtlike"20250315"??D.wherecast(dtasint)=20250315答案:B7.在HBase中,用于實(shí)現(xiàn)行級事務(wù)的原子性的核心機(jī)制是A.WAL??B.MemStore??C.HFile??D.ZooKeeper鎖答案:A8.下列關(guān)于數(shù)據(jù)湖Iceberg的描述錯(cuò)誤的是A.支持ACID語義??B.隱藏分區(qū)自動優(yōu)化??C.僅支持Spark引擎??D.提供時(shí)間旅行查詢答案:C9.在Scala中,下列哪個(gè)操作符用于隱式轉(zhuǎn)換A.>??B.=>??C.<%??D.<:答案:C10.當(dāng)使用SparkMLlib訓(xùn)練邏輯回歸模型時(shí),若標(biāo)簽為0/1,特征為稀疏向量,應(yīng)首先使用的轉(zhuǎn)換器是A.StandardScaler??B.MaxAbsScaler??C.StringIndexer??D.VectorIndexer答案:B二、多項(xiàng)選擇題(每題3分,共15分,多選少選均不得分)11.下列屬于FlinkExactlyOnce端到端保障必要條件的組件有A.可重放的數(shù)據(jù)源??B.屏障對齊的Checkpoint??C.兩階段提交Sink??D.開啟對象重用答案:A、B、C12.關(guān)于Parquet格式,下列說法正確的有A.支持嵌套數(shù)據(jù)模型??B.采用字典編碼減少存儲??C.支持謂詞下推??D.寫操作優(yōu)于讀操作答案:A、B、C13.在SparkSQL中,下列函數(shù)可用于處理復(fù)雜類型的有A.explode??B.inline??C.from_json??D.collect_list答案:A、B、C、D14.以下哪些做法可以降低HDFSNameNode內(nèi)存壓力A.縮短塊報(bào)告間隔??B.增大塊大小??C.開啟目錄快照??D.使用聯(lián)邦NameNode答案:B、D15.關(guān)于Kafka的log.retention.bytes參數(shù),下列說法正確的有A.針對單個(gè)分區(qū)生效??B.達(dá)到閾值立即刪除舊段??C.與log.retention.hours互斥??D.可動態(tài)配置答案:A、B、D三、填空題(每空2分,共20分)16.Spark的內(nèi)存管理采用UnifiedMemoryManager,默認(rèn)堆內(nèi)執(zhí)行內(nèi)存與存儲內(nèi)存占比分別為______與______。答案:0.6、0.6(共享同一內(nèi)存區(qū)域,動態(tài)借調(diào))17.在Hive中,開啟向量查詢執(zhí)行需設(shè)置參數(shù)______為true。答案:hive.vectorized.execution.enabled18.HBase中,若rowkey設(shè)計(jì)為timestamp+deviceId,則最容易發(fā)生的讀寫熱點(diǎn)問題是______。答案:Region熱點(diǎn)(尾端追加)19.Flink的Checkpoint超時(shí)時(shí)間由參數(shù)______控制,單位______。答案:checkpoint.timeout、毫秒20.在Presto中,實(shí)現(xiàn)跨庫join的核心抽象是______。答案:Connector21.數(shù)據(jù)傾斜的常用抽樣算法為______采樣。答案:分層22.Kafka的leader副本失效后,控制器選舉新leader依據(jù)的副本列表稱為______。答案:ISR(InSyncReplicas)23.SparkStreaming的DStream窗口操作,窗口長度與滑動間隔必須滿足______。答案:滑動間隔是批間隔的整數(shù)倍,窗口長度是滑動間隔的整數(shù)倍24.ORC格式的stripe默認(rèn)大小為______MB。答案:6425.在Scala中,惰性求值的關(guān)鍵字為______。答案:lazy四、判斷題(每題1分,共10分,正確寫“T”,錯(cuò)誤寫“F”)26.SparkSQL的join策略中,BroadcastHashJoin要求小表可被廣播到每個(gè)Executor。答案:T27.HDFS的副本放置策略中,同一機(jī)架最多放置兩份副本。答案:F(默認(rèn)同一機(jī)架最多兩份,第三份跨機(jī)架)28.Flink的KeyedState只能保存在TaskManager的堆內(nèi)存中。答案:F(可保存在RocksDB)29.Kafka的partition數(shù)一旦創(chuàng)建不可擴(kuò)容。答案:F(可擴(kuò)容)30.Hive的UDF必須繼承org.apache.hadoop.hive.ql.exec.UDF類。答案:T31.Parquet的布隆過濾器可以顯著減少OR條件掃描。答案:T32.Spark的累加器在Task失敗重試時(shí)可能出現(xiàn)重復(fù)累加。答案:T33.HBase的Coprocessor可在RegionServer端執(zhí)行用戶代碼,用于二級索引。答案:T34.Presto使用CostBasedOptimizer,因此無需手動指定join順序。答案:F(復(fù)雜場景仍需hint)35.數(shù)據(jù)湖DeltaLake的樂觀并發(fā)控制基于MVCC實(shí)現(xiàn)。答案:T五、簡答題(封閉型,每題6分,共18分)36.簡述SparkSQL中AdaptiveQueryExecution(AQE)的三大優(yōu)化場景及觸發(fā)條件。答案:(1)動態(tài)合并shuffle分區(qū):當(dāng)spark.sql.adaptive.enabled=true且spark.sql.adaptive.coalescePartitions.enabled=true時(shí),運(yùn)行時(shí)檢測map端輸出大小,若平均分區(qū)大小<spark.sql.adaptive.advisoryPartitionSizeInBytes,則合并相鄰小分區(qū),減少reduce任務(wù)數(shù)。(2)動態(tài)切換join策略:運(yùn)行時(shí)檢測實(shí)際build側(cè)大小,若小于spark.sql.autoBroadcastJoinThreshold,則把SortMergeJoin動態(tài)改為BroadcastHashJoin,避免大表掃描。(3)動態(tài)優(yōu)化傾斜join:當(dāng)spark.sql.adaptive.skewJoin.enabled=true,若檢測到某reduce任務(wù)處理數(shù)據(jù)量>medianspark.sql.adaptive.skewJoin.skewedPartitionFactor,則自動拆分該分區(qū),拆后并行處理,最后合并結(jié)果。37.寫出Flink實(shí)現(xiàn)端到端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分裂的觸發(fā)條件與分裂算法,并給出rowkey預(yù)分區(qū)示例。答案:觸發(fā)條件:(1)該Region大小>hbase.hregion.max.filesize(默認(rèn)10GB);(2)該Region中某個(gè)列族Store大小>hbase.hregion.max.filesizejitter;(3)手動執(zhí)行split命令。分裂算法:采用“中間鍵”策略,遍歷HFile的索引,找到最大StoreFile,定位其中間rowkey作為splitKey,確保左右兩半數(shù)據(jù)量接近。預(yù)分區(qū)示例:假設(shè)rowkey為deviceId+timestamp,設(shè)備編號為000~999,可按百位建10個(gè)預(yù)分區(qū):create'sensor',{NAME=>'data'},SPLITS=>['100','200','300','400','500','600','700','800','900']六、簡答題(開放型,每題8分,共16分)39.某電商公司每日新增500GB用戶行為日志,需構(gòu)建實(shí)時(shí)數(shù)倉,要求秒級延遲、支持冪等更新、可回滾至任意分鐘級快照。請給出技術(shù)選型、分層架構(gòu)、關(guān)鍵表設(shè)計(jì)、寫入流程與回滾機(jī)制。答案:技術(shù)選型:Kafka+Flink+Iceberg+MinIO+HiveCatalog。分層:(1)ODS:Kafka原始topic,保留3天,單分區(qū)最大1GB。(2)DWD:Flink消費(fèi)寫Iceberg,按event_time取小時(shí)分區(qū),桶分區(qū)user_id,桶數(shù)1024,文件格式ORC,開啟字典、bloom、zstd壓縮。(3)DWS:Flink增量匯總寫Iceberg,分區(qū)同上,聚合維度user_id、sku_id,指標(biāo)pv、cart、order。關(guān)鍵表設(shè)計(jì):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設(shè)置checkpoint30s,兩階段提交IcebergSink,checkpoint完成時(shí)提交manifest文件,保證ExactlyOnce。冪等更新:通過user_id+sku_id+event_time作為主鍵,Icebergupsert模式自動去重?;貪L機(jī)制:利用Iceberg時(shí)間旅行,回滾SQL:CALLcatalog.system.rollback_to_timestamp('db.user_action',TIMESTAMP'2025031514:30:00');同時(shí)清理下游DWS表對應(yīng)分區(qū),重新計(jì)算。40.某金融風(fēng)控模型需每日離線訓(xùn)練樣本10TB,特征維度2萬,正樣本占比0.3%。訓(xùn)練集群為100節(jié)點(diǎn),每節(jié)點(diǎn)8核32GB。請給出Spark調(diào)優(yōu)方案,包括資源分配、數(shù)據(jù)傾斜處理、特征編碼、模型選擇、評估指標(biāo)與上線流程。答案:資源分配:spark.executor.instances=600,executorcores=1,executormemory=5g,drivermemory=8g,開啟動態(tài)資源分配,shuffle服務(wù)external=true,避免OOM。數(shù)據(jù)傾斜:正樣本復(fù)制3倍,負(fù)樣本降采樣至1:5,使用StratifiedSampler;對高頻uid加鹽打散,join后去鹽;開啟AQE自動傾斜join優(yōu)化。特征編碼:類別特征>1000采用TargetEncoder,smoothing=20;數(shù)值特征QuantileDiscretizer分箱100;高維稀疏文本采用HashingTF(2^18)+IDF;所有特征統(tǒng)一拼成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,網(wǎng)格搜索。評估指標(biāo):因樣本極不均衡,采用AUCPR為主,輔助AUCROC、F1@Recall=0.8、KS>0.45;使用BinaryClassificationEvaluator。上線流程:模型保存為MLPipelineModel,注冊到MLeapbundle,通過SparkServingRESTAPI提供實(shí)時(shí)預(yù)測,批打分每日T+1回寫Hive;監(jiān)控PSI<0.1,特征缺失率<1%,衰減超過閾值自動觸發(fā)重訓(xùn)。七、應(yīng)用題(綜合類,共41分)41.(計(jì)算題,10分)某Spark任務(wù)讀取2TBORC表(壓縮比8:1),字段40列,掃描僅使用3列。ORCstripe大小64MB,每個(gè)stripe平均索引2KB。若HDFS塊大小256MB,求:(1)需讀取的HDFS塊數(shù);(2)需讀取的stripe數(shù);(3)若開啟列索引謂詞下推,網(wǎng)絡(luò)傳輸數(shù)據(jù)量理論減少比例。答案:(1)邏輯數(shù)據(jù)量=2TB/8=256GB,ORC文件大小256GB,塊大小256MB,塊數(shù)=256GB/256MB=1024。(2)每個(gè)stripe64MB,stripe數(shù)=256GB/64MB=4096。(3)僅讀3列,假設(shè)列均勻,則數(shù)據(jù)量降為3/40=7.5%;索引與footer占比極小可忽略,網(wǎng)絡(luò)傳輸減少比例≈92.5%。42.(分析題,10分)給定Flink消費(fèi)Kafka的PV日志,topic100分區(qū),每秒峰值50萬條,單條1KB。Flink并行度設(shè)為200,checkpoint30s,狀態(tài)使用RocksDB增量快照,目標(biāo)端到端延遲<3s。請分析可能瓶頸并給出調(diào)優(yōu)步驟。答案:瓶頸1:Kafka單分區(qū)吞吐上限約10MB/s,峰值50萬1KB=500MB/s,需至少50分區(qū),現(xiàn)有100分區(qū)滿足,但單分區(qū)5MB/s,仍有headroom。瓶頸2:Flink網(wǎng)絡(luò)反壓,200并行度,每個(gè)subtask2500條/s,序列化開銷大,開啟對象重用、buffertimeout=0ms。瓶頸3:RocksDB寫放大,增量checkpoint產(chǎn)生大量SST,調(diào)大blockcache=2GB,writebuffer=256MB,開啟compression=LZ4。瓶頸4:下游Sink為MySQL,單表寫入瓶頸,采用分庫分表+批量replaceinto,batchsize=500,異步刷盤。調(diào)優(yōu)后延遲降至1.8s,滿足<3s。43.(綜合設(shè)計(jì)題,21分)設(shè)計(jì)一套“實(shí)時(shí)+離線”一體化用戶畫像系統(tǒng),要求:a.輸入:APP日志、交易流水、CRM屬性、第三方標(biāo)簽;b.輸出:秒級更新的人群包(標(biāo)簽組合)、T+1全量畫像表;c.支持標(biāo)簽回溯、版本對比、灰度發(fā)布;d.數(shù)據(jù)規(guī)模:日增800GB,存量5年共2PB;e.技術(shù)棧需包含但不少于:Kafka、Flink、Iceberg、ClickHouse、Airflow、Redis、SpringBoot。請給出:(1)整體架構(gòu)圖(文字描述即可);(2)實(shí)時(shí)鏈路詳細(xì)流程;(3)離線鏈路詳細(xì)流程;(4)標(biāo)簽存儲模型與版本管理方案;(5)灰度發(fā)布與回滾策略;(6)資源成本估算(節(jié)點(diǎn)數(shù)、內(nèi)存、磁盤)。答案:(1)架構(gòu):APP/DB>Canal/Logstash>Kafka>FlinkCEP>IcebergDWD>Flink聚合>ClickHouse分布式表;離線:Airflow調(diào)度Spark每日凌晨拉Iceberg快照>SparkML訓(xùn)練標(biāo)簽>寫IcebergDWS>同步至ClickHouse;服務(wù)層:SpringBoot+Redis緩存+ClickHouseSQLAPI;治理:Atlas元數(shù)據(jù)、Griffin質(zhì)量、Prometheus+Grafana監(jiān)控。(2)實(shí)時(shí)鏈路:Kafkatopic按業(yè)務(wù)分8個(gè);FlinkJob分三層:①ETL:解析、脫敏、過濾,側(cè)流輸出臟數(shù)據(jù);②IDMapping:以手機(jī)號、deviceId、uid為鍵,Redis存儲Graph,F(xiàn)link異步IO查詢,輸出統(tǒng)一uid;③標(biāo)簽計(jì)算:滑動窗口30s,計(jì)算近實(shí)時(shí)興趣、風(fēng)控評分,寫ClickHouse本地表Distributed表引擎。(3)離線鏈路:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論