1. 程式人生 > 實用技巧 >熱乎的校招面經試題解析——百度篇

熱乎的校招面經試題解析——百度篇

1、sql

這種校招裡考察sql指令碼最難的一個級別的題目了。sql的題解答只能從題意出發,可以得到以下幾點:

1 最終一個日期只能出現一次,需要用group by `day`
2 日期需要正序排序,而且正好是group by項,可以直接用order by `day`
3 最終只出現單日最多的貨物,這個是難點

3.1 group by 之後同一屬性只出現一列,而且是所有資料的第一列。那能不能先對資料排好序,再執行group by ,即

select a.`day`, a.itemId, a.num from
(
   select `day`, itemId, num from goods order by num desc
) as a
group by `day  order by `day`

但是很悲劇的是,實操後發現group by還是對原資料進行的排序

3.2 那就對 day和num兩個屬性同時group by,這樣可以對num進行直接order排序,然後再結果進行一遍按day的排序,取資料的第一條,即

select a.`day`, a.itemId, a.num from
(
   select `day`, itemId, num from goods group by `day`,num  order by `day`, num desc
) as a
group by `day `

OK,可以實現,但是雙group,執行效率較差


3.3可以再考慮到left join的方法

2、b+樹和二叉樹的區別

二叉樹的每個結點至多有2個結點或者只有1個左結點

B樹 1。根結點至少有2個結點,2。除根結點和失敗結點外的所有結點至少有m/2上取整個子結點,3。所有的失敗結點均處在同一層上。左結點小於右結點。

B+樹是B-樹的變形,B+樹的所有關鍵字都出現在葉結點上,上面各層結點中的關鍵碼均是下一層相應結點中最大關鍵碼的複寫。


3、事務的隔離級別+解釋


事務隔離級別

髒讀

不可重複讀

幻讀

讀未提交(read-uncommitted)

不可重複讀(read-committed)

可重複讀(repeatable-read)

序列化(serializable)


4、說思路

描述:給你10只實驗小鼠,用7天的時間檢驗999個瓶子中帶有一瓶毒藥的瓶子是哪一瓶,小鼠喝了毒藥7天后才會死亡,如何實現?

這是一道很典型的推理題。題中7天是個幌子,因為間隔也是7天,所以不用考慮。最主要的部分就是10只小鼠,如果判斷出999個瓶子。沒有別的方法,只能排列組合。就想到二進位制,2的10次方能標記1024種狀態,完全滿足999的數字要求。

做法是將10只老鼠按二進位制的位置排好,然後瓶子也按兩進位制標記,比如第4瓶是100,那麼給位置是1的老鼠喝這瓶藥,最後死亡的老鼠,按位置1的順序排列就是毒藥的編號。

當然,目前的疫情檢驗也參考了這種方案。


5、HTTPS的連線過程

在使用HTTPS是需要保證服務端配置正確了對應的安全證書

客戶端傳送請求到服務端

服務端返回公鑰和證書到客戶端

客戶端接收後會驗證證書的安全性,如果通過則會隨機生成一個隨機數,用公鑰對其加密,傳送到服務端

服務端接受到這個加密後的隨機數後會用私鑰對其解密得到真正的隨機數,隨後用這個隨機數當做私鑰對需要傳送的資料進行對稱加密

客戶端在接收到加密後的資料使用私鑰(即生成的隨機值)對資料進行解密並且解析資料呈現結果給客戶

SSL加密建立

已經看到這裡了
接著往下看有福利哦!

為了讓大家順利斬獲21屆秋招Offer
我們針對專案不足的小夥伴超車設計專案小拿為你準備了專屬線上實習
限時福利只要0 元(會員專享)還有專案獎勵金200元哦!如果看到這裡已經心癢難耐趕緊點選下方連結上車吧
跑個腿專案於9月1正式開啟
https://naoffer.com/intern/program/14