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

有关SQL

共 1325字,需浏览 3分钟

 ·

2020-09-20 11:46

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




--完--





往期精彩:


本号精华合集(二)

如何写好 5000 行的 SQL 代码

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

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

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








浏览 55
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报