回忆当年阿里的一道 SQL 面试题,亿级表合并
The following article is from 有关SQL Author Lenis
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 个半小时。面试给的矿泉水都喝得差不多了才停。
所有的面试我想都会有两部分。
第一部分是对理论知识的考察,比如表空间,分区,统计信息,日志处理,备份与恢复,RAC, OGG 等等。这些基础知识,在 Oracle Concepts, Tom 的 《Oracle 体系架构》《Oracle 编程艺术》中都会有涉及,即使只看过其中某几章,吹吹水还是能过得去。就像《雪山飞狐》中偷练了胡家刀法的那个游医,不也称霸一方了嘛。
第二部分实战题就真的是考察功底了。我记得最清楚的是这么道题,直到现在我作为面试官来面试候选人,也会用这道题,因为只此一题就能考察候选人对 DB 的理解,不至于一个 Update/Insert 就把 DB 搞挂!
题目是这样的:
有一张以 ID 为主关键字的聚集表,表数据量是 2 亿。要将另一张同样结构的表,表数据量是 6000 万,合并到第一张表里。
请你设计一个更新的过程。第一张表可能含有 第二张表的部分数据,也可能没有。没有的要加入,匹配的要更新。
不出大家所料,当时我的回答跟绝大部分我遇到的面试者一样,insert/update/merge 就完了呗。结果统统都是被否定的。
如果你有想法,文末留言区恭候大驾!
01. 公众号(ID:Myaiy24_DT)后台回复「06」获取「数据仓库工具箱, 3rd Edition」、「阿里巴巴大数据之路」、「数据治理」等经典大数据和数据仓库著作电子书籍或视频赠送。
02. 如要获取《大牛带你从0到1建设数据仓库》实战高清PPT,请关注公众号,添加小助手微信[ ID:iom1128 昵称:紫霞仙子],备注:PPT。
03. 投入组织大怀抱,请添加小助手,拉您入群「数据仓库群」,「爬虫萌新群」、「资料分享群」,备注:入群。
!据说喜欢分享的,后来都成了大神 !
☟点击文末“阅读原文”,查看更多学习资源