2023大數(shù)據(jù)面試總結(jié)

先說(shuō)些廢話

作為一個(gè)全棧開(kāi)發(fā)工作者,曾經(jīng)對(duì)公司專職的大數(shù)據(jù)開(kāi)發(fā)有著濃厚的興趣,所以嘗試學(xué)習(xí)大數(shù)據(jù)開(kāi)發(fā)所需要的各種技術(shù)棧。

本文就是我在學(xué)習(xí)過(guò)程中記錄下,所遇到的一些大數(shù)據(jù)面試的提問(wèn),僅供參考。

當(dāng)然,因?yàn)闀r(shí)間精力有限,并非所有的問(wèn)題我都去記錄了答案,如果您不了解某些問(wèn)題或者不認(rèn)可我記錄的解答,可以帶著問(wèn)題百度或者問(wèn)ChatCPT,相信會(huì)給您留下更深刻的印象。

最后,讀者可以把本文當(dāng)作模擬面試的提綱,歡迎各位在評(píng)論區(qū)交流,大家一起成長(zhǎng),努力變得更強(qiáng)!?。?/p>

高頻基礎(chǔ)知識(shí)點(diǎn)

執(zhí)行過(guò)程

  1. MapReduce 的執(zhí)行過(guò)程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過(guò)程(不需要手寫(xiě)MapReduce或者用java寫(xiě)MapReduce)
  2. HDFS 的讀寫(xiě)流程
  3. Yarn 的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
  4. Hive 的執(zhí)行過(guò)程(Hive SQL 如何解析成MapReduce的)
  5. Spark 任務(wù)的執(zhí)行過(guò)程
  6. Spark SQL 的底層執(zhí)行過(guò)程

Linux

  1. 如何查看內(nèi)存,CPU占用
  2. Shell腳本如何定義函數(shù)調(diào)用
  3. Shell腳本第一行:#!/bin/bash的含義
    • 第一行的內(nèi)容指定了shell腳本解釋器的路徑,而且這個(gè)指定路徑只能放在文件的第一行
    • 第一行寫(xiě)錯(cuò)或者不寫(xiě)時(shí),系統(tǒng)會(huì)有一個(gè)默認(rèn)的解釋器進(jìn)行解釋
  4. Linux腳本授權(quán)是什么?Linux授權(quán)命令是什么?
    • chmod [{ugoa}{+-=}{rwx}] [文件或目錄](méi)
    • chmod [mode=421] [文件或目錄](méi)
  5. Shell標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤是什么?
  6. 工作中常用的Linux命令有哪些?

MySQL

  1. sql的執(zhí)行計(jì)劃,執(zhí)行錯(cuò)誤報(bào)警機(jī)制
  2. 索引有什么優(yōu)缺點(diǎn)
  3. 什么時(shí)候會(huì)導(dǎo)致索引失效
  4. 如果我給一張表的所有字段添加索引會(huì)有什么樣的問(wèn)題
  5. 如何進(jìn)行sql調(diào)優(yōu) 高頻

Hadoop(HDFS/MapReduce/Yarn)

  1. Haddop3對(duì)于Hadoop2有哪些新特性
  2. HDFS 常用命令有哪些
  3. 工作中遇到 MapReduce 流程的相關(guān)問(wèn)題如何排查
  4. 其他問(wèn)題匯總

Hive

  1. 工作中如何進(jìn)行Hive優(yōu)化 高頻
  2. Hive中有任務(wù)跑的時(shí)間比較長(zhǎng),怎么優(yōu)化
  3. Hive任務(wù)處理過(guò)程中遇到過(guò)什么樣的問(wèn)題
  4. Hive SQL 查詢比較慢(數(shù)據(jù)傾斜),怎么處理
  5. Hive的參數(shù)設(shè)置用過(guò)哪些,有什么作用
  6. Hive中表關(guān)聯(lián)方式j(luò)oin的分類、用法、應(yīng)用場(chǎng)景
  7. 什么時(shí)候會(huì)走M(jìn)apJoin
  8. 什么情況下會(huì)產(chǎn)生Hive小文件,小文件有什么危害
  9. Hive的查詢過(guò)程,哪些方法可以提高查詢效率 變相的問(wèn)優(yōu)化
  10. Hive的窗口函數(shù),常用窗口函數(shù),怎么使用
  11. Hive SQL的數(shù)據(jù)去重方式
  12. 項(xiàng)目中Hive有多少表
  13. Hive查詢組件Impala了解嗎?簡(jiǎn)單介紹下
  14. Hive中的行列轉(zhuǎn)換,除了case when,還有別的方法嗎
  15. Hive中內(nèi)部表和外部表的區(qū)別??jī)?nèi)部表和外部表如果刪除了元數(shù)據(jù)是由誰(shuí)來(lái)維護(hù)?元數(shù)據(jù)的存儲(chǔ)位置和管理者是誰(shuí)
    • 從創(chuàng)建表和刪除表兩個(gè)方面說(shuō)明
    • metastore,master節(jié)點(diǎn)上
    • mysql,metastore
  16. Hive分區(qū)和分桶的區(qū)別?分桶的原理?分區(qū)可以提高查詢效率嗎?分區(qū)越多越好嗎
    • MR中:按照key的hash值去模除以reductTask的個(gè)數(shù)
    • Hive中:按照分桶字段的hash值去模除以分桶的個(gè)數(shù)
    • 縮小數(shù)據(jù)查詢范圍,提高查詢效率,但是不是分區(qū)越多越好
    • Hive中如果有過(guò)多的分區(qū),由于底層是存儲(chǔ)在HDFS上,HDFS上只用于存儲(chǔ)大文件而非小文件,因?yàn)檫^(guò)多的分區(qū)會(huì)增加NameNode的負(fù)擔(dān)
    • Hive SQL會(huì)轉(zhuǎn)化為MapReduce, MapReduce會(huì)轉(zhuǎn)化為多個(gè)task,過(guò)多小文件的話,每個(gè)文件一個(gè)task,每個(gè)taskー個(gè)JVM實(shí)例,JVM的開(kāi)啟與銷毀會(huì)降低系統(tǒng)效率
    • 合理的分區(qū)不應(yīng)該有過(guò)多的分區(qū)和文件目錄,并且每個(gè)目錄下的文件應(yīng)該足夠大
    • Hive中分區(qū)是否越多越好?
  17. 如何反查哪條Hive SQL執(zhí)行較慢?
  18. Hive查詢?cè)诠ぷ髦杏龅绞裁礃拥碾y點(diǎn)?如何解決?

Hbase

  1. Hbase查詢用的多嗎,有沒(méi)有做過(guò)優(yōu)化?
  2. Hbase查詢過(guò)濾器用過(guò)嗎,簡(jiǎn)單介紹下
    • RowFilter、FamilyFilter、QualifierFilter、ValueFilter
    • SingleColumnValueFilter、SingleColumnValueExcludeFilter、PrefixFilter、PageFilter
    • 多過(guò)濾器綜合查詢FilterList
    • HBase過(guò)濾器查詢
  3. 用戶畫(huà)像的構(gòu)建是Hbase做的嗎?特征值怎么提取的?
  4. 項(xiàng)目Hbase的RowKey是如何設(shè)計(jì)的?

Scala

  1. Scala有什么特性
  2. Scala的class和case class在使用層面有什么區(qū)別
  3. Scala的Option類型的作用與使用方法
  4. Scala的泛型斜變逆變
  5. Scala的函數(shù)柯里化了解嗎??jī)?yōu)點(diǎn)是什么?
  6. Scala的隱式函數(shù)、隱式轉(zhuǎn)換
  7. Scala用過(guò)哪些函數(shù)
  8. Scala中的String是可變的嗎?
    • String是一個(gè)不可變的對(duì)象,所以該對(duì)象不可被修改,這就意味著你如果修改字符串就會(huì)產(chǎn)生一個(gè)新的字符串對(duì)象,但其他對(duì)象,如數(shù)組就是可變的對(duì)象
    • String對(duì)象是不可變的,如果你需要?jiǎng)?chuàng)建一個(gè)可以修改的字符串,可以使用String Builder
    • Scala:字符串
  9. Scala是否可以多繼承
    • Scala中的多重繼承由特質(zhì)(trait)實(shí)現(xiàn)并遵循線性化規(guī)則
    • 在多重繼承中,如果一個(gè)特質(zhì)已經(jīng)顯式擴(kuò)展了一個(gè)類,則混入該特質(zhì)的類必須是之前特質(zhì)混入的類的子類
    • 這意味著當(dāng)混入一個(gè)已擴(kuò)展了別的類的特質(zhì)時(shí),他們必須擁有相同的父類

Spark

  1. 你了解Spark的序列化嗎?Spark提供了哪些序列化類?
  2. Spark中RDD持久化了解過(guò)嗎?
  3. Spark算子分類?常用算子?怎么使用的? 高頻
  4. Spark的惰性計(jì)算機(jī)制了解過(guò)嗎?(懶加載)
  5. 工作中如何進(jìn)行Spark優(yōu)化? 高頻
  6. Spark的Stage和Task的劃分?Task數(shù)目由什么決定?
  7. Spark的寬窄依賴了解過(guò)嗎?
  8. Spark如何查看日志和排查報(bào)錯(cuò)問(wèn)題?
  9. 工作中跟有沒(méi)有遇到到Spark數(shù)據(jù)傾斜,如何處理的?
  10. Spark Streaming怎么保證精準(zhǔn)的消費(fèi)?
  11. Spark在工作中遇到什么樣的難點(diǎn)?如何解決?

Spark面試資料合集

  1. Spark面試八股文
  2. Spark吐血整理
  3. Spark學(xué)習(xí)筆記
  4. 上萬(wàn)字詳解Spark Core

Kafka

  1. 簡(jiǎn)單介紹下kafka的核心概念及個(gè)人理解
  2. Kafka在數(shù)據(jù)傳輸過(guò)程中遇到重復(fù)數(shù)據(jù)怎么處理
  3. Kafka在使用過(guò)程中如何保證數(shù)據(jù)不丟失
  4. Kafka中的ack含義是什么

Kafka面試八問(wèn)

大廠面試官竟然這么愛(ài)問(wèn)Kafka,一連八個(gè)Kafka問(wèn)題把我問(wèn)蒙了?

  1. 為什么要使用Kafka?
  2. Kafka消費(fèi)過(guò)的消息如何再消費(fèi)?
  3. Kafka的數(shù)據(jù)是放在磁盤上還是內(nèi)存上,為什么速度會(huì)快?
  4. Kafka數(shù)據(jù)怎么保障不丟失?
  5. 采集數(shù)據(jù)為什么選擇Kafka?
  6. Kafka重啟是否會(huì)導(dǎo)致數(shù)據(jù)丟失?
  7. Kafka宕機(jī)了如何解決?
  8. 為什么Kafka不支持讀寫(xiě)分離?

Java

  1. Java的io流分類
  2. Java怎么寫(xiě)事務(wù)
  3. MyBatis怎么使用事務(wù)
  4. Java的內(nèi)部類和外部類
    • 在Java中,可以將一個(gè)類定義在另一個(gè)類里面或者一個(gè)方法里面,這樣的類稱為內(nèi)部類
    • 內(nèi)部類一般來(lái)說(shuō)包括這四種:成員內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類
    • 靜態(tài)成員內(nèi)部類:使用static修飾類
    • 非靜態(tài)成員內(nèi)部類:未用static修飾類,在沒(méi)有說(shuō)明是靜態(tài)成員內(nèi)部類時(shí),默認(rèn)成員內(nèi)部類指的就是非靜態(tài)成員內(nèi)部類
  5. Java中全局變量、靜態(tài)全局變量、靜態(tài)局部變量和局部變量的區(qū)別
  6. Java中重寫(xiě)與重載之間的區(qū)別
  7. Java中的final關(guān)鍵字
  8. Java的jvm了解嗎
  9. 多線程,線程啟動(dòng)個(gè)數(shù)如何確定?最多多少?

Flink

  1. Flink-cdc介紹一下
  2. Flink和Spark的區(qū)別是什么?
  3. 你們之前使用Spark做實(shí)時(shí),后來(lái)為什么使用Flink了?
  4. Flink的windowapi的分類介紹一下
  5. Flink常用算子介紹一下
  6. Flink的cep了解么?怎么使用的?
  7. Flink的水位線了解嗎?可以具體講講嗎?
  8. 你們Flink主要使用api開(kāi)發(fā)還是sql開(kāi)發(fā)?
  9. 能講講Flink雙流join是如何實(shí)現(xiàn)的嗎?

Flink面試資料合集

  1. Flink面試八股文
  2. Flink面試大全總結(jié)
  3. Flink高頻面試題
  4. Flink學(xué)習(xí)筆記

clickhouse

  1. 你們有有過(guò)clickhouse做join嗎?如何保證秒級(jí)延遲?

涉及到項(xiàng)目和數(shù)倉(cāng)的問(wèn)題

  1. 簡(jiǎn)單介紹一下你們項(xiàng)目中的業(yè)務(wù)吧
  2. 能結(jié)合業(yè)務(wù)說(shuō)說(shuō)你們的數(shù)倉(cāng)怎么搭建的嗎?你負(fù)責(zé)哪些模塊?
  3. 你們項(xiàng)目中的人員怎么分配的?
  4. 你們的主題是根據(jù)什么來(lái)劃分,為什么這么劃分?
  5. 你們?cè)磾?shù)據(jù)大概多少?gòu)埍恚?/li>
  6. 你們的日志數(shù)據(jù)到建立事實(shí)表的過(guò)程中,主要做了什么?
  7. 你們的維度層是怎么建設(shè)的
  8. 如果在解析日志文件時(shí)遇到很多的硬編碼,如何使用維度去解決?
  9. 你們的項(xiàng)目中有多少個(gè)指標(biāo)?負(fù)責(zé)過(guò)多少個(gè)?怎么編寫(xiě)的?
  10. 如果指標(biāo)出現(xiàn)同義不同名的情況如何解決?
  11. 阿里的oneData體系有了解嗎?
  12. 你們?nèi)绾伪WC數(shù)據(jù)質(zhì)量的?你日常遇到最多的數(shù)據(jù)質(zhì)量問(wèn)題是什么?
  13. 你的項(xiàng)目中離線任務(wù)有多少個(gè)?任務(wù)執(zhí)行的時(shí)間是什么時(shí)候?
  14. 你的項(xiàng)目中數(shù)據(jù)量,日活,漏斗分析大概是多少?以及其他分析的方向?
  15. 你們項(xiàng)目中的業(yè)務(wù)數(shù)據(jù)清洗是怎么做的?
  16. 數(shù)倉(cāng)的整體架構(gòu)是什么樣的?數(shù)倉(cāng)是如何分層的?
  17. 介紹一下項(xiàng)目中的數(shù)據(jù)流向
  18. 介紹一下項(xiàng)目中處理后的數(shù)據(jù)用途?
  19. 數(shù)倉(cāng)中的增量表全量表分別是怎么做的?有沒(méi)有用過(guò)拉鏈表?
  20. 工作中有沒(méi)有遇到的數(shù)據(jù)傾斜?如何處理的?
  21. 工作中有沒(méi)有遇到過(guò)斷點(diǎn)續(xù)傳的問(wèn)題?怎么處理的 這個(gè)問(wèn)題具體技術(shù)具體處理
  22. 你的數(shù)據(jù)建模經(jīng)驗(yàn)介紹一下?
  23. Java框架在你們項(xiàng)目中的應(yīng)用?
  24. 你在實(shí)時(shí)開(kāi)發(fā)的過(guò)程中遇到什么問(wèn)題?如何解決的?
  25. 你們的實(shí)時(shí)模型是如何進(jìn)行優(yōu)化的?怎么評(píng)估它是否是一個(gè)優(yōu)質(zhì)的模型?
  26. 你們的任務(wù)監(jiān)控有做過(guò)嗎?主要監(jiān)控什么?
  27. 你們?nèi)绾伪WC數(shù)據(jù)的準(zhǔn)確性?
  28. 埋點(diǎn)數(shù)據(jù)缺失怎么處理,埋點(diǎn)數(shù)據(jù)相關(guān)的表示如何設(shè)計(jì)的?
  29. 零點(diǎn)漂移如何解決?
  30. 有做過(guò)用戶路徑模型嗎?每條路徑的轉(zhuǎn)化率是多少?(是不是類似頁(yè)面單跳率那種)
  31. 你們的OLAP引擎主要用的什么?為什么這樣選型?
  32. 能聊聊端到端的一致性精準(zhǔn)一次消費(fèi)嗎?

工作內(nèi)容的問(wèn)題

  1. 你們的需求周期一般是多久?拿到需求之后怎么分析?
  2. 在完成需求的過(guò)程中,有沒(méi)有考慮過(guò)數(shù)倉(cāng)的通用性,你們是如何體現(xiàn)的?
  3. 你在工作中的最大收獲是什么,帶給你什么樣的能力?
  4. 你們的工作強(qiáng)度怎么樣,能接受加班嗎?
  5. 如果一周內(nèi)讓你做十個(gè)緊急的需求,你會(huì)怎么辦?
  6. 你們部門之間是直接進(jìn)行對(duì)接嗎?
  7. 有沒(méi)有反駁過(guò)產(chǎn)品提出的需求,如果不合理怎么辦?

各種組件需要學(xué)到什么樣的程度

hadoop學(xué)習(xí)到什么樣的程度

  1. hdfs、mapreduce、yarn 基本原理即可
  2. 各種面試基本題完成即可
    • MapReduce的執(zhí)行過(guò)程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過(guò)程(不需要手寫(xiě)mapreduce或者用java寫(xiě)mapreduce)
    • HDFS的讀寫(xiě)流程
    • Yarn的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
  3. 大多數(shù)公司可能都進(jìn)入spark階段了

spark學(xué)習(xí)到什么樣的程度

  1. 主要為了優(yōu)化mapreduce2的一些問(wèn)題,利用內(nèi)存計(jì)算,減少磁盤IO
  2. spark streaming + hbase 離線實(shí)時(shí) -> 使用flink搭建一整套實(shí)時(shí)
  3. 熟悉spark開(kāi)發(fā)的api和常用的算子
  4. 熟悉spark調(diào)優(yōu)
  5. spark的應(yīng)用:批處理,流處理流計(jì)算(flink和sparkstreaming),數(shù)據(jù)分析,圖形計(jì)算

spark面試重點(diǎn)

  1. 一些八股文知識(shí)點(diǎn),基本原理,是高頻且必須熟練知曉的,核心原理的流程和圖
  2. spark常見(jiàn)報(bào)錯(cuò)的解決方案
    • real spark沖突怎么解決
    • om怎么處理,driver的om和excute的om分別怎么處理
  3. 參數(shù)調(diào)優(yōu),集群層面調(diào)優(yōu),應(yīng)用層面調(diào)優(yōu)
    • 為什么這么做
    • 有沒(méi)有更好的方案
  4. sparksql調(diào)優(yōu)
    • 調(diào)優(yōu)場(chǎng)景
    • 怎么發(fā)現(xiàn)問(wèn)題的
    • 發(fā)現(xiàn)問(wèn)題后怎么定位問(wèn)題的
    • 定位問(wèn)題后怎么解決的
    • 解決之后達(dá)到什么樣的一個(gè)效果
    • 還有哪些更好的一些優(yōu)化方案嗎
  5. 根據(jù)業(yè)務(wù)場(chǎng)景現(xiàn)場(chǎng)寫(xiě)sql,根據(jù)數(shù)倉(cāng)的理論優(yōu)化sql
    • 常規(guī)的業(yè)務(wù)邏輯,join,for函數(shù),截取字符串,嵌套多個(gè)高級(jí)函數(shù)
  6. 企業(yè)開(kāi)發(fā)使用場(chǎng)景的解決方案
    • udf管理:統(tǒng)一倉(cāng)庫(kù)管理還是自己提交,怎么解決相同含義的sql function被重復(fù)的udf提交
    • thift server怎么用的,怎么用的,怎么解決多租戶,怎么解決權(quán)限,怎么解決負(fù)載均衡
  7. spark平臺(tái)和二次開(kāi)發(fā),源碼,遇到的問(wèn)題詳細(xì)問(wèn)
  8. 面試流程相關(guān)
    • 10-20分鐘問(wèn)項(xiàng)目
    • 20分鐘問(wèn)編程基礎(chǔ)
    • 20分鐘問(wèn)組件
    • spark問(wèn)20分鐘左右

spark暢談

  1. 小公司大部分業(yè)務(wù)場(chǎng)景是離線開(kāi)發(fā),實(shí)時(shí)場(chǎng)景也較少
  2. 大公司80%離線,20%實(shí)時(shí)
  3. sparkstreaming批處理比f(wàn)link批處理更快,性能差百分之五十左右,spark使用門檻較低
  4. 入職后可以想老員工討教經(jīng)驗(yàn),核心組件
  5. 博客快速瀏覽一些內(nèi)容
  6. 官網(wǎng)提供的一些例子

未來(lái)技術(shù)趨勢(shì)

  1. 萬(wàn)字詳解數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)湖、數(shù)據(jù)中臺(tái)和湖倉(cāng)一體
  2. 一文讀懂大數(shù)據(jù)實(shí)時(shí)計(jì)算
  3. 20000字詳解大廠實(shí)時(shí)數(shù)倉(cāng)建設(shè)

附錄

面試資料總結(jié)

  1. 大數(shù)據(jù)面試吹牛草稿V2.0
  2. 史上最全大數(shù)據(jù)面試題V3.1
  3. 精選大數(shù)據(jù)面試真題10道

大廠面試總結(jié)

  1. 字節(jié)跳動(dòng)大數(shù)據(jù)開(kāi)發(fā)面試題-附答案
  2. 美團(tuán)優(yōu)選大數(shù)據(jù)開(kāi)發(fā)崗面試真題-附答案詳細(xì)解析

我是 fx67ll.com,如果您發(fā)現(xiàn)本文有什么錯(cuò)誤,歡迎在評(píng)論區(qū)討論指正,感謝您的閱讀!
如果您喜歡這篇文章,歡迎訪問(wèn)我的 本文github倉(cāng)庫(kù)地址,為我點(diǎn)一顆Star,Thanks~ :)
轉(zhuǎn)發(fā)請(qǐng)注明參考文章地址,非常感謝!?。?/em>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容