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