兩分鐘搞定阿里SQL面試題:億級表合併

資料和雲發表於2019-12-18


阿里面試


2010 年,阿里正當紅。


那年 BAT 的名氣還沒有現今那麼響亮。 就業的時候,很多畢業生還是會選擇 HP, IBM, EMC, SONY, ORACLE,Microsoft 等一類的外企。 這些外企在畢業生眼中代表的是名牌,權威,以及自由,沒錯,自由很重要,Nice 的環境,和諧的團隊,沒有 996 的生存壓力。


但,差距就是在不經意間發生的。


隨著阿里 DBA 團隊轟轟烈烈的多場技術分享演講,越來越多的阿里人在部落格上、論壇裡釋出了自己對技術的理解。 尤其是 Oracle 技術的應用,itpub 的崛起,簡直把 Oracle 推向了神壇。 特別是 Fenng 這支筆桿子,既是 Oracle 高手,還帶有特別出色的影響力,讓每個玩資料庫的人都對 Oracle 產生了特別的好感,為人不知 Oracle, 縱稱 DBA 也枉然。


當帝國大廈建成,也自然成就了一批匠人。


現在來看,後期的業務幾近於維護期,再去阿里搞 Oracle, 時間風口已經不再了。 所以 BAT 未來幾年不再是技術人成長的好地方了,反而那些小立山頭的初創公司,可能還有至少讓你技術騰飛的空間。


當然,如果你是搞 AI, BAT 依然是首選。


2010 年我也帶著一絲敬仰,畢竟玩了 Oracle 也 2 年了,準備去阿里試試。 阿里招新也是挺大場面的。 虹橋展覽館都包了整整 3 層,迎賓就用了 1 層。 筆試很快就透過了,基礎題還是選擇題,只要認真看過 Oracle Concepts 都應該問題不大。 一面 HR,問一些個人意願和對技術的看法,不太張狂的技術人,不會卡在這一關。 終面是個老技術,問得特別細。


印象中,時間過得很慢,大概整個面試過程有 1 個半小時。 面試給的礦泉水都喝得差不多了才停。


拒人千里之外的那道 SQL 題


所有的面試我想都會有兩部分。


第一部分是對理論知識的考察,比如表空間,分割槽,統計資訊,日誌處理,備份與恢復,RAC, OGG 等等。 這些基礎知識,在 Oracle Concepts, Tom 的 《Oracle 體系架構》《Oracle 程式設計藝術》中都會有涉及,即使只看過其中某幾章,吹吹水還是能過得去。 就像《雪山飛狐》中偷練了胡家刀法的那個遊醫,不也稱霸一方了嘛。


第二部分實戰題就真的是考察功底了。 我記得最清楚的是這麼道題,直到現在我作為面試官來面試候選人,也會用這道題,因為只此一題就能考察候選人對 DB 的理解,不至於一個 Update/Insert 就把 DB 搞掛!


題目是這樣的:


有一張以 ID 為主關鍵字的聚集表,表資料量是 2 億。 要將另一張同樣結構的表,表資料量是 6000 萬,合併到第一張表裡。


請你設計一個更新的過程。 第一張表可能含有 第二張表的部分資料,也可能沒有。 沒有的要加入,匹配的要更新。


不出大家所料,當時我的回答跟絕大部分我遇到的面試者一樣,insert/update/merge 就完了唄。 結果統統都是被否定的。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2669300/,如需轉載,請註明出處,否則將追究法律責任。

相關文章