大數據面經 字節跳動

manor的大數據奮鬥之路 2021-08-15 21:37:03 阅读数:28

本文一共[544]字,预计阅读时长:1分钟~

人家的面經

作者:楊超越救救孩子啊
鏈接:https://www.nowcoder.com/discuss/170799
來源:牛客網

早上九點的面試,投的南京的崗比特
一面:
一面面試官人很nice,遇到不會的也會安慰我說沒關系,
上來先自我介紹,
說下項目,
說說對hadoop的理解,都有哪些組件,分別是幹什麼的
還了解大數據其他組件嘛?這裏我說了下kafka,然後巴拉巴拉,,,
kafka在什麼地方需要用到zookeeper
了解HBase嗎?
說下spark中的transform和action
為什麼spark要把操作分為transform和action
spark中有了RDD,為什麼還要有Dataframe和DataSet?
了解函數式編程嗎?說下c/c++和scala這種函數式編程語言的區別
Java中抽象類和接口的區別
都有抽象類了為什麼還要有接口
了解GC嗎?說說
然後寫一道編程題,給個字符串,只有(){}[],看看是否是匹配的,
用個棧直接解决了,問下優化,如果遇到右括號,在查看棧頂元素的時候如果不匹配直接返回false
還有什麼要問我的嗎?
還聊了下他們的團隊工作內容,主要對Spark的源碼進行修改,還有其他等等
大概是這些內容了。
二面:
二面面試官很嚴肅的感覺,不像一面面試官那樣,比較輕松
上來就聊下項目
項目中kafka怎麼使用的
了不了解nginx
給一個日志文件,有用戶ID,時間戳,url,用mapreduce如何給出每天每個站點的訪問任務
在這個過程可能會出現什麼問題?我這裏答了會出現數據傾斜,然後問如何解决
數據庫都有哪些引擎
數據庫的鎖了解哪些,說說
應用層協議有哪些
什麼場景用TCP,什麼場景用UDP
HTTP狀態碼都有哪些,具體說一下
HTTP長連接和短連接
url和uri的區別
還問了http請求頭的一些字段內容
還是上面那個日志,不過現在所有的數據是在數據庫中,寫條sql語句查詢近一個月每天每個站點的訪問人數。
有什麼要問我的嗎
二面很多沒答上來,感覺凉了,沒想到給我過了,,我現在還在懷疑人家是不是搞錯了。。
三面:
三面面試官人也挺好,聽聲音是個大叔啊哈
首先還是自我介紹
說下項目
平時開發環境是windos還是linux
開發使用什麼語言比較多
線程和進程的區別
hashmap的實現
hashmap的loadfactory是幹嘛的
hashmap的擴容
為什麼每次擴容都是翻倍,增加1.5倍不行嗎
擴容的時候為啥不多擴一點,比如4倍
來了道算法題,兩個三十六進制字符串的相加
一條直線可以把一個平面分成2個平面,兩條直線最多分成4個,問n條直線最多分成幾個面
有什麼要問我的嗎

試著答了一下

1.說說對hadoop的理解,都有哪些組件,分別是幹什麼的

Hadoop是大數據的組件,由HDFS,MapReduce和Yarn組成,HDFS主要負責數據的存儲,MapReduce是作為計算引擎,負責計算,Yarn負責資源調度

2.還了解大數據其他組件嘛?這裏我說了下kafka,然後巴拉巴拉,,,

Kafka是一個基於訂閱發布模式的高性能、高吞吐的實時消息隊列系統,用於實時架構中,實現將實時數據采集的數據進行實時存儲,供於SparkStreaming或者Flink等工具實現實時數據消費處理

3.kafka在什麼地方需要用到zookeeper

三種情况:
需要用到存儲元數據和交換集群信息
解决分布式一致性問題
需要要消費者知道現在那些生產者(對於消費者而言,kafka就是生產者)是可用的。

4.了解HBase嗎?

Hbase是一個基於分布式內存和HDFS的按列存儲的NoSQL數據庫,適合於需要實時的對大量數據進行快速、隨機讀寫訪問的場景

5.說下spark中的transform和action

1,transformation是得到一個新的RDD,方式很多,比如從數據源生成一個新的RDD,從RDD生成一個新的RDD

2,action是得到一個值,或者一個結果(直接將RDD cache到內存中)

6.為什麼spark要把操作分為transform和action

因為所有的transformation都是采用的懶策略,就是如果只是將transformation提交是不會執行計算的,計算只有在action被提交的時候才被觸發。這樣有利於减少內存消耗,提高了執行效率

7.spark中有了RDD,為什麼還要有Dataframe和DataSet?

RDD叫做彈性分布式數據集
與RDD類似,DataFrame是一個分布式數據容器,但是DataFrame不是類型安全的。
DataSet是DataFrame API的一個擴展,是Spark最新的數據抽象,結合了RDD和DataFrame的優點

8.了解函數式編程嗎?說下c/c++和scala這種函數式編程語言的區別

scala便是函數式編程的一種,函數式編程語法比起面向對象語言更加簡潔優化,

9.Java中抽象類和接口的區別

1.接口只能包含抽象方法,抽象類可以包含普通方法。
2.接口只能定義靜態常量屬性,抽象類既可以定義普通屬性,也可以定義靜態常量屬性。
3.接口不包含構造方法,抽象類裏可以包含構造方法。

10.都有抽象類了為什麼還要有接口

抽象類與接口緊密相關。然接口又比抽象類更抽象,這主要體現在它們的差別上:類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現接口,從而得出接口是用來解决多重繼承問題的。

11.了解GC嗎?說說

GC:垃圾回收,使用 GC 可以進行垃圾空間釋放操作。
GC 是垃圾收集的意思,內存處理是編程人員容易出現問題的地方,忘 記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java 提供的 GC 功能可以自動 監測對象是否超過作用域從而達到自動回收內存的目的。

然後寫一道編程題,給個字符串,只有(){}[],看看是否是匹配的,
用個棧直接解决了,問下優化,如果遇到右括號,在查看棧頂元素的時候如果不匹配直接返回false
還有什麼要問我的嗎?

版权声明:本文为[manor的大數據奮鬥之路]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815213646799A.html