拼多多【學霸批】面經

zzcjojo發表於2019-01-19

直接上乾貨了

時間:2018-08-12
地點:浙大玉泉校區
投遞崗位:平臺研發工程師
應該是每個人都有三面(兩輪技術面,一輪HR),三面是平行的,順序不一。

一面:技術面
持續時間:80分鐘左右
面試官看起來比較好,開場自我介紹,面試官瞭解一些基本情況。
開始問專案,面試官挑了我一個本科做過的比賽,讓我說,主要是就是說原理,具體實現沒問(因為面試官不懂控制理論。。)
然後問了一個近期的專案,問了mycat,怎麼分庫分表,你們資料庫怎麼設計的,為什麼這麼設計,分表的依據,怎麼優化
我想了一會兒答的。
問了redis應用場景,資料型別,資料結構,淘汰機制。
問了資料庫索引,有哪些,有什麼用。
接下來開始問我學過哪些課(因為我是跨考的),然後問了常用資料結構有哪些,排序演算法,相應的複雜度,不是很難。
佇列和棧的區別,現實生活中的例子。
樹,n個節點的樹的高度(m叉,二叉)
圖的種類,應用場景
紅黑樹的應用場景(幸好沒多問,就問了場景),解決什麼問題。
重寫筆試題,具體題目是,給一個字串(長度4k),順時針列印成正方形,這個討論了有點久,然後問怎麼優化。

我開始給的方法:用二維陣列存好
例如abcdefghijkl(k = 3)
列印結果:
```
abcd
l  e
k  f
jihg
```
優化後的:
第一行和最後一行直接打,中間的,判斷頭和尾在字串中的位置即可。
比如,i從1開始,
第i行的開頭在字串str中的位置就是str.length() - i
第i行最後一個字元在str中的位置:k + i

計算機網路

瀏覽器位址列輸入www.baidu.com發生什麼,我說了dns,tcp,http 之類的,比較概況
面試官:dns具體流程,怎麼查詢
我大概從快取,再到巢狀查詢答的

作業系統

死鎖條件

Linux
怎麼看檔案行數,這個我真不懂,只知道tair。
字串匹配,grep,awk

HR面
沒錯,HR在第二面
沒啥好說的,自我介紹,興趣愛好,工作地點,加班情況什麼的。沒問技術,差不多20分鐘。

技術二面
面試官可能還沒30吧,看起來也還好說話。

自我介紹
挑一個專案講,讓我講原理,畫圖,解釋給他聽。
基礎演算法:最大子陣列,我本來想說dp法的,後來覺得太套路了,直接說了空間和時間複雜度最小的(從dp演化而來),
leetcode入門題。。程式碼如下,基本一致

    public int maxSubArray(int[] nums) {
        if(nums == null) return Integer.MIN_VALUE;
        int sum = 0;
        int left = 0;
        int res = Integer.MIN_VALUE;
        for(int i = 0; i < nums.length; i++){
            if(sum < 0){
                sum = nums[i];
                left = i;
            }
            else{
                sum += nums[i];
            }
            res = Math.max(res, sum);
        }
        return res;
    }

接著開始讓我重說一下筆試題的第三題(最多共同好友)
是這樣:有很多使用者,每個使用者都有好友,現在給定一個使用者,讓查和他共同好友最多的人(這個人和那個使用者不是同一個人)
比如:
id 好友
0 1 2 3
1 0
2 0 3
3 0 2 4
4 3
我說了我的方法(用集合,暴力)
面試官提示:如果使用者特別多,但是好友關係很少,怎麼辦。
我想了會。給出優化方案:只查詢給定使用者的好友的好友即可。

然後開始問GC,直接讓我說,我說了幾種方法
面試官問了哪些物件可以做GCroot,我說了幾個,沒說全。。

之後就是HR讓回去等通知了(涼了?)
貌似每個人都是三面。

相關文章