作為面試官,我最喜歡考的兩類題
點擊藍色“有關(guān)SQL”關(guān)注我喲
加個“星標(biāo)”,天天與10000人一起快樂成長

在池大(池建強)的知識星球看到有趣的提問,男孩子怎么才能成功追到女孩。池大說,要有光。
嗯, 富如思聰少爺,美如吳亦凡,林更新,夠不夠有光?
缺少這些天生天養(yǎng)的光環(huán),我們普通人怎么辦?那就當(dāng)然是得練習(xí)套路。這里我分享我的黃氏兩板斧,祝你成功:一潛伏,二交心。
潛伏不是指任勞任怨,去做備胎做的事情,而是深挖妹子的愛好,品味,三觀。開口就表白,那仗提前就結(jié)束了。
有了潛伏深挖,還得加上交心。光有基本面,沒有策略,肯定落敗。妹子喜歡二次元和游戲,你跟她談功課,那妹子心里肯定給你一個“假正經(jīng)”的標(biāo)簽;但妹子如果是學(xué)霸,你偏開口閉口談游戲和八卦,那人家妹子不說你“不正經(jīng)”,說什么!
所以,追求女孩子,一定得培養(yǎng)自己的系統(tǒng)性思考習(xí)慣。這大概就是知人知面知心的策略。
我不是情感博主,就此打住,不延伸?;氐秸}上來,作為數(shù)據(jù)庫的面試官,在面試資深候選人的時候,經(jīng)常會出一些類似“追女孩”的題目,這類題考查的便是系統(tǒng)性思維。
第一題:有兩張表,各有 1 個億的數(shù)據(jù)。要把這兩張表的數(shù)據(jù),合并在一張表里,該怎么設(shè)計程序?
注:這是當(dāng)年阿里巴巴的一道 SQL 面試題
這樣的題,不要問有沒有標(biāo)準答案,問,就是沒有。
回答好這樣的題,至少需要從這些方面入手:表結(jié)構(gòu),索引結(jié)構(gòu),Join 算法,并發(fā)控制,事務(wù)管理,日志管理。
這樣的組合有太多,只理解一種或兩種數(shù)據(jù)庫主題,還不能完美地解決好這樣的題。比如,以為控制好表分區(qū),就可以加快運行,但沒有事務(wù)管理和日志管理的概念,容易拋出空間磁盤不足的異常;以為建好索引,萬事無憂,如果不考慮并發(fā),一樣能把系統(tǒng)給搞死。
高效運行查詢,制約的因素很多,每樣都考慮到,在各因素間做好平衡,這便是 SQL 開發(fā)的魅力所在。
僅這一題,就能看出候選人,是不是足夠資深,涉獵面是否足夠。
第二題:有一個查詢,包括了十幾張表的 Join. 怎么做調(diào)優(yōu)?
這樣的題,其實在 OLAP 的應(yīng)用中很常見。非常具有實戰(zhàn)意義。
考察的知識面也非常廣,比如命中率(Selectivity), 統(tǒng)計柱狀圖,條件判斷下推,Join 算法,索引優(yōu)化等等。只知道其中一兩種主題知識,肯定兩眼摸黑,斷然不能解決問題。
比如你知道加索引能提高效率,于是加一堆索引,除了拖慢更新數(shù)據(jù)的速度,索引可能并不起作用;比如你從我公眾號《有關(guān)SQL》了解過 Hash Join, 于是你也用上了,發(fā)現(xiàn)特么更慢了。
像這樣的系統(tǒng)性題目,非常考驗候選人的功底。有沒有料,追著其中一個點問,就清清楚楚。慚愧,有時候我的系統(tǒng)思考也會出錯,不是缺這,就是缺那。寫下來,就是和大家一起共勉!
往期精彩:
