騰訊云智后臺(tái)實(shí)習(xí)一面
1、自我介紹
答:公式背誦,背完后聊了些簡(jiǎn)歷上寫(xiě)的算法競(jìng)賽獲獎(jiǎng)的詳情,他說(shuō)他不太熟悉幾等獎(jiǎng)幾等獎(jiǎng)的獲獎(jiǎng)要求。
2、我看你會(huì) Java、Cpp、Go,說(shuō)一下這些語(yǔ)言的區(qū)別
答:生態(tài)不同,Java 生態(tài)很好,可直接調(diào)用的 api 很多,其他語(yǔ)言可能部分業(yè)務(wù)要自己手搓**,開(kāi)發(fā)成本高。
3、可不可以說(shuō)一下其他方面的不同?
答:Cpp、Go 有指針,數(shù)組中存的是元素,Java 無(wú)指針,數(shù)組存的是地址。
4、你覺(jué)得這兩種設(shè)計(jì)的哪種更好?你更喜歡哪種設(shè)計(jì)?
答:各有優(yōu)劣,性能高的內(nèi)存開(kāi)銷(xiāo)也會(huì)高(現(xiàn)在想起來(lái)當(dāng)時(shí)應(yīng)該說(shuō)指針可能造成內(nèi)存泄露)。我本人更喜歡指針設(shè)計(jì),又聊了 Java 淺拷貝拷地址,深拷貝實(shí)現(xiàn)麻煩,所以喜歡指針。
5、聊一聊你對(duì) hashmap 的理解,想說(shuō)哪方面就說(shuō)哪方面。
答:JDK1.8+ 是數(shù)組鏈表紅黑樹(shù)實(shí)現(xiàn),元素超過(guò)負(fù)載因子 0.75 * 16 = 12 后樹(shù)化,元素小于 8 退回到鏈表。我對(duì)于 go 的 map 也有所了解,我認(rèn)為 go 的 map 比 java 做的好的一點(diǎn)是擴(kuò)容是漸進(jìn)式擴(kuò)容,包括 java 中hashmap的線程安全版本 concurrenthashmap 也是漸進(jìn)式擴(kuò)容,就是觸發(fā)擴(kuò)容條件后每次對(duì) map 處理時(shí)將舊的桶的兩個(gè)元素搬到新桶中,緩解擴(kuò)容帶來(lái)的性能開(kāi)銷(xiāo)。
6、hashmap 的擴(kuò)容是怎樣的?
答:擴(kuò)成二倍長(zhǎng)度。
7、擴(kuò)成二倍長(zhǎng)度有什么風(fēng)險(xiǎn)?
答:OOM Out Of Memory,可以調(diào) JVM 參,增大堆內(nèi)存大小,也可優(yōu)化其他對(duì)象的開(kāi)銷(xiāo)。
8、說(shuō)一下布隆過(guò)濾器
答:直接說(shuō)的 redis 的緩存雪崩,背八股背到一半被面試官打斷了。
9、布隆過(guò)濾器一定要用在 redis 上嗎?有沒(méi)有可能你這個(gè)布隆過(guò)濾器在過(guò)濾的過(guò)程中造成的性能開(kāi)銷(xiāo)要比緩存雪崩帶來(lái)的性能開(kāi)銷(xiāo)大?
答:我了解到布隆過(guò)濾器是基于位圖實(shí)現(xiàn)的,對(duì)于一般的請(qǐng)求不會(huì)出現(xiàn)上述情況,同時(shí)我們可以使用 postman 等測(cè)試工具做一些請(qǐng)求時(shí)間記錄,根據(jù)記錄做適當(dāng)調(diào)整決定要不要使用布隆過(guò)濾器;此外 Elasticsearch 等只要是查詢(xún)數(shù)據(jù)的中間件都可以使用布隆過(guò)濾器,只是 redis 是一個(gè)十分典型的例子,所以我一上來(lái)就提到了 redis。
10、如何手搓一個(gè)布隆過(guò)濾器?
答:狀態(tài)壓縮,搞一個(gè) int 類(lèi)型的值,其二進(jìn)制的每位 01 表示數(shù)據(jù)是否存在。手搓位圖會(huì)導(dǎo)致代碼可讀性差難維護(hù)、開(kāi)發(fā)難度高易出錯(cuò),如果要我手搓一個(gè)布隆過(guò)濾器,我會(huì)詳細(xì)在方法前寫(xiě)好注釋?zhuān)苑乐蛊渌伦x我的 i 左移 j、i 右移 j 時(shí)造成混亂。(還好他沒(méi)真讓我搓布隆過(guò)濾器)
11、為啥 mysql 用 B+ 樹(shù)?
答:因?yàn)閯傇诹?redis 所以先說(shuō)為啥不用跳表:插入查詢(xún)隨機(jī),且范圍查詢(xún)效率奇低;再聊為啥不用紅黑樹(shù):kv存儲(chǔ)導(dǎo)致空間利用率低,同時(shí)并發(fā)要靠 cas,太重了。
到這面試已經(jīng)進(jìn)行50分鐘了,自我介紹與閑聊10分鐘,問(wèn)這些問(wèn)題40分鐘,面試官說(shuō)時(shí)間不多了,他看我的項(xiàng)目經(jīng)歷啥的能看懂,手撕算法筆試撕過(guò)了今天就不撕了,開(kāi)始反問(wèn)。
反問(wèn)
反問(wèn)1:貴公司核心業(yè)務(wù)是怎樣的?實(shí)習(xí)生多久可以接觸到核心業(yè)務(wù)?
面試官答:做數(shù)據(jù)庫(kù) orm **,用 cpp 和 go,所以他剛剛一直問(wèn)底層的東西,包括他對(duì)二倍擴(kuò)容很敏感。
反問(wèn)2:如本人有幸通過(guò)面試,我最近學(xué)習(xí)哪些知識(shí)以更快融入貴公司?
面試官答:go 和 k8s。(k8s看了幾天沒(méi)咋看懂,倒聽(tīng)說(shuō)這個(gè)不是開(kāi)發(fā)干的是運(yùn)維干的,最近看別的去了)。
感受
首先面試官人挺好,對(duì)于底層知識(shí)與設(shè)計(jì)聊的有來(lái)有回。一面是 4.14 這周一面的,現(xiàn)在寫(xiě)這篇面經(jīng)是周六的晚上十一點(diǎn)。當(dāng)天面完官網(wǎng)的應(yīng)聘狀態(tài)就從業(yè)務(wù)初試改為業(yè)務(wù)復(fù)試了,等到今天也沒(méi)有郵箱說(shuō)哪天二面。。。等得太煎熬了把拖了近一周的面經(jīng)給寫(xiě)了,有一些焦慮,怕官網(wǎng)狀態(tài)更新錯(cuò)了、怕騰訊云智已經(jīng)招滿人了所以不準(zhǔn)備面我了、怕真有下一次面試碰到 kpi 面。。。閑下來(lái)總是不自覺(jué)想些有的沒(méi)的。
#騰訊云智研發(fā)2025實(shí)習(xí)生招聘#