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

先說些廢話

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

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

當然,因為時間精力有限,并非所有的問題我都去記錄了答案,如果您不了解某些問題或者不認可我記錄的解答,可以帶著問題百度或者問ChatCPT,相信會給您留下更深刻的印象。

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

高頻基礎(chǔ)知識點

執(zhí)行過程

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

Linux

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

MySQL

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

Hadoop(HDFS/MapReduce/Yarn)

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

Hive

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

Hbase

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

Scala

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

Spark

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

Spark面試資料合集

  1. Spark面試八股文
  2. Spark吐血整理
  3. Spark學習筆記
  4. 上萬字詳解Spark Core

Kafka

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

Kafka面試八問

大廠面試官竟然這么愛問Kafka,一連八個Kafka問題把我問蒙了?

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

Java

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

Flink

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

Flink面試資料合集

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

clickhouse

  1. 你們有有過clickhouse做join嗎?如何保證秒級延遲?

涉及到項目和數(shù)倉的問題

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

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

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

各種組件需要學到什么樣的程度

hadoop學習到什么樣的程度

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

spark學習到什么樣的程度

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

spark面試重點

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

spark暢談

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

未來技術(shù)趨勢

  1. 萬字詳解數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)中臺和湖倉一體
  2. 一文讀懂大數(shù)據(jù)實時計算
  3. 20000字詳解大廠實時數(shù)倉建設(shè)

附錄

面試資料總結(jié)

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

大廠面試總結(jié)

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

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

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

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