開頭
大家好,我是程式員Manor,我希望自己能成為國家復興道路的鋪路人,大資料領域的耕耘者,平凡但不甘于平庸的人,
事情是這樣的:

期末考后,我在實習僧試著投了投位元組的實習崗,沒想到收到了校招的面試邀請

實際上演算法這塊我還是個菜狗
沒辦法機會難得,不知道下次能不能這么走運
只能硬著頭皮上了……

以下是我做的一些面試準備:
開場白
面試官你好,我是面試咱們公司大資料開發崗位的xxx,就讀于上海大學的資料科學與大資料專業,2022年畢業,在校期間做過2個大型數倉專案,其中教育數倉專案通過大資料處理分析技術,為企業發展提供切實可行的中觀指導意見,除了學習之外,我也喜歡寫寫博客,復盤所學的知識,輸出自己的成長經歷,十分感謝貴公司提供的這次面試機會,期望有幸能夠加入貴公司,成為大家的作業伙伴,
教育數倉專案介紹
專案背景:受互聯網+概念,疫情影響,在線教育,K12教育等發展火熱,越來越多的平臺機構涌現,但是由于資訊的共享利用不充分,導致企業多年積累了大量資料,而因為資訊孤島的問題,一直沒有對這些資料進一步挖掘分析,因此也不能給企業的管理決策層提供有效的資料支撐,
專案價值:我們做的這個教育大資料分析平臺專案,將大資料技術應用于教育行業,用擅長分析的OLAP系統為企業經營提供資料支撐,
實作思路:建立企業的資料倉庫,把分散的業務資料預處理,其次根據業務需求從海量的用戶行為資料挖掘分析,定制出多維的資料集合,形成資料集市,供各個場景主題使用,最后用BI工具,進行前端展示,
技術架構:mysql,sqoop,基于CM的Hive,Oozie和FineBi,由于OLTP系統中資料大多存盤在mysql,所以我們最終選擇Sqoop作為匯入匯出工具,抽取資料到數倉,并使用基于CM管理的Hive進行資料清洗+分析,然后sqoop匯出到mysql,最后用FineBI展示OLAP的資料分析結果,
三大痛點:一是資料量太大問題,傳統資料庫無法滿足;二是系統多,資料分散問題,無法解決資料孤島問題;三是,統計作業量太大,分析難度高問題,無法及時為企業提供資料參考,
物流數倉專案介紹
專案背景:本專案基于一家大型物流公司研發的智慧物流大資料平臺,該物流公司是國內綜合性快遞、物流服務商,并在全國各地都有覆寫的網點,
業務規模:經過多年的積累、經營以及布局,擁有大規模的客戶群,日訂單達 上千萬,如此規模的業務資料量,傳統的資料處理技術已經不能滿足企業的經營分析需求,
專案價值:公司需要基于大資料技術構建資料中心,從而挖掘出隱藏在資料背后的資訊價值,為企業提供有益的幫助,帶來更大的利潤和商機,
專案細節:
物流環節:大資料專案主要圍繞訂單、運輸、倉儲、搬運裝卸、包裝以及流通加工等物流環節中 涉及的資料、資訊等,
指導方向:通過大資料分析可以提高運輸以及配送效率、減少物流成本、更有效地滿足客戶 服務要求,實作快速、高效、經濟的物流,并針對資料分析結果,提出具有中觀指導意義的解決方案,
應用案例:針對物流行業的特性,大資料應用主要體現在車貨匹配、運輸路線優化、庫存預測、設備修理預測、供應鏈協同管理等方面,
人家的面經
作者:楊超越救救孩子啊
鏈接: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
還有什么要問我的嗎?
結尾
我的想法是約到面試,才能從實戰中提升自己,
這次約上位元組的面試是我沒想到的,
時間有些倉促,很多東西沒準備好,估計一面就得掛了

也僅作為一次正式面試前的練習,
熟悉熟悉面試流程,同時鍛煉鍛煉自己,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290214.html
標籤:其他
