面完螞蟻後,早就聽聞拼多多這個獨角獸,決定也去面一把。首先我在脈脈找了一個拼多多的HR,加了微信聊了下,發了簡歷便開始我的拼多多面試之旅。這裡要非常感謝拼多多HR小姐姐,從面試內推到offer確認一直都在幫我,人真的很nice。 ...
面試前
面完螞蟻後,早就聽聞拼多多這個獨角獸,決定也去面一把。首先我在脈脈找了一個拼多多的HR,加了微信聊了下,發了簡歷便開始我的拼多多面試之旅。這裡要非常感謝拼多多HR小姐姐,從面試內推到offer確認一直都在幫我,人真的很nice。
一、筆試
不用多說了,上來就是四道演算法題
第一題
- 題目描述
自動售貨機里有 N 瓶複製可樂。複製可樂非常神奇,喝了它的人會複製出一個自己來!現在有 Alice, Bob, Cathy, Dave 四個人在排隊買複製可樂。買完的人會馬上喝掉,然後他和他的副本會重新去隊伍的最後面排隊買可樂。問最後一個買到複製可樂的人叫什麼名字?
- 輸入描述:
輸入僅有一行,包含一個正整數 N (1 <= N <= 1,000,000,000),表示可樂的數量。
- 輸出描述:
輸出喝到最後一罐複製可樂的人的名字。
示例1
說明:
前8個喝到可樂的人依次為:Alice, Bob, Cathy, Dave, Alice, Alice, Bob, Bob.
- 解題思路
- 代碼
第二題
- 題目描述
四年一度的世界盃又來了!小多在公司內發起了一個票選最強球星的活動。共有 N 個候選球星,每位投票者需要在選票上為每位候選球星評定一個實例等級,等級由英文字母表示,'a' 級最高,'z' 級最低,共26級。
我們稱候選球星 X 強於候選球星 Y,當「 X 的評級比 Y 高」的票數高於「 Y 的評級比 X 高」的票數。若一個候選球星強於任一其他候選球星時,則稱該球星為“球王”。根據這個規則,至多只會有一個球王。需要註意的是也可能沒有球王。現在給出所有 M 張選票,請你幫小多判斷一下哪位候選球星是球王。
- 輸入描述:
第一行包含2個整數 N、M,分別表示候選球星數量以及選票數量。接下來有 M 行,每行是一個長度為 N 個字元串,每個字元串表示一張選票上的信息。每個字元串的第 k (0 <= k < N) 個字元,表示這張選票對第 k 個候選球星的評級。
數據範圍:
- 輸出描述:
若有球王,則輸出一行僅包含一個整數 X,表示編號為 X (0 <= X < N) 的候選球星是球王;若沒有球王,則輸出一行僅包含一個整數 -1 。
示例1
示例2
- 解題思路
- 代碼
第三題
- 題目描述
有N個貨物(0<=N<=1024),每個貨物的重量是W(100<=W<=300)。如果每輛車最多的載重為300,請問最少需要多少輛車才能運輸所有貨物。
- 輸入描述:
一行輸入,包含N個正整數,表示每個貨物的重量,空格分隔。
- 輸出描述:
一行輸出,包含一個整數,表示需要的車輛數。
- 解題思路
- 代碼
第四題
- 題目描述
A 國的手機號碼由且僅由 N 位十進位數字(0-9)組成。一個手機號碼中有至少 K 位數字相同則被定義為靚號。A 國的手機號可以有前導零,比如 000123456 是一個合法的手機號。小多想花錢將自己的手機號碼修改為一個靚號。修改號碼中的一個數字需要花費的金額為新數字與舊數字之間的差值。
比如將 1 修改為 6 或 6 修改為 1 都需要花 5 塊錢。給出小多現在的手機號碼,問將其修改成一個靚號,最少需要多少錢?
- 輸入描述:
第一行包含2個整數 N、K,分別表示手機號碼數字個數以及靚號至少有 K 個數字相同。第二行包含 N 個字元,每個字元都是一個數字('0'-'9'),數字之間沒有任何其他空白符。表示小多的手機號碼。
數據範圍:
2 <= K <= N <= 10000
- 輸出描述:
第一行包含一個整數,表示修改成一個靚號,最少需要的金額。第二行包含 N 個數字字元,表示最少花費修改的新手機號。若有多個靚號花費都最少,則輸出字典序最小的靚號。
示例1
說明:
花費為4的方案有兩種:777577與777775,前者字典序更小。
- 解題思路
- 代碼
2、一面
一個超級溫柔的小姐姐,先聊聊簡歷的東西,說說項目。隨後撕了兩個sql題目,難度弱於筆試。主要考察視窗函數,來張圖證明所言不虛。
業務題是:
如果你負責生產全市的窨井蓋,可以生產圓的和方的,如何計算怎麼生產更合適
(思路:根據材料限制情況,線性規劃,別想的太複雜)。
當天晚上面試官微信介紹了她所在的團隊情況,估計應該是比較滿意我吧。
3、二面
主要問了下麵這些問題:
- 系統有哪些模塊,每個模塊用了哪些技術,數據怎麼流轉的?(面試官有點禿頂,一看級別就很高)給了我一張紙,我在上面簡單畫了下系統之間的流轉情況
- 鏈路追蹤的信息是怎麼傳遞的?(RpcContext的attachment,說了Span的結構:parentSpanId + curSpanId)
- SpanId怎麼保證唯一性?(UUID,說了下內部的定製改動)
- RpcContext是在什麼維度傳遞的?(線程)
- Dubbo的遠程調用怎麼實現的?(講了讀取配置、拼裝url、創建Invoker、服務導出、服務註冊以及消費者通過動態代理、filter、獲取Invoker列表、負載均衡等過程(嘩啦啦講了10多分鐘),我可以喝口水麽?
- Spring的單例是怎麼實現的?(單例註冊表)
- 為什麼要單獨實現一個服務治理框架?(說了下內部剛搞微服務不久,主要對服務進行一些監控和性能優化)
- 誰主導的?內部還在使用麽?
- 逆向有想過怎麼做成通用麽?
- 有什麼想問的麽?
3、三面
HR直接一個電話就過來了,問方不方便聊。記得問了下麵幾個問題:
1.高中有參加競賽,為什麼大學不參加了?
2.看你學的是理科,為什麼選擇數據分析?
3.更傾向於業務還是理論?
4.手裡有沒有其它offer?
小哥哥聲音挺好聽的,整體時間12分鐘左右。我還吐槽了中間等了兩周的時間,氣氛比較活躍友好。
小結
總的來說,拼多多的面試流程就簡單許多,畢竟是一個成立三年多的公司。面試難度中規中矩,只要基礎扎實應該不是問題。但不得不說工作強度很大,開始面試前HR就提前和我確認能否接受這樣強度的工作,想來的老鐵還是要做好準備。