2023大數據面試總結

来源:https://www.cnblogs.com/fx67ll/archive/2023/07/14/bigdata-interview-list.html
-Advertisement-
Play Games

#### 先說些廢話 作為一個全棧開發工作者,曾經對公司專職的大數據開發有著濃厚的興趣,所以嘗試學習大數據開發所需要的各種技術棧。 本文就是我在學習過程中記錄下,所遇到的一些大數據面試的提問,僅供參考。 當然,因為時間精力有限,並非所有的問題我都去記錄了答案,如果您不瞭解某些問題或者不認可我記錄的解 ...


先說些廢話

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

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

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

最後,讀者可以把本文當作模擬面試的提綱,歡迎各位在評論區交流,大家一起成長,努力變得更強!!!

高頻基礎知識點

執行過程

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

Linux

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

MySQL

  1. sql的執行計劃,執行錯誤報警機制
  2. 索引有什麼優缺點
  3. 什麼時候會導致索引失效
  4. 如果我給一張表的所有欄位添加索引會有什麼樣的問題
  5. 如何進行sql調優 高頻

Hadoop(HDFS/MapReduce/Yarn)

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

Hive

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

Hbase

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

Scala

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

Spark

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

Spark面試資料合集

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

Kafka

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

Kafka面試八問

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

  1. 為什麼要使用Kafka?
  2. Kafka消費過的消息如何再消費?
  3. Kafka的數據是放在磁碟上還是記憶體上,為什麼速度會快?
  4. Kafka數據怎麼保障不丟失?
  5. 採集數據為什麼選擇Kafka?
  6. Kafka重啟是否會導致數據丟失?
  7. Kafka宕機瞭如何解決?
  8. 為什麼Kafka不支持讀寫分離?

Java

  1. Java的io流分類
  2. Java怎麼寫事務
  3. MyBatis怎麼使用事務
  4. Java的內部類和外部類
    • 在Java中,可以將一個類定義在另一個類裡面或者一個方法裡面,這樣的類稱為內部類
    • 內部類一般來說包括這四種:成員內部類、局部內部類、匿名內部類和靜態內部類
    • 靜態成員內部類:使用static修飾類
    • 非靜態成員內部類:未用static修飾類,在沒有說明是靜態成員內部類時,預設成員內部類指的就是非靜態成員內部類
  5. Java中全局變數、靜態全局變數、靜態局部變數和局部變數的區別
  6. Java中重寫與重載之間的區別
  7. Java中的final關鍵字
  8. Java的jvm瞭解嗎
  9. 多線程,線程啟動個數如何確定?最多多少?
  1. Flink-cdc介紹一下
  2. Flink和Spark的區別是什麼?
  3. 你們之前使用Spark做實時,後來為什麼使用Flink了?
  4. Flink的windowapi的分類介紹一下
  5. Flink常用運算元介紹一下
  6. Flink的cep瞭解麽?怎麼使用的?
  7. Flink的水位線瞭解嗎?可以具體講講嗎?
  8. 你們Flink主要使用api開發還是sql開發?
  9. 能講講Flink雙流join是如何實現的嗎?

Flink面試資料合集

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

clickhouse

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

涉及到項目和數倉的問題

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

工作內容的問題

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

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

hadoop學習到什麼樣的程度

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

spark學習到什麼樣的程度

  1. 主要為了優化mapreduce2的一些問題,利用記憶體計算,減少磁碟IO
  2. spark streaming + hbase 離線實時 -> 使用flink搭建一整套實時
  3. 熟悉spark開發的api和常用的運算元
  4. 熟悉spark調優
  5. spark的應用:批處理,流處理流計算(flink和sparkstreaming),數據分析,圖形計算

spark面試重點

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

spark暢談

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

未來技術趨勢

  1. 萬字詳解數據倉庫、數據湖、數據中台和湖倉一體
  2. 一文讀懂大數據實時計算
  3. 20000字詳解大廠實時數倉建設

附錄

面試資料總結

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

大廠面試總結

  1. 位元組跳動大數據開發麵試題-附答案
  2. 美團優選大數據開發崗面試真題-附答案詳細解析

我是 fx67ll.com,如果您發現本文有什麼錯誤,歡迎在評論區討論指正,感謝您的閱讀!
如果您喜歡這篇文章,歡迎訪問我的 本文github倉庫地址,為我點一顆Star,Thanks~

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於部署個人項目使用了`openjdk11`,但是我之前安裝的是`jdk1.8`,jdk版本升級的後果就是,tomcat運行的時候報一點小bug,找了很多資料之後,決定在tomcat的運行文件中覆蓋使用的jdk版本路徑來解決 ...
  • 以分號結尾加回車為一個命令 show databases;//展示所有資料庫 create database xxx;//創建新的資料庫 create database if not exists xxx;//檢查是否創建XXX資料庫,沒有則創建,有則不創建 create database defa ...
  • 近年來,隨著信息化、數字化、智能化的快速發展,數據從資源逐漸轉變為資產。金融行業具有海量數據資源和豐富應用場景優勢,在企業經營管理、產品研發、技術創新等關鍵環節中發揮著重要作用。[數據治理](https://www.dtstack.com/?src=szsm=06)作為釋放數據價值的基礎,在推動銀行 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • mysql-8安裝教程(windows 64位) 安裝windows 64位mysql-8 第1步,從官網下載mysql-8最新版本 下載 MySQL Community Server 8.0.20,下載地址:https://dev.mysql.com/downloads/mysql/ 第2步,解壓 ...
  • # SQLServer 批量修改或插入 # 場景 今天在工作中遇到這麼一個場景,我需要根據條件對錶A做批量更新或插入。因為條件比較複雜,所以我使用了臨時表B,先把需要更新或插入的數據查詢出來放入臨時表。然後更新表A的某欄位,更新條件是A.id = B.id,更新效果是若記錄存在表A中,則更新表A的字 ...
  • ![file](https://img2023.cnblogs.com/other/2685289/202307/2685289-20230714100921932-1108940383.jpg) ## 用戶案例 | 自如 隨著自如業務的快速發展,不斷增長的調度任務和歷史逾萬的存量任務對平臺穩定性提 ...
  • MySQL資料庫遷移(直接複製文件) - 簡書 (jianshu.com) 看了幾種方法: 1、修改註冊表的 windows下遷移mysql數據 - 程式員丁先生 - 博客園 (cnblogs.com) 2、mysqldump指令將資料庫表/數據保存成xx.sql文件存到本地的 (157條消息) 如 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...