拼多多&快手研發面經

拼多多&快手研發面經

本文首發於微信公衆號:程序員江湖

快手:Java研發工程師

面試共有三輪

技術面試兩輪,一面40分鐘,二面1個小時。

拼多多:業務平臺研發工程師

在武漢進行的現場面試。共三面,耗時兩個小時。

祝大家早日拿到滿意的offer。

1一面

拼多多:業務平臺研發工程師

在武漢進行的現場面試。共三面,耗時兩個小時。

一:先面了hr面

1 項目情況

2 實習收穫

3 老家和期望城市

4 對拼多多有什麼瞭解

5 對拼多多的11 10 6怎麼看,可以接受麼

二:技術面

1 講一下項目

2 做的主要是Java對吧,講一下多線程把,用到哪些寫一下

3 寫了thread和runnable,然後寫了線程池,她問我線程池由哪些組件組成,有哪些線程池,分別怎麼使用,以及拒絕策略有哪些。

4 什麼時候多線程會發生死鎖,寫一個例子吧,然後我寫了一個兩個線程,兩個鎖,分別持有一個,請求另一個的死鎖實例。

5 集合類熟悉吧,寫一個題目,一個字符串集合,找出pdd並且刪除,我直接寫了一個list然後for循環判斷相等時刪除,她說明顯問題,我才發現list直接刪位置會出錯,於是我說改用數組,她說不太符合要求,所以應該使用iterator刪除會好一點,修改會反映到集合類,並且不會出錯。

6 然後說一下Redis吧,是單線程還是多線程,Redis的分佈式怎麼做,說了集羣。

7 RPC瞭解麼,我說了主要是協議棧+數據格式+序列化方式,然後需要有服務註冊中心管理生產者和消費者,他問我註冊中心宕機怎麼辦,我說可以做高可用,他說要問的不是這個,是想問我註冊中心宕機時消費者是否能訪問生產者。

我說消費者本地有緩存,可以訪問緩存中的生產者。

8 實習最大的收穫是什麼。

9 TCP三次握手的過程,如果沒有第三次握手有什麼問題。

三面:技術面

1 自我介紹

2 講一下項目的主要架構,你在裏面做了什麼

3 有什麼比較複雜的業務邏輯講一下。

4 最大的難點是什麼,收穫是什麼。

5 MySQL的主從複製怎麼做的,答日誌,具體原理是什麼,有什麼優缺點。

6 Redis瞭解哪些內容,是單線程麼,爲什麼是單線程呢,數據一定是存在物理內存中麼,我不懂這話啥意思,就問了一下是不是指可能也在虛擬內存中。他說那講一下虛擬內存的機制把,我就講了分頁,頁表,換頁這些東西。

7 項目用到了多線程,如果線程數很多會怎麼樣,我說會佔內存,還有就是切換線程比較頻繁,他問切換線程會發生什麼,應該就是CPU切換上下文,具體就是寄存器和內存地址的刷新。

8 計算機如何訪問一個文件的字節流呢,講一下過程,說了Linux從inode節點找到磁盤地址,進行讀取,他問我是直接讀取麼,我就說還會有讀緩存,其實還應該說一下DMA的。

問了我知道swap分區麼,我說不太清楚。

9 分佈式瞭解哪些東西,消息隊列了解麼,用在什麼場景,說了削峯,限流和異步。說了kafka,問我怎麼保證數據不丟失,以及確保消息不會被重複消費。還問了消息送達確認是怎麼做的。

10 cap瞭解麼,分別指什麼,base呢,強一致性和弱一致性有什麼方法來做,2pc瞭解麼,說一下大概過程。

11 負載均衡怎麼做的呢,爲什麼這麼做,瞭解過集羣雪崩麼。

12 這樣一個題目,一個節點要和客戶連接建立心跳檢測,大概有百萬數量的連接,並且會定期發送心跳包,要寫一個update方法和check方法,update方法更新心跳狀態,check刪除超時節點,怎麼做,剛開始做了個hash發現check要輪詢太慢了,然後用計時器和開線程檢測也不行,最後說了個LRU,他說OK的。

13 寫一道題,二叉樹的後序遍歷,非遞歸算法。

用一個棧可以實現,先壓自己,再壓右節點,再壓左節點。不過我卡在一半沒寫完,面試官說有思路就行了,今天就面到這,然後就溜了,發現已經沒人了。

用一個棧可以實現,先壓自己,再壓右節點,再壓左節點。不過我卡在一半沒寫完,面試官說有思路就行了,今天就面到這,然後就溜了,發現已經沒人了。

快手面經

一面:

1 寫一個選擇排序或者插入排序

2 寫一個生產者消費者

3 Java多線程瞭解麼,什麼時候一個int

類型的操作是不安全的,自加呢,賦值呢。

如果使用volatile修飾的話有什麼作用。

4 MySQL和redis的區別是什麼

5 爲什麼MySQL和Redis都要使用獨立進程來部署,開放端口來提供服務,爲什麼不寫在內核中。

6 有一個場景,多線程併發,爲每個線程安排一個隨機的睡眠時間,設想一種數據結構去喚醒睡眠時間結束的線程,應該用哪種結構,答應該用優先級隊列,也就是小頂堆,頂部是剩餘睡眠時間最短的那個線程。

7 好像就是這些了。

二面:

1 項目

2 多線程

3 一道算法題,一個二維矩陣進行逆置操作,也就是行變列列變行。剛開始我理解錯了,直接用一維數組轉儲再重新填入新數組。

面試官說可以不用一維數組麼

然後解答的過程中才發現我理解錯了。改了一會才搞定。

4 擴展一下,二維數組存在500g的文件中,怎麼做才能完成上面算法的操作,我就說先按行拆分,最後再拼接。

5 擴展兩下,一行數據就會超出內存,應該怎麼做,那就按列拆分,最後合併。

6 知道服務的橫向擴展和縱向擴展麼,剛開始理解錯了,後來就說是提高單機性能,以及擴展成集羣。

7 cap介紹一下吧,爲什麼只能3選2

8 線程與進程

9 tcp和udp的區別

10 get和post的區別

11 併發量大概多少,做過優化嗎

HR面:

老生常談了,就不貼了。

▼更多精彩內容

騰訊研發面經

阿里中間件研發面經

百度研發面經

螞蟻金服研發面經

更多校招乾貨請關注公衆號:程序員江湖。

大俠,這裏有乾貨!


本文來自 How_2_Play_Life 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/a724888...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章