作为面试官,我最喜欢考的两类题

点击蓝色“有关SQL”关注我哟

加个“星标”,天天与10000人一起快乐成长

作为面试官,我最喜欢考的两类题

在池大(池建强)的知识星球看到有趣的提问,男孩子怎么才能成功追到女孩。池大说,要有光。

嗯, 富如思聪少爷,美如吴亦凡,林更新,够不够有光?

缺少这些天生天养的光环,我们普通人怎么办?那就当然是得练习套路。这里我分享我的黄氏两板斧,祝你成功:一潜伏,二交心。

潜伏不是指任劳任怨,去做备胎做的事情,而是深挖妹子的爱好,品味,三观。开口就表白,那仗提前就结束了。

有了潜伏深挖,还得加上交心。光有基本面,没有策略,肯定落败。妹子喜欢二次元和游戏,你跟她谈功课,那妹子心里肯定给你一个“假正经”的标签;但妹子如果是学霸,你偏开口闭口谈游戏和八卦,那人家妹子不说你“不正经”,说什么!

所以,追求女孩子,一定得培养自己的系统性思考习惯。这大概就是知人知面知心的策略。

我不是情感博主,就此打住,不延伸。回到正题上来,作为数据库的面试官,在面试资深候选人的时候,经常会出一些类似“追女孩”的题目,这类题考查的便是系统性思维。

第一题:有两张表,各有 1 个亿的数据。要把这两张表的数据,合并在一张表里,该怎么设计程序?

注:这是当年阿里巴巴的一道 SQL 面试题

这样的题,不要问有没有标准答案,问,就是没有。

回答好这样的题,至少需要从这些方面入手:表结构,索引结构,Join 算法,并发控制,事务管理,日志管理。

这样的组合有太多,只理解一种或两种数据库主题,还不能完美地解决好这样的题。比如,以为控制好表分区,就可以加快运行,但没有事务管理和日志管理的概念,容易抛出空间磁盘不足的异常;以为建好索引,万事无忧,如果不考虑并发,一样能把系统给搞死。

高效运行查询,制约的因素很多,每样都考虑到,在各因素间做好平衡,这便是 SQL 开发的魅力所在。

仅这一题,就能看出候选人,是不是足够资深,涉猎面是否足够。

第二题:有一个查询,包括了十几张表的 Join. 怎么做调优?

这样的题,其实在 OLAP 的应用中很常见。非常具有实战意义。

考察的知识面也非常广,比如命中率(Selectivity), 统计柱状图,条件判断下推,Join 算法,索引优化等等。只知道其中一两种主题知识,肯定两眼摸黑,断然不能解决问题。

比如你知道加索引能提高效率,于是加一堆索引,除了拖慢更新数据的速度,索引可能并不起作用;比如你从我公众号《有关SQL》了解过 Hash Join, 于是你也用上了,发现特么更慢了。

像这样的系统性题目,非常考验候选人的功底。有没有料,追着其中一个点问,就清清楚楚。惭愧,有时候我的系统思考也会出错,不是缺这,就是缺那。写下来,就是和大家一起共勉!

--完--

往期精彩:

本号精华合集(二)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单

作为面试官,我最喜欢考的两类题