拼多多PDD-5.5服務(wù)端研發(fā)實習(xí)生二面面經(jīng)
??面試公司:拼多多
??面試崗位:服務(wù)端研發(fā)實習(xí)生
??面試問題:先項目穿插八股,后純八股,最后手撕,后面幾個問題都答得不怎么樣,大概率掛了
- 自我介紹(簡歷上的項目:黑馬點評 + RPC框架 + 兩個科研項目)
- 首先問了一下研究方向,因為我那兩個科研項目是用Python寫的,所以面試官首先問我對Python的基本原理了解嗎?本來估計想問我線程模型、內(nèi)存管理機制啥的,但我也只是使用了Python,并沒有對底層做研究,就沒繼續(xù)問
- 你第一個項目是科研項目還是課題項目?老實回答說是自學(xué)項目。是你獨立開發(fā)的嗎?依舊老實回答。
- 說說項目亮點。答的緩存那一套東西以及緩存穿透、緩存擊穿、緩存雪崩。
- 緩存穿透怎么解決?存儲空對象。那存儲的key是什么?那如果我是一名攻擊者,我每次都隨機生成不同的key去查詢,那每一次都是穿透的,你怎么解決?(應(yīng)該用布隆過濾器的,沒想到)
- 緩存擊穿怎么解決?雙重檢測鎖。緩存雪崩怎么解決?設(shè)置隨機的過期時間去盡可能預(yù)防。
- redis怎么設(shè)置過期時間?set命令+ex或ps參數(shù)。你用過這個參數(shù)嗎?一般是在SpringBoot上用RedisTemplate去設(shè)置的。除了set+ex外,還有其他命令去設(shè)置過期時間嗎?印象中有個expire命令。
- 緩存擊穿是有大量熱Key并發(fā)訪問,那redis中如何檢測熱key?那熱key會有什么問題呢?(檢測沒想起來,后者答的一個緩存雪崩,另一個是節(jié)點壓力過大,可以考慮集群)
- 集群怎么讓一個請求打到不同的節(jié)點上?負(fù)載均衡
- redis對過期key的刪除策略有哪些?(忘了,應(yīng)該回答惰性刪除和定期刪除的)
- redis中ZSet底層是用什么數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)的?存儲元素數(shù)量在多少時會從ziplist切換到skiplist?這個閾值的默認(rèn)值是多少?(麻了,太久沒背想不起來了,答得不咋地)
- 那講講第二個項目吧。注冊中心用的是zookeeper是吧?那zookeeper掛了會有什么影響嗎?我那個項目有個本地緩存,服務(wù)發(fā)現(xiàn)完后會記錄到本地,所以答的是會從本地去找,直到zookeeper恢復(fù)。
- 你的RPC框架負(fù)載均衡是怎么實現(xiàn)的?有實現(xiàn)基于權(quán)重的負(fù)載均衡策略嗎?如果要你去實現(xiàn)的話,你怎么實現(xiàn)?
- 有了解其他RPC框架嗎?比如gRPC、Dubbo這種?你知道Dubbo的基于權(quán)重的負(fù)載均衡策略是怎么實現(xiàn)的嗎?(又麻了,不了解這些)
- 你序列化用來Json和Hessian兩種是吧?你這個Json是FastJson還是Jackson?FastJson。為啥不用Jackson呢?這兩者相關(guān)的性能你了解嗎?相同點與不同點,有了解嗎?(再度麻了,總不能說網(wǎng)上教程用的是FastJson,所以沒用Jackson吧)
- 你項目是用的SpringBoot是吧,你項目是怎么打包發(fā)布的?用pom.xml文件設(shè)置,并用IDEA配置的Maven進(jìn)行的打包。有直接使用命令嗎?
- Maven里面有哪些包依賴管理的原則?傳遞性依賴如果最終有版本沖突了,最終是由哪個版本決定的?依賴沖突怎么解決,通過什么手段?(這個Maven屬于是忘完了,就只會用IDEA那些了生命周期)
- 你了解JVM的垃圾回收嗎?G1垃圾回收器哪些過程可以和用戶線程并行呢?
- G1和CMS對比之后,你覺得CMS有哪些優(yōu)勢呢?
- G1里還有Survivor區(qū)域嗎?所以它垃圾回收的時候也是按照S1、S2來做回收嗎?
- G1中的Region可以分為哪幾種類型呢?
- 你對card table了解嗎?(這個也太冷門了吧
)
- MySQL有哪些方式可以解決回表問題?只想起一個覆蓋索引,后面面試官問我索引下推了解嗎?我答上來了(應(yīng)該是面試官在暗示我這個操作也可以減少回表)
- 你知道Read View里面有哪些比較重要的關(guān)鍵字的嗎?為了實現(xiàn)事務(wù)的版本并發(fā)控制,MySQL表里面有哪些隱藏字段來實現(xiàn)事務(wù)功能?(這兩問一面之前背過,結(jié)果忘了
)
- 你知道order by是怎么實現(xiàn)的嗎?我想不到,就答了如果有索引的話,B+樹這個數(shù)據(jù)結(jié)構(gòu)可以優(yōu)化order by。后續(xù)我去查了一下,如果沒有索引,是通過filesort里的sort_buffer實現(xiàn)的(之前完全沒聽過
)
- 你這些項目都是用git去管理的嗎?有用過哪些命令?你知道git pull和git fetch的區(qū)別嗎?(沒背過,查了一下兩者都可用于從遠(yuǎn)程倉庫獲取數(shù)據(jù),但后者只會獲取遠(yuǎn)程倉庫的最新代碼和更新信息,但不會更改本地代碼,前者則還會嘗試自動將這些更改合并到你的當(dāng)前分支中,也就是git pull == git fetch + git merge)
- 最后是手撕lc hot100里的4. 尋找兩個正序數(shù)組的中位數(shù),??蜕弦灿羞@題兩個升序數(shù)組的中位數(shù),要求最低的時間和空間復(fù)雜度。面試結(jié)束后搜了一下,是hard題,可惜之前沒刷過,就只能先和面試官講了最基本的歸并找中位數(shù)的思路,也說了這種方法的時間復(fù)雜度和空間復(fù)雜度,但不符合題目要求的最低時間與空間復(fù)雜度,臨時想的話沒想出來,后續(xù)再補刷一下吧
。
- 反問環(huán)節(jié),因為差不多已經(jīng)能看到感謝信(如果有的話
)在向我揮手了,所以就只問了面試結(jié)果大概多久可以出來。
??面試體驗:雖然面試官沒給壓力,語氣挺溫和的,沒答上來的也沒多問,但是問的題目個人感覺難度都挺高,加上我個人準(zhǔn)備不充分,感覺基本是無了,面到一半心就差不多涼了,不報什么希望了。只能再投幾家了多找找了。