作为面试官,我最喜欢考的两类题
点击蓝色“有关SQL”关注我哟
加个“星标”,天天与10000人一起快乐成长
在池大(池建强)的知识星球看到有趣的提问,男孩子怎么才能成功追到女孩。池大说,要有光。
嗯, 富如思聪少爷,美如吴亦凡,林更新,够不够有光?
缺少这些天生天养的光环,我们普通人怎么办?那就当然是得练习套路。这里我分享我的黄氏两板斧,祝你成功:一潜伏,二交心。
潜伏不是指任劳任怨,去做备胎做的事情,而是深挖妹子的爱好,品味,三观。开口就表白,那仗提前就结束了。
有了潜伏深挖,还得加上交心。光有基本面,没有策略,肯定落败。妹子喜欢二次元和游戏,你跟她谈功课,那妹子心里肯定给你一个“假正经”的标签;但妹子如果是学霸,你偏开口闭口谈游戏和八卦,那人家妹子不说你“不正经”,说什么!
所以,追求女孩子,一定得培养自己的系统性思考习惯。这大概就是知人知面知心的策略。
我不是情感博主,就此打住,不延伸。回到正题上来,作为数据库的面试官,在面试资深候选人的时候,经常会出一些类似“追女孩”的题目,这类题考查的便是系统性思维。
第一题:有两张表,各有 1 个亿的数据。要把这两张表的数据,合并在一张表里,该怎么设计程序?
注:这是当年阿里巴巴的一道 SQL 面试题
这样的题,不要问有没有标准答案,问,就是没有。
回答好这样的题,至少需要从这些方面入手:表结构,索引结构,Join 算法,并发控制,事务管理,日志管理。
这样的组合有太多,只理解一种或两种数据库主题,还不能完美地解决好这样的题。比如,以为控制好表分区,就可以加快运行,但没有事务管理和日志管理的概念,容易抛出空间磁盘不足的异常;以为建好索引,万事无忧,如果不考虑并发,一样能把系统给搞死。
高效运行查询,制约的因素很多,每样都考虑到,在各因素间做好平衡,这便是 SQL 开发的魅力所在。
仅这一题,就能看出候选人,是不是足够资深,涉猎面是否足够。
第二题:有一个查询,包括了十几张表的 Join. 怎么做调优?
这样的题,其实在 OLAP 的应用中很常见。非常具有实战意义。
考察的知识面也非常广,比如命中率(Selectivity), 统计柱状图,条件判断下推,Join 算法,索引优化等等。只知道其中一两种主题知识,肯定两眼摸黑,断然不能解决问题。
比如你知道加索引能提高效率,于是加一堆索引,除了拖慢更新数据的速度,索引可能并不起作用;比如你从我公众号《有关SQL》了解过 Hash Join, 于是你也用上了,发现特么更慢了。
像这样的系统性题目,非常考验候选人的功底。有没有料,追着其中一个点问,就清清楚楚。惭愧,有时候我的系统思考也会出错,不是缺这,就是缺那。写下来,就是和大家一起共勉!
往期精彩: