回忆当年阿里的一道 SQL 面试题,亿级表合并

简介: 那年 BAT 的名气还没有现今那么响亮。就业的时候,很多毕业生还是会选择 HP, IBM, EMC, SONY, ORACLE,Microsoft 等一类的外企。这些外企在毕业生眼中代表的是名牌,权威,以及自由,没错,自由很重要,Nice 的环境,和谐的团队,没有 996 的生存压力。

以下文章来源于有关SQL ,作者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 个半小时。面试给的矿泉水都喝得差不多了才停。

拒人千里之外的那道 SQL 题

所有的面试我想都会有两部分。

第一部分是对理论知识的考察,比如表空间,分区,统计信息,日志处理,备份与恢复,RAC, OGG 等等。这些基础知识,在 Oracle Concepts, Tom 的 《Oracle 体系架构》《Oracle 编程艺术》中都会有涉及,即使只看过其中某几章,吹吹水还是能过得去。就像《雪山飞狐》中偷练了胡家刀法的那个游医,不也称霸一方了嘛。

第二部分实战题就真的是考察功底了。我记得最清楚的是这么道题,直到现在我作为面试官来面试候选人,也会用这道题,因为只此一题就能考察候选人对 DB 的理解,不至于一个 Update/Insert 就把 DB 搞挂!

题目是这样的:

有一张以 ID 为主关键字的聚集表,表数据量是 2 亿。要将另一张同样结构的表,表数据量是 6000 万,合并到第一张表里。

请你设计一个更新的过程。第一张表可能含有 第二张表的部分数据,也可能没有。没有的要加入,匹配的要更新。

不出大家所料,当时我的回答跟绝大部分我遇到的面试者一样,insert/update/merge 就完了呗。结果统统都是被否定的。

目录
相关文章
|
4月前
|
SQL 数据库
SQL面试50题------(初始化工作、建立表格)
这篇文章提供了SQL面试中可能会遇到的50道题目的建表和初始化数据的SQL脚本,包括学生、教师、课程和成绩表的创建及数据插入示例。
SQL面试50题------(初始化工作、建立表格)
|
2月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
4月前
|
SQL
sql面试50题------(1-10)
这篇文章提供了SQL面试中的前10个问题及其解决方案,包括查询特定条件下的学生信息、教师信息和课程成绩等。
sql面试50题------(1-10)
|
9天前
|
存储 NoSQL 架构师
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
36 4
|
1月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
27天前
|
存储 NoSQL 算法
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
|
1月前
|
SQL 关系型数据库 MySQL
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
|
2月前
|
消息中间件 存储 canal
阿里面试:canal+MQ,会有乱序的问题吗?
本文详细探讨了在阿里面试中常见的问题——“canal+MQ,会有乱序的问题吗?”以及如何保证RocketMQ消息有序。文章首先介绍了消息有序的基本概念,包括全局有序和局部有序,并分析了RocketMQ中实现消息有序的方法。接着,针对canal+MQ的场景,讨论了如何通过配置`canal.mq.partitionsNum`和`canal.mq.partitionHash`来保证数据同步的有序性。最后,提供了多个与MQ相关的面试题及解决方案,帮助读者更好地准备面试,提升技术水平。
阿里面试:canal+MQ,会有乱序的问题吗?
|
2月前
|
消息中间件 架构师 Java
阿里面试:秒杀的分布式事务, 是如何设计的?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试阿里、滴滴、极兔等一线互联网企业时,遇到了许多关于分布式事务的重要面试题。为了帮助大家更好地应对这些面试题,尼恩进行了系统化的梳理,详细介绍了Seata和RocketMQ事务消息的结合,以及如何实现强弱结合型事务。文章还提供了分布式事务的标准面试答案,并推荐了《尼恩Java面试宝典PDF》等资源,帮助大家在面试中脱颖而出。
|
2月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?