? ? ? 畢業后做了7年java應用開發,主要在一家傳統軟件公司做BI相關的東西。因為主要是寫業務代碼,大公司都有自己的技術平臺,所以java技術也并不很強,多線程都很少自己寫。最近三年到了互聯網公司,轉到做數倉相關的項目,其實主要是用hive sql在做數據處理,就是被鄙視的sql boy。由于進的并不是正經的數倉部門,而是在數倉基礎上做數據應用系統的部門,所以還是偏業務,且對數倉理解不是很深入。所以本人技術水平很渣。面試了很多,面不過。把遇到的問題記錄下來,希望可以和大家一起探討,也是一種提高吧。如果大家能夠回答這些問題,希望可以回復。
說一說你整個項目從數據采集到指標、報表的這整個過程是怎么做的吧。
這個問題還是挺能反映應聘者能力的,因為數倉是比較雜的一個工種,在不同的公司或者不同的項目,側重點不一樣。比如小公司基本上從ETL開始就要親力親為了,對于建模理論要求沒那么迫切。大公司可能etl基于平臺,開發量變少,但是對建模、數據治理要求可能更高。還有的公司更偏重數據分析的思路,或者說分析業務的思路,而不是單純搞搞工程。開放問題,回答的時候就是把自己的項目說清楚。如果不知道怎么說清楚,那么推薦一個技巧:把各個階段的產出物交代清楚,比如了解業務階段輸出什么、建模階段輸出什么,等等。我太渣了,沒真正從0做過數倉,項目經驗不足,哪里能找到標準一點的答案呢?從《阿里巴巴大數據之路》里面能找到嗎?
事實表有哪幾種類型?
本渣之前看過《數據倉庫工具箱---維度建模指南》,但一時想不起來了,仔細想還是想不起來。確定看過,確定想不起。
緩慢變化維你們是怎么處理的?
使用拉鏈表
拉鏈表是怎么實現的?
這個在網上一搜可以搜到實例,但是如果結合業務再問的話,這是一個可以問的挺深的問題。數倉就是這樣一個跟業務強結合的東西,離開業務抽象出來的東西反而沒有靈魂,解決具體業務問題的方法才是價值。
數據總線矩陣是怎么理解的,為什么要做這個?
感覺可以從數據整合、數據打通等角度回答吧,回答不好。
你們的數倉是怎么樣的架構?
技術架構我基本不會,所以也沒什么可以說的。只會一個數倉分層:ods、dwd、dwb、ads(app)。細問的話會有很多衍生問題:
ods你們是怎么實現的?
dwd這一層做了什么?
維度建模用在哪一層上?
維度建模有什么優缺點?
更好的應對業務變化,數據冗余多,占空間多,就是用空間換時間。這個問題其實還蠻難的,分析優缺點,就要有對比,跟別的建模方式對比,只有對其他的建模方式有理解才可能回答出來。
做數據倉庫如何解決不同業務部門的統計口徑不一致的問題?
我們公司業務變化特別快,有時候半年業務主流程就會大變,這種情況下,你怎么應對?
如何評價一個數據倉庫的好壞?
數據準確性、時效性、健壯性。面試官說這些都是一些原則,比較虛,有沒有可衡量的指標?就是一個數據倉庫建好了,用這些指標評價它好不好,有不好的要指出來,指導它改進。這個我真不知道。
mapreduce原理清楚嗎?講一講,畫一畫那個經典的流程圖吧。
從hive sql提交到生成mapreduce任務,再執行,這個過程是怎么樣的?資源調度是怎樣的?
hive優化接觸過嗎?做過哪些?
hive的數據傾斜一般怎么處理?
spark用過嗎?
spark現在用的是真多。。。
你們的數倉建設過程中是如何保障數據正確性的?
讓你建設一個數倉的話,你的關注點有哪些?
這個就開放問題了,能看出做數倉的思路,也能看出對數倉理解的情況。如果對面試官的路子就好。
你的項目中怎么應用維度建模?能具體說說嗎,具體的表有哪些?
RCFile解析過嗎?文件結構是怎么樣的?
udaf寫過嗎?udtf呢?怎么寫,分哪幾個步驟,怎么轉換成mr的?
hive中transform用過嗎?