先說(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ò)程
- MapReduce 的執(zhí)行過(guò)程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過(guò)程(不需要手寫(xiě)MapReduce或者用java寫(xiě)MapReduce)
- HDFS 的讀寫(xiě)流程
- Yarn 的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
- Hive 的執(zhí)行過(guò)程(Hive SQL 如何解析成MapReduce的)
- Spark 任務(wù)的執(zhí)行過(guò)程
- Spark SQL 的底層執(zhí)行過(guò)程
Linux
- 如何查看內(nèi)存,CPU占用
- Shell腳本如何定義函數(shù)調(diào)用
- Shell腳本第一行:
#!/bin/bash的含義- 第一行的內(nèi)容指定了shell腳本解釋器的路徑,而且這個(gè)指定路徑只能放在文件的第一行
- 第一行寫(xiě)錯(cuò)或者不寫(xiě)時(shí),系統(tǒng)會(huì)有一個(gè)默認(rèn)的解釋器進(jìn)行解釋
- Linux腳本授權(quán)是什么?Linux授權(quán)命令是什么?
chmod [{ugoa}{+-=}{rwx}] [文件或目錄](méi)chmod [mode=421] [文件或目錄](méi)
- 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ì)有什么樣的問(wèn)題
- 如何進(jìn)行sql調(diào)優(yōu) 高頻
Hadoop(HDFS/MapReduce/Yarn)
- Haddop3對(duì)于Hadoop2有哪些新特性
- HDFS 常用命令有哪些
- 工作中遇到 MapReduce 流程的相關(guān)問(wèn)題如何排查
- 其他問(wèn)題匯總
Hive
- 工作中如何進(jìn)行Hive優(yōu)化 高頻
- Hive中有任務(wù)跑的時(shí)間比較長(zhǎng),怎么優(yōu)化
- Hive任務(wù)處理過(guò)程中遇到過(guò)什么樣的問(wèn)題
- Hive SQL 查詢比較慢(數(shù)據(jù)傾斜),怎么處理
- Hive的參數(shù)設(shè)置用過(guò)哪些,有什么作用
- Hive中表關(guān)聯(lián)方式j(luò)oin的分類、用法、應(yīng)用場(chǎng)景
- 什么時(shí)候會(huì)走M(jìn)apJoin
- 什么情況下會(huì)產(chǎn)生Hive小文件,小文件有什么危害
- Hive的查詢過(guò)程,哪些方法可以提高查詢效率 變相的問(wèn)優(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ù)是由誰(shuí)來(lái)維護(hù)?元數(shù)據(jù)的存儲(chǔ)位置和管理者是誰(shuí)
- 從創(chuàng)建表和刪除表兩個(gè)方面說(shuō)明
- 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中如果有過(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ū)是否越多越好?
- 如何反查哪條Hive SQL執(zhí)行較慢?
- Hive查詢?cè)诠ぷ髦杏龅绞裁礃拥碾y點(diǎn)?如何解決?
Hbase
- Hbase查詢用的多嗎,有沒(méi)有做過(guò)優(yōu)化?
- 萬(wàn)字長(zhǎng)文詳解HBase讀寫(xiě)性能優(yōu)化
- Hbase快速入門(超精煉總結(jié))
- 大多數(shù)key-value數(shù)據(jù)庫(kù)是為了高頻寫(xiě)入而設(shè)計(jì)的,而不是為了高速讀??!用來(lái)做高性能查詢完全是個(gè)方向性錯(cuò)誤
- Hbase查詢過(guò)濾器用過(guò)嗎,簡(jiǎn)單介紹下
- RowFilter、FamilyFilter、QualifierFilter、ValueFilter
- SingleColumnValueFilter、SingleColumnValueExcludeFilter、PrefixFilter、PageFilter
- 多過(guò)濾器綜合查詢FilterList
- HBase過(guò)濾器查詢
- 用戶畫(huà)像的構(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用過(guò)哪些函數(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持久化了解過(guò)嗎?
- Spark算子分類?常用算子?怎么使用的? 高頻
- Spark的惰性計(jì)算機(jī)制了解過(guò)嗎?(懶加載)
- 工作中如何進(jìn)行Spark優(yōu)化? 高頻
- Spark的Stage和Task的劃分?Task數(shù)目由什么決定?
- Spark的寬窄依賴了解過(guò)嗎?
- Spark如何查看日志和排查報(bào)錯(cuò)問(wèn)題?
- 工作中跟有沒(méi)有遇到到Spark數(shù)據(jù)傾斜,如何處理的?
- Spark Streaming怎么保證精準(zhǔn)的消費(fèi)?
- Spark在工作中遇到什么樣的難點(diǎn)?如何解決?
Spark面試資料合集
Kafka
- 簡(jiǎn)單介紹下kafka的核心概念及個(gè)人理解
- Kafka在數(shù)據(jù)傳輸過(guò)程中遇到重復(fù)數(shù)據(jù)怎么處理
- Kafka在使用過(guò)程中如何保證數(shù)據(jù)不丟失
- Kafka中的ack含義是什么
Kafka面試八問(wèn)
大廠面試官竟然這么愛(ài)問(wèn)Kafka,一連八個(gè)Kafka問(wèn)題把我問(wèn)蒙了?
- 為什么要使用Kafka?
- Kafka消費(fèi)過(guò)的消息如何再消費(fèi)?
- Kafka的數(shù)據(jù)是放在磁盤上還是內(nèi)存上,為什么速度會(huì)快?
- Kafka數(shù)據(jù)怎么保障不丟失?
- 采集數(shù)據(jù)為什么選擇Kafka?
- Kafka重啟是否會(huì)導(dǎo)致數(shù)據(jù)丟失?
- Kafka宕機(jī)了如何解決?
- 為什么Kafka不支持讀寫(xiě)分離?
Java
- Java的io流分類
- Java怎么寫(xiě)事務(wù)
- MyBatis怎么使用事務(wù)
- 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)部類
- Java中全局變量、靜態(tài)全局變量、靜態(tài)局部變量和局部變量的區(qū)別
- Java中重寫(xiě)與重載之間的區(qū)別
- Java中的final關(guān)鍵字
- Java的jvm了解嗎
- 多線程,線程啟動(dòng)個(gè)數(shù)如何確定?最多多少?
Flink
- Flink-cdc介紹一下
- Flink和Spark的區(qū)別是什么?
- 你們之前使用Spark做實(shí)時(shí),后來(lái)為什么使用Flink了?
- Flink的windowapi的分類介紹一下
- Flink常用算子介紹一下
- Flink的cep了解么?怎么使用的?
- Flink的水位線了解嗎?可以具體講講嗎?
- 你們Flink主要使用api開(kāi)發(fā)還是sql開(kāi)發(fā)?
- 能講講Flink雙流join是如何實(shí)現(xiàn)的嗎?
Flink面試資料合集
clickhouse
- 你們有有過(guò)clickhouse做join嗎?如何保證秒級(jí)延遲?
涉及到項(xiàng)目和數(shù)倉(cāng)的問(wèn)題
- 簡(jiǎn)單介紹一下你們項(xiàng)目中的業(yè)務(wù)吧
- 能結(jié)合業(yè)務(wù)說(shuō)說(shuō)你們的數(shù)倉(cāng)怎么搭建的嗎?你負(fù)責(zé)哪些模塊?
- 你們項(xiàng)目中的人員怎么分配的?
- 你們的
主題是根據(jù)什么來(lái)劃分,為什么這么劃分? - 你們?cè)磾?shù)據(jù)大概多少?gòu)埍恚?/li>
- 你們的日志數(shù)據(jù)到建立
事實(shí)表的過(guò)程中,主要做了什么? - 你們的
維度層是怎么建設(shè)的 - 如果在解析日志文件時(shí)遇到很多的硬編碼,如何使用維度去解決?
- 你們的項(xiàng)目中有多少個(gè)
指標(biāo)?負(fù)責(zé)過(guò)多少個(gè)?怎么編寫(xiě)的? - 如果指標(biāo)出現(xiàn)同義不同名的情況如何解決?
-
阿里的
oneData體系有了解嗎? - 你們?nèi)绾伪WC
數(shù)據(jù)質(zhì)量的?你日常遇到最多的數(shù)據(jù)質(zhì)量問(wèn)題是什么? - 你的項(xiàng)目中
離線任務(wù)有多少個(gè)?任務(wù)執(zhí)行的時(shí)間是什么時(shí)候? - 你的項(xiàng)目中
數(shù)據(jù)量,日活,漏斗分析大概是多少?以及其他分析的方向? - 你們項(xiàng)目中的
業(yè)務(wù)數(shù)據(jù)清洗是怎么做的? - 數(shù)倉(cāng)的
整體架構(gòu)是什么樣的?數(shù)倉(cāng)是如何分層的? - 介紹一下項(xiàng)目中的
數(shù)據(jù)流向 - 介紹一下項(xiàng)目中
處理后的數(shù)據(jù)用途? - 數(shù)倉(cāng)中的
增量表和全量表分別是怎么做的?有沒(méi)有用過(guò)拉鏈表? - 工作中有沒(méi)有遇到的
數(shù)據(jù)傾斜?如何處理的? - 工作中有沒(méi)有遇到過(guò)
斷點(diǎn)續(xù)傳的問(wèn)題?怎么處理的 這個(gè)問(wèn)題具體技術(shù)具體處理 - 你的
數(shù)據(jù)建模經(jīng)驗(yàn)介紹一下? -
Java框架在你們項(xiàng)目中的應(yīng)用? - 你在實(shí)時(shí)開(kāi)發(fā)的過(guò)程中遇到什么問(wèn)題?如何解決的?
- 你們的實(shí)時(shí)模型是如何進(jìn)行優(yōu)化的?怎么評(píng)估它是否是一個(gè)優(yōu)質(zhì)的模型?
- 你們的
任務(wù)監(jiān)控有做過(guò)嗎?主要監(jiān)控什么? - 你們?nèi)绾伪WC
數(shù)據(jù)的準(zhǔn)確性? - 埋點(diǎn)數(shù)據(jù)缺失怎么處理,埋點(diǎn)數(shù)據(jù)相關(guān)的表示如何設(shè)計(jì)的?
- 零點(diǎn)漂移如何解決?
- 有做過(guò)用戶路徑模型嗎?每條路徑的轉(zhuǎn)化率是多少?(是不是類似頁(yè)面單跳率那種)
- 你們的OLAP引擎主要用的什么?為什么這樣選型?
- 能聊聊
端到端的一致性和精準(zhǔn)一次消費(fèi)嗎?
工作內(nèi)容的問(wèn)題
- 你們的需求周期一般是多久?拿到需求之后怎么分析?
- 在完成需求的過(guò)程中,有沒(méi)有考慮過(guò)數(shù)倉(cāng)的通用性,你們是如何體現(xiàn)的?
- 你在工作中的最大收獲是什么,帶給你什么樣的能力?
- 你們的工作強(qiáng)度怎么樣,能接受加班嗎?
- 如果一周內(nèi)讓你做十個(gè)緊急的需求,你會(huì)怎么辦?
- 你們部門之間是直接進(jìn)行對(duì)接嗎?
- 有沒(méi)有反駁過(guò)產(chǎn)品提出的需求,如果不合理怎么辦?
各種組件需要學(xué)到什么樣的程度
hadoop學(xué)習(xí)到什么樣的程度
- hdfs、mapreduce、yarn 基本原理即可
- 各種面試基本題完成即可
- MapReduce的執(zhí)行過(guò)程,如何進(jìn)行一個(gè)文件的計(jì)算,shuffle的過(guò)程(不需要手寫(xiě)mapreduce或者用java寫(xiě)mapreduce)
- HDFS的讀寫(xiě)流程
- Yarn的任務(wù)提交流程,如何查看任務(wù)日志和報(bào)錯(cuò)信息
- 大多數(shù)公司可能都進(jìn)入spark階段了
spark學(xué)習(xí)到什么樣的程度
- 主要為了優(yōu)化mapreduce2的一些問(wèn)題,利用內(nèi)存計(jì)算,減少磁盤IO
- spark streaming + hbase 離線實(shí)時(shí) -> 使用flink搭建一整套實(shí)時(shí)
- 熟悉spark開(kāi)發(fā)的api和常用的算子
- 熟悉spark調(diào)優(yōu)
- spark的應(yīng)用:批處理,流處理流計(jì)算(flink和sparkstreaming),數(shù)據(jù)分析,圖形計(jì)算
spark面試重點(diǎn)
- 一些八股文知識(shí)點(diǎn),基本原理,是高頻且必須熟練知曉的,核心原理的流程和圖
- spark常見(jiàn)報(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)
- 為什么這么做
- 有沒(méi)有更好的方案
- 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)化方案嗎
- 根據(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ù)
- 企業(yè)開(kāi)發(fā)使用場(chǎng)景的解決方案
- udf管理:統(tǒng)一倉(cāng)庫(kù)管理還是自己提交,怎么解決相同含義的sql function被重復(fù)的udf提交
- thift server怎么用的,怎么用的,怎么解決多租戶,怎么解決權(quán)限,怎么解決負(fù)載均衡
- spark平臺(tái)和二次開(kāi)發(fā),源碼,遇到的問(wèn)題詳細(xì)問(wèn)
- 面試流程相關(guān)
- 10-20分鐘問(wèn)項(xiàng)目
- 20分鐘問(wèn)編程基礎(chǔ)
- 20分鐘問(wèn)組件
- spark問(wèn)20分鐘左右
spark暢談
- 小公司大部分業(yè)務(wù)場(chǎng)景是離線開(kāi)發(fā),實(shí)時(shí)場(chǎng)景也較少
- 大公司80%離線,20%實(shí)時(shí)
- sparkstreaming批處理比f(wàn)link批處理更快,性能差百分之五十左右,spark使用門檻較低
- 入職后可以想老員工討教經(jīng)驗(yàn),核心組件
- 博客快速瀏覽一些內(nèi)容
- 官網(wǎng)提供的一些例子
未來(lái)技術(shù)趨勢(shì)
- 萬(wàn)字詳解數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)湖、數(shù)據(jù)中臺(tái)和湖倉(cāng)一體
- 一文讀懂大數(shù)據(jù)實(shí)時(shí)計(jì)算
- 20000字詳解大廠實(shí)時(shí)數(shù)倉(cāng)建設(shè)
附錄
面試資料總結(jié)
大廠面試總結(jié)
- 字節(jié)跳動(dòng)大數(shù)據(jù)開(kāi)發(fā)面試題-附答案
- 美團(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>