前言
隨着 5G 時代的到來,大數據人工智能產業鏈又一次迎來了井噴式的爆發,隨着崗位需求的不斷增加,越來越多的人選擇大數據課程,但是沒有真正從事大數據工作的人面對企業面試有種無從下手的感覺,面對面試說不到技術的重點,每次面試只能靠隊友,靠兄弟支援,尤其是面對架構,編程更是無從下手。於是我決定對市場上大多的有關大數據核心的面試題做一個詳細的分析,也希望大家盡可能的做到舉一反三,而不是局限於題目本身。
小編分享的這份Java后端開發面試總結包含了JavaOOP、Java集合容器、Java異常、並發編程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL數據庫、消息中間件MQ、Dubbo、Linux、ZooKeeper、 分布式&數據結構與算法等26個專題技術點,都是小編在各個大廠總結出來的面試真題,已經有很多粉絲靠這份PDF拿下眾多大廠的offer,今天在這里總結分享給到大家!【已完結】
完整版Java面試題地址:2021最新面試題合集集錦。
1、選擇題
1.1.下面哪個程序負責 HDFS 數據存儲。
- a)NameNode
- b)Jobtracker
- c)Datanode
- d)secondaryNameNode
- e)tasktracker
答案 C datanode
1.2.HDfS 中的 block 默認保存幾份?
- a)3 份
- b)2 份
- c)1 份
- d)不確定
答案 A 默認 3 份
1.3.下列哪個程序通常與 NameNode 在一個節點啟動?
- a)SecondaryNameNode
- b)DataNode
- c)TaskTracker
- d)Jobtracker
答案 D
1.4.HDFS 默認 Block Size
a)32MB
b)64MB
c)128MB
答案:B
1.5.下列哪項通常是集群的最主要瓶頸
- a)CPU
- b)網絡
- c)磁盤 IO
- d)內存
答案:C 磁盤
1.6.關於 SecondaryNameNode 哪項是正確的?
- a)它是 NameNode 的熱備
- b)它對內存沒有要求
- c)它的目的是幫助 NameNode 合並編輯日志,減少 NameNode 啟動時間
- d)SecondaryNameNode 應與 NameNode 部署到一個節點
答案 C。
1.7.下列哪項可以作為集群的管理?
- a)Puppet
- b)Pdsh
- c)Cloudera Manager
- d)Zookeeper
答案 ABD
1.8.Client 端上傳文件的時候下列哪項正確
- a)數據經過 NameNode 傳遞給 DataNode
- b)Client 端將文件切分為 Block,依次上傳
- c)Client 只上傳數據到一台 DataNode,然后由 NameNode 負責 Block 復制工作
答案 B
分析:Client 向 NameNode 發起文件寫入的請求。NameNode 根據文件大小和文件塊配置情況,返回給 Client 它所管理部分 DataNode 的信息。Client 將文件划分為多個 Block,根據 DataNode 的地址信息,按順序寫入到每一個 DataNode 塊中。具體查看 HDFS 體系結構簡介及優缺點。
1.9.下列哪個是 Hadoop 運行的模式
- a)單機版
- b)偽分布式
- c)分布式
答案 ABC 單機版,偽分布式只是學習用的。
2、面試題
2.1. Hadoop 的核心配置是什么?
Hadoop 的核心配置通過兩個 xml 文件來完成:1,hadoop-default.xml;2,hadoop-site.xml。這些文件都使用 xml 格式,因此每個 xml 中都有一些屬性,包括名稱和值,但是當下這些文件都已不復存在。
2.2.那當下又該如何配置?
Hadoop 現在擁有 3 個配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。這些文件都保存在 conf/子目錄下。
2.3.“jps”命令的用處?
這個命令可以檢查 Namenode、Datanode、Task Tracker、 Job Tracker 是否正常工作。
2.4.mapreduce 的原理?
2.5. HDFS 存儲的機制?
流程:
1、 client 鏈接 namenode 存數據
2、 namenode 記錄一條數據位置信息(元數據),告訴 client 存哪。
3、 client 用 hdfs 的 api 將數據塊(默認是 64M)存儲到 datanode 上。
4、 datanode 將數據水平備份。並且備份完將反饋 client。
5、 client 通知 namenode 存儲塊完畢。
6、 namenode 將元數據同步到內存中。
7、 另一塊循環上面的過程。
流程:
1、 client 鏈接 namenode,查看元數據,找到數據的存儲位置。
2、 client 通過 hdfs 的 api 並發讀取數據。
3、 關閉連接。
2.6.舉一個簡單的例子說明 mapreduce 是怎么來運行的 ?
wordcount 的例子
2.7.用 mapreduce 來實現下面需求?
現在有 10 個文件夾,每個文件夾都有 1000000 個 url.現在讓你找出 top1000000url。
解答:topk
(還可以用 treeMap, 到 1000000 了每來一個都加進去, 刪掉最小的)
2.8.hadoop 中 Combiner 的作用?
combiner 是 reduce 的實現,在 map 端運行計算任務,減少 map 端的輸出數據。
作用就是優化。
但是 combiner 的使用場景是 mapreduce 的 map 和 reduce 輸入輸出一樣。
2.9.簡述 hadoop 安裝
2.10. 請列出 hadoop 進程名
2.11. 解決下面的錯誤
2.12. 寫出下面的命令
2.13. 簡述 hadoop 的調度器
2.14. 列出你開發 mapreduce 的語言
2.15. 書寫程序
2.16. 不同語言的優缺點
2.17. hive 有哪些保存元數據的方式,個有什么特點。
2.18. combiner 和 partition 的作用
2.19. hive 內部表和外部表的區別
- 內部表:加載數據到 hive 所在的 hdfs 目錄,刪除時,元數據和數據文件都刪除
- 外部表:不加載數據到 hive 所在的 hdfs 目錄,刪除時,只刪除表結構
2.20. hbase 的 rowkey 怎么創建好?列族怎么創建比較 好?
- hbase 存儲時,數據按照 Row key 的字典序(byte order)排序存儲。設計 key 時,要充分排序
- 存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性)一個列族在數據底層是一個文件,所以將經常一起查詢的列放到一個列族中,列族盡量少, 減少文件的尋址時間。
2.21. 用 mapreduce 怎么處理數據傾斜問題?
2.22. hadoop 框架中怎么來優化
2.23. 我們開發 job 時,是否可以去掉 reduce 階段。
可以。設置 reduce 數為 0 即可
2.24. datanode 在什么情況下不會備份
datanode 在強制關閉或者非正常斷電不會備份
2.25. combiner 出現在那個過程
出現在 map 階段的 map 方法后。
2.26. hdfs 的體系結構
- hdfs 有 namenode、secondraynamenode、datanode 組成。
- 為 n+1 模式
- namenode 負責管理 datanode 和記錄元數據
- secondraynamenode 負責合並日志
- datanode 負責存儲數據
2.27. 3 個 datanode 中有一個 datanode 出現錯誤會怎樣?
這個 datanode 的數據會在其他的 datanode 上重新做備份。
2.28. 描述一下 hadoop 中,有哪些地方使用了緩存機制, 作用分別是什么?
在 mapreduce 提交 job 的獲取 id 之后,會將所有文件存儲到分布式緩存上,這樣文件可以被所有的 mapreduce 共享。
2.29. 如何確定 hadoop 集群的健康狀態
通過頁面監控,腳本監控。
2.30. 生產環境中為什么建議使用外部表?
1、因為外部表不會加載數據到 hive,減少數據傳輸、數據還能共享。
2、hive 不會修改數據,所以無需擔心數據的損壞
3、 刪除表時,只刪除表結構、不刪除數據。