拼多多&快手研發面經node
本文首發於微信公衆號:程序員江湖程序員
快手:Java研發工程師面試
面試共有三輪redis
技術面試兩輪,一面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...