攜程 大數(shù)據(jù)底層框架開發(fā) 面經(jīng)回顧
去年秋招拿了攜程-大數(shù)據(jù)底層框架開發(fā)崗位的offer,想著還是把面試回顧下吧,給后面的朋友一個參考。
這個崗位是做大數(shù)據(jù)組件底層二次開發(fā)的,我面試的是偏向離線方面,因此面試都是圍繞hadoop、spark、hbase、hive這幾個組件的底層原理去問,因為是偏向底層,所以也會注重java語言和多線程并發(fā)的知識。
- HDFS的寫入流程?如果一臺機器宕機,HDFS怎么保證數(shù)據(jù)的一致性?如果只存活一臺機器又會發(fā)生什么情況?
- NameNode HA的實現(xiàn)原理?如何避免NameNode腦裂的情況?
- 如果數(shù)據(jù)量比較大,如何解決NameNode 的內(nèi)存瓶頸?
- MapReduce Shuffle中Reduce是怎么獲得Map輸出的分區(qū)文件,Map主動推還是Reduce主動拉?
- Kafka如何實現(xiàn)順序消費?
- Spark Streaming消費Kafka的兩種方式比較。如何提高Spark Streaming消費Kafka的并行度?
- 如何保證Spark Streaming的精準一次性消費?
- 項目中Spark Streaming消費Kakfa的offset保存在哪里?為什么不采用checkpoint保存offset,有什么缺點?
- 對Spark RDD的理解。
- Spark作業(yè)運行流程?(從standalone和yarn兩種模式進行闡述)
- 項目中Spark采用的那種模式搭建的?為什么采用standalone而不采用yarn模式?
- 為什么Spark Shuffle比MapReduce Shuffle快(至少說出4個理由)?
- Spark3新特性
- Java中保證線程安全的方法有哪些?
- 一個volatile修飾的變量,如果兩個線程同時去寫這個變量,線程安全嗎?如果不安全該怎么使他變得安全?
- Linux中怎么查看一個進程打開了哪些文件?
- 算法題:二叉樹非遞歸中序遍歷
這是三輪技術(shù)面里面能回憶起來的了,先暫時寫這些吧