先說些廢話
作為一個(gè)全棧開發(fā)工作者,曾經(jīng)對(duì)公司專職的大數(shù)據(jù)開發(fā)有著濃厚的興趣,所以嘗試學(xué)習(xí)大數(shù)據(jù)開發(fā)所需要的各種技術(shù)棧。
本文就是我在學(xué)習(xí)過程中記錄下,所遇到的一些大數(shù)據(jù)面試的提問,僅供參考。
當(dāng)然,因?yàn)闀r(shí)間精力有限,并非所有的問題我都去記錄了答案,如果您不了解某些問題或者不認(rèn)可我記錄的解答,可以帶著問題百度或者問ChatCPT,相信會(huì)給您留下更深刻的印象。
最后,讀者可以把本文當(dāng)作模擬面試的提綱,歡迎各位在評(píng)論區(qū)交流,大家一起成長(zhǎng),努力變得更強(qiáng)!!!
高頻基礎(chǔ)知識(shí)點(diǎn)
執(zhí)行過程
- MapReduce 的執(zhí)行過程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過程(不需要手寫MapReduce或者用java寫MapReduce)
- HDFS 的讀寫流程
- Yarn 的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
- Hive 的執(zhí)行過程(Hive SQL 如何解析成MapReduce的)
- Spark 任務(wù)的執(zhí)行過程
- Spark SQL 的底層執(zhí)行過程
Linux
- 如何查看內(nèi)存,CPU占用
- Shell腳本如何定義函數(shù)調(diào)用
- Shell腳本第一行:
#!/bin/bash
的含義- 第一行的內(nèi)容指定了shell腳本解釋器的路徑,而且這個(gè)指定路徑只能放在文件的第一行
- 第一行寫錯(cuò)或者不寫時(shí),系統(tǒng)會(huì)有一個(gè)默認(rèn)的解釋器進(jìn)行解釋
- Linux腳本授權(quán)是什么?Linux授權(quán)命令是什么?
chmod [{ugoa}{+-=}{rwx}] [文件或目錄]
chmod [mode=421] [文件或目錄]
- Shell標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤是什么?
- 工作中常用的Linux命令有哪些?
MySQL
- sql的執(zhí)行計(jì)劃,執(zhí)行錯(cuò)誤報(bào)警機(jī)制
- 索引有什么優(yōu)缺點(diǎn)
- 什么時(shí)候會(huì)導(dǎo)致索引失效
- 如果我給一張表的所有字段添加索引會(huì)有什么樣的問題
- 如何進(jìn)行sql調(diào)優(yōu) 高頻
Hadoop(HDFS/MapReduce/Yarn)
- Haddop3對(duì)于Hadoop2有哪些新特性
- HDFS 常用命令有哪些
- 工作中遇到 MapReduce 流程的相關(guān)問題如何排查
- 其他問題匯總
Hive
- 工作中如何進(jìn)行Hive優(yōu)化 高頻
- Hive中有任務(wù)跑的時(shí)間比較長(zhǎng),怎么優(yōu)化
- Hive任務(wù)處理過程中遇到過什么樣的問題
- Hive SQL 查詢比較慢(數(shù)據(jù)傾斜),怎么處理
- Hive的參數(shù)設(shè)置用過哪些,有什么作用
- Hive中表關(guān)聯(lián)方式j(luò)oin的分類、用法、應(yīng)用場(chǎng)景
- 什么時(shí)候會(huì)走M(jìn)apJoin
- 什么情況下會(huì)產(chǎn)生Hive小文件,小文件有什么危害
- Hive的查詢過程,哪些方法可以提高查詢效率 變相的問優(yōu)化
- Hive的窗口函數(shù),常用窗口函數(shù),怎么使用
- 窗口函數(shù)
row_number
、rank
、dense_rank
之間的區(qū)別row_number是行號(hào),不會(huì)重復(fù)
rank數(shù)據(jù)相同的,給出并列排名,但是會(huì)跳躍
dense_rank類似于rank,但不會(huì)跳躍
hive窗口函數(shù)之排名函數(shù)row_number、rank和dense_rank
Hive窗口函數(shù)保姆級(jí)教程
Hive窗口函數(shù)/分析函數(shù)詳解
+ 如何用窗口函數(shù)去重
- 窗口函數(shù)
- Hive SQL的數(shù)據(jù)去重方式
- distinct、groupby、row_number
- hive中三種去重的方法
- 項(xiàng)目中Hive有多少表
- Hive查詢組件Impala了解嗎?簡(jiǎn)單介紹下
- Hive中的行列轉(zhuǎn)換,除了case when,還有別的方法嗎
- 行轉(zhuǎn)列:
collect_set()
、collect_list()
、concat_ws()
- 列轉(zhuǎn)行:
explode()
、split()
、LATERAL VIEW
- Hive sql 行列轉(zhuǎn)換(行轉(zhuǎn)列,列轉(zhuǎn)行)
- 行轉(zhuǎn)列:
- Hive中內(nèi)部表和外部表的區(qū)別??jī)?nèi)部表和外部表如果刪除了元數(shù)據(jù)是由誰來維護(hù)?元數(shù)據(jù)的存儲(chǔ)位置和管理者是誰
- 從創(chuàng)建表和刪除表兩個(gè)方面說明
- metastore,master節(jié)點(diǎn)上
- mysql,metastore
- Hive分區(qū)和分桶的區(qū)別?分桶的原理?分區(qū)可以提高查詢效率嗎?分區(qū)越多越好嗎
- MR中:按照key的hash值去模除以reductTask的個(gè)數(shù)
- Hive中:按照分桶字段的hash值去模除以分桶的個(gè)數(shù)
- 縮小數(shù)據(jù)查詢范圍,提高查詢效率,但是不是分區(qū)越多越好
- Hive中如果有過多的分區(qū),由于底層是存儲(chǔ)在HDFS上,HDFS上只用于存儲(chǔ)大文件而非小文件,因?yàn)檫^多的分區(qū)會(huì)增加NameNode的負(fù)擔(dān)
- Hive SQL會(huì)轉(zhuǎn)化為MapReduce, MapReduce會(huì)轉(zhuǎn)化為多個(gè)task,過多小文件的話,每個(gè)文件一個(gè)task,每個(gè)taskー個(gè)JVM實(shí)例,JVM的開啟與銷毀會(huì)降低系統(tǒng)效率
- 合理的分區(qū)不應(yīng)該有過多的分區(qū)和文件目錄,并且每個(gè)目錄下的文件應(yīng)該足夠大
- Hive中分區(qū)是否越多越好?
- 如何反查哪條Hive SQL執(zhí)行較慢?
- Hive查詢?cè)诠ぷ髦杏龅绞裁礃拥碾y點(diǎn)?如何解決?
Hbase
- Hbase查詢用的多嗎,有沒有做過優(yōu)化?
- 萬字長(zhǎng)文詳解HBase讀寫性能優(yōu)化
- Hbase快速入門(超精煉總結(jié))
- 大多數(shù)key-value數(shù)據(jù)庫是為了高頻寫入而設(shè)計(jì)的,而不是為了高速讀取!用來做高性能查詢完全是個(gè)方向性錯(cuò)誤
- Hbase查詢過濾器用過嗎,簡(jiǎn)單介紹下
- RowFilter、FamilyFilter、QualifierFilter、ValueFilter
- SingleColumnValueFilter、SingleColumnValueExcludeFilter、PrefixFilter、PageFilter
- 多過濾器綜合查詢FilterList
- HBase過濾器查詢
- 用戶畫像的構(gòu)建是Hbase做的嗎?特征值怎么提取的?
- 項(xiàng)目Hbase的RowKey是如何設(shè)計(jì)的?
Scala
- Scala有什么特性
- Scala的class和case class在使用層面有什么區(qū)別
- Scala的Option類型的作用與使用方法
- Scala的泛型斜變逆變
- Scala的函數(shù)柯里化了解嗎??jī)?yōu)點(diǎn)是什么?
- Scala的隱式函數(shù)、隱式轉(zhuǎn)換
- Scala用過哪些函數(shù)
- Scala中的String是可變的嗎?
- String是一個(gè)不可變的對(duì)象,所以該對(duì)象不可被修改,這就意味著你如果修改字符串就會(huì)產(chǎn)生一個(gè)新的字符串對(duì)象,但其他對(duì)象,如數(shù)組就是可變的對(duì)象
- String對(duì)象是不可變的,如果你需要?jiǎng)?chuàng)建一個(gè)可以修改的字符串,可以使用
String Builder
類 - Scala:字符串
- Scala是否可以多繼承
- Scala中的多重繼承由特質(zhì)(trait)實(shí)現(xiàn)并遵循線性化規(guī)則
- 在多重繼承中,如果一個(gè)特質(zhì)已經(jīng)顯式擴(kuò)展了一個(gè)類,則混入該特質(zhì)的類必須是之前特質(zhì)混入的類的子類
- 這意味著當(dāng)混入一個(gè)已擴(kuò)展了別的類的特質(zhì)時(shí),他們必須擁有相同的父類
Spark
- 你了解Spark的序列化嗎?Spark提供了哪些序列化類?
- Spark中RDD持久化了解過嗎?
- Spark算子分類?常用算子?怎么使用的? 高頻
- Spark的惰性計(jì)算機(jī)制了解過嗎?(懶加載)
- 工作中如何進(jìn)行Spark優(yōu)化? 高頻
- Spark的Stage和Task的劃分?Task數(shù)目由什么決定?
- Spark的寬窄依賴了解過嗎?
- Spark如何查看日志和排查報(bào)錯(cuò)問題?
- 工作中跟有沒有遇到到Spark數(shù)據(jù)傾斜,如何處理的?
- Spark Streaming怎么保證精準(zhǔn)的消費(fèi)?
- Spark在工作中遇到什么樣的難點(diǎn)?如何解決?
Spark面試資料合集
Kafka
- 簡(jiǎn)單介紹下kafka的核心概念及個(gè)人理解
- Kafka在數(shù)據(jù)傳輸過程中遇到重復(fù)數(shù)據(jù)怎么處理
- Kafka在使用過程中如何保證數(shù)據(jù)不丟失
- Kafka中的ack含義是什么
Kafka面試八問
大廠面試官竟然這么愛問Kafka,一連八個(gè)Kafka問題把我問蒙了?
- 為什么要使用Kafka?
- Kafka消費(fèi)過的消息如何再消費(fèi)?
- Kafka的數(shù)據(jù)是放在磁盤上還是內(nèi)存上,為什么速度會(huì)快?
- Kafka數(shù)據(jù)怎么保障不丟失?
- 采集數(shù)據(jù)為什么選擇Kafka?
- Kafka重啟是否會(huì)導(dǎo)致數(shù)據(jù)丟失?
- Kafka宕機(jī)了如何解決?
- 為什么Kafka不支持讀寫分離?
Java
- Java的io流分類
- Java怎么寫事務(wù)
- MyBatis怎么使用事務(wù)
- Java的內(nèi)部類和外部類
- 在Java中,可以將一個(gè)類定義在另一個(gè)類里面或者一個(gè)方法里面,這樣的類稱為內(nèi)部類
- 內(nèi)部類一般來說包括這四種:成員內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類
- 靜態(tài)成員內(nèi)部類:使用static修飾類
- 非靜態(tài)成員內(nèi)部類:未用static修飾類,在沒有說明是靜態(tài)成員內(nèi)部類時(shí),默認(rèn)成員內(nèi)部類指的就是非靜態(tài)成員內(nèi)部類
- Java中全局變量、靜態(tài)全局變量、靜態(tài)局部變量和局部變量的區(qū)別
- Java中重寫與重載之間的區(qū)別
- Java中的final關(guān)鍵字
- Java的jvm了解嗎
- 多線程,線程啟動(dòng)個(gè)數(shù)如何確定?最多多少?
Flink
- Flink-cdc介紹一下
- Flink和Spark的區(qū)別是什么?
- 你們之前使用Spark做實(shí)時(shí),后來為什么使用Flink了?
- Flink的windowapi的分類介紹一下
- Flink常用算子介紹一下
- Flink的cep了解么?怎么使用的?
- Flink的水位線了解嗎?可以具體講講嗎?
- 你們Flink主要使用api開發(fā)還是sql開發(fā)?
- 能講講Flink雙流join是如何實(shí)現(xiàn)的嗎?
Flink面試資料合集
clickhouse
- 你們有有過clickhouse做join嗎?如何保證秒級(jí)延遲?
涉及到項(xiàng)目和數(shù)倉的問題
- 簡(jiǎn)單介紹一下你們項(xiàng)目中的業(yè)務(wù)吧
- 能結(jié)合業(yè)務(wù)說說你們的數(shù)倉怎么搭建的嗎?你負(fù)責(zé)哪些模塊?
- 你們項(xiàng)目中的人員怎么分配的?
- 你們的
主題
是根據(jù)什么來劃分,為什么這么劃分? - 你們?cè)磾?shù)據(jù)大概多少張表?
- 你們的日志數(shù)據(jù)到建立
事實(shí)表
的過程中,主要做了什么? - 你們的
維度層
是怎么建設(shè)的 - 如果在解析日志文件時(shí)遇到很多的硬編碼,如何使用維度去解決?
- 你們的項(xiàng)目中有多少個(gè)
指標(biāo)
?負(fù)責(zé)過多少個(gè)?怎么編寫的? - 如果指標(biāo)出現(xiàn)同義不同名的情況如何解決?
-
阿里的
oneData體系
有了解嗎? - 你們?nèi)绾伪WC
數(shù)據(jù)質(zhì)量
的?你日常遇到最多的數(shù)據(jù)質(zhì)量
問題是什么? - 你的項(xiàng)目中
離線任務(wù)
有多少個(gè)?任務(wù)執(zhí)行的時(shí)間是什么時(shí)候? - 你的項(xiàng)目中
數(shù)據(jù)量,日活,漏斗分析
大概是多少?以及其他分析的方向? - 你們項(xiàng)目中的
業(yè)務(wù)數(shù)據(jù)清洗
是怎么做的? - 數(shù)倉的
整體架構(gòu)
是什么樣的?數(shù)倉是如何分層
的? - 介紹一下項(xiàng)目中的
數(shù)據(jù)流向
- 介紹一下項(xiàng)目中
處理后的數(shù)據(jù)用途
? - 數(shù)倉中的
增量表
和全量表
分別是怎么做的?有沒有用過拉鏈表
? - 工作中有沒有遇到的
數(shù)據(jù)傾斜
?如何處理的? - 工作中有沒有遇到過
斷點(diǎn)續(xù)傳
的問題?怎么處理的 這個(gè)問題具體技術(shù)具體處理 - 你的
數(shù)據(jù)建模經(jīng)驗(yàn)
介紹一下? -
Java框架
在你們項(xiàng)目中的應(yīng)用? - 你在實(shí)時(shí)開發(fā)的過程中遇到什么問題?如何解決的?
- 你們的實(shí)時(shí)模型是如何進(jìn)行優(yōu)化的?怎么評(píng)估它是否是一個(gè)優(yōu)質(zhì)的模型?
- 你們的
任務(wù)監(jiān)控
有做過嗎?主要監(jiān)控什么? - 你們?nèi)绾伪WC
數(shù)據(jù)的準(zhǔn)確性
? - 埋點(diǎn)數(shù)據(jù)缺失怎么處理,埋點(diǎn)數(shù)據(jù)相關(guān)的表示如何設(shè)計(jì)的?
- 零點(diǎn)漂移如何解決?
- 有做過用戶路徑模型嗎?每條路徑的轉(zhuǎn)化率是多少?(是不是類似頁面單跳率那種)
- 你們的OLAP引擎主要用的什么?為什么這樣選型?
- 能聊聊
端到端的一致性
和精準(zhǔn)一次消費(fèi)
嗎?
工作內(nèi)容的問題
- 你們的需求周期一般是多久?拿到需求之后怎么分析?
- 在完成需求的過程中,有沒有考慮過數(shù)倉的通用性,你們是如何體現(xiàn)的?
- 你在工作中的最大收獲是什么,帶給你什么樣的能力?
- 你們的工作強(qiáng)度怎么樣,能接受加班嗎?
- 如果一周內(nèi)讓你做十個(gè)緊急的需求,你會(huì)怎么辦?
- 你們部門之間是直接進(jìn)行對(duì)接嗎?
- 有沒有反駁過產(chǎn)品提出的需求,如果不合理怎么辦?
各種組件需要學(xué)到什么樣的程度
hadoop學(xué)習(xí)到什么樣的程度
- hdfs、mapreduce、yarn 基本原理即可
- 各種面試基本題完成即可
- MapReduce的執(zhí)行過程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過程(不需要手寫mapreduce或者用java寫mapreduce)
- HDFS的讀寫流程
- Yarn的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
- 大多數(shù)公司可能都進(jìn)入spark階段了
spark學(xué)習(xí)到什么樣的程度
- 主要為了優(yōu)化mapreduce2的一些問題,利用內(nèi)存計(jì)算,減少磁盤IO
- spark streaming + hbase 離線實(shí)時(shí) -> 使用flink搭建一整套實(shí)時(shí)
- 熟悉spark開發(fā)的api和常用的算子
- 熟悉spark調(diào)優(yōu)
- spark的應(yīng)用:批處理,流處理流計(jì)算(flink和sparkstreaming),數(shù)據(jù)分析,圖形計(jì)算
spark面試重點(diǎn)
- 一些八股文知識(shí)點(diǎn),基本原理,是高頻且必須熟練知曉的,核心原理的流程和圖
- spark常見報(bào)錯(cuò)的解決方案
- real spark沖突怎么解決
- om怎么處理,driver的om和excute的om分別怎么處理
- 參數(shù)調(diào)優(yōu),集群層面調(diào)優(yōu),應(yīng)用層面調(diào)優(yōu)
- 為什么這么做
- 有沒有更好的方案
- sparksql調(diào)優(yōu)
- 調(diào)優(yōu)場(chǎng)景
- 怎么發(fā)現(xiàn)問題的
- 發(fā)現(xiàn)問題后怎么定位問題的
- 定位問題后怎么解決的
- 解決之后達(dá)到什么樣的一個(gè)效果
- 還有哪些更好的一些優(yōu)化方案嗎
- 根據(jù)業(yè)務(wù)場(chǎng)景現(xiàn)場(chǎng)寫sql,根據(jù)數(shù)倉的理論優(yōu)化sql
- 常規(guī)的業(yè)務(wù)邏輯,join,for函數(shù),截取字符串,嵌套多個(gè)高級(jí)函數(shù)
- 企業(yè)開發(fā)使用場(chǎng)景的解決方案
- udf管理:統(tǒng)一倉庫管理還是自己提交,怎么解決相同含義的sql function被重復(fù)的udf提交
- thift server怎么用的,怎么用的,怎么解決多租戶,怎么解決權(quán)限,怎么解決負(fù)載均衡
- spark平臺(tái)和二次開發(fā),源碼,遇到的問題詳細(xì)問
- 面試流程相關(guān)
- 10-20分鐘問項(xiàng)目
- 20分鐘問編程基礎(chǔ)
- 20分鐘問組件
- spark問20分鐘左右
spark暢談
- 小公司大部分業(yè)務(wù)場(chǎng)景是離線開發(fā),實(shí)時(shí)場(chǎng)景也較少
- 大公司80%離線,20%實(shí)時(shí)
- sparkstreaming批處理比flink批處理更快,性能差百分之五十左右,spark使用門檻較低
- 入職后可以想老員工討教經(jīng)驗(yàn),核心組件
- 博客快速瀏覽一些內(nèi)容
- 官網(wǎng)提供的一些例子
未來技術(shù)趨勢(shì)
- 萬字詳解數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)中臺(tái)和湖倉一體
- 一文讀懂大數(shù)據(jù)實(shí)時(shí)計(jì)算
- 20000字詳解大廠實(shí)時(shí)數(shù)倉建設(shè)
附錄
面試資料總結(jié)
大廠面試總結(jié)
我是 fx67ll.com,如果您發(fā)現(xiàn)本文有什么錯(cuò)誤,歡迎在評(píng)論區(qū)討論指正,感謝您的閱讀!
如果您喜歡這篇文章,歡迎訪問我的 本文github倉庫地址,為我點(diǎn)一顆Star,Thanks~ :)
轉(zhuǎn)發(fā)請(qǐng)注明參考文章地址,非常感謝!!!