貨拉拉面試:全程八股!被問麻了

作者 | 磊哥
來源 | Java中文社群
作者微信:GG_Stone今天來看貨拉拉 Java 技術(shù)崗的面試問題,廢話不多說,先看問題。
一面問題
“”
- 先讓介紹項目,超賣問題項目是怎么實現(xiàn)的?有什么改進的想法?
- 線程池的核心參數(shù)?
- 在秒殺的過程中,比如只有 10 個名額,有 100 個人去搶,頁面上需要做一些什么處理?
- HashSet 了解嗎?
- HashMap 了解嗎?從 0 個 put 20 個數(shù)據(jù)進去,整個過程是怎么樣的?HashMap 擴容機制?是 put 12 個數(shù)據(jù)之前擴容還是之后擴容?什么時候裝紅黑樹?為什么是 8 的時候轉(zhuǎn),為什么是 6 的時候退化回鏈表?
- ConcurrenHashMap 了解嗎?用到哪些鎖?
- CAS 原理了解嗎?
- synchronized 有多少種鎖?鎖升級。
- MySQL 有哪些鎖?
- 一條 SQL 執(zhí)行的全流程?
- 地址輸入 URL 到數(shù)據(jù)返回頁面,整個流程?
- 域名服務(wù)器尋址?
二面問題
“”
- 問了一下項目的鎖,問怎么優(yōu)化?
- 怎么進行項目部署的?
- 之前搭過最復(fù)雜的項目是什么?
- 你感覺這種架構(gòu)有什么好處?為什么要進行微服務(wù)拆分?
- Nacos 用過嗎?
- CAP 理論?Base 理論?
- MQ 用過嗎?
- 有什么技術(shù)優(yōu)勢?
1.怎么解決超賣問題?
答:超賣問題是一個相對來說,比較經(jīng)典且相對難處理的問題,解決它可以考慮從以下三方面入手:
- 前端初步限制:前端先做最基礎(chǔ)的限制處理,只允許用戶在一定時間內(nèi)發(fā)送一次搶購請求。
- 后端限流:前端的限制只能針對部分普通用戶,如果有惡意刷單程序,那么依靠前端是解決不了任何問題的,所以此時就需要后端做限流操作了,而后端的限流又分為以下手段:
- IP 限流:限制一個 IP 在一定時間內(nèi),只能發(fā)送一個請求。此技術(shù)實現(xiàn)要點:通過在 Spring Cloud Gateway 中編寫自定義全局過濾器來實現(xiàn) IP 限流。
- 接口限流:某個接口每秒只接受一定數(shù)量的請求。此技術(shù)實現(xiàn)要點:通過 Sentinel 的限流功能來實現(xiàn)。
- 排隊處理:即時做了以上兩步操作,仍然不能防止超賣問題的發(fā)生,此時需要使用分布式鎖排隊處理請求,才能真正的防止超賣問題的發(fā)生。此技術(shù)實現(xiàn)要點:
- 方案一:使用 Lua 腳本 + Redis 實現(xiàn)分布式鎖。
- 方案二:使用 Redisson 實現(xiàn)分布式鎖。
“PS:關(guān)于這些技術(shù)實現(xiàn)細節(jié),例如:Spring Cloud Gateway 全局自定義過濾器的實現(xiàn)、Sentinel 限流功能的實現(xiàn)、分布式鎖 Redisson 的實現(xiàn)等,面試訓(xùn)練營有講解,需要的私信我。
”
2.CAP 理論和 Base 理論?
CAP 理論
CAP 理論是分布式系統(tǒng)設(shè)計中的一個基本原則,它提供了一個思考和權(quán)衡一致性、可用性和分區(qū)容錯性之間關(guān)系的框架。CAP 理論的三個要素如下:
- 一致性(Consistency):在分布式系統(tǒng)中的多個副本或節(jié)點之間,保持?jǐn)?shù)據(jù)的一致性。也就是說,如果有多個客戶端并發(fā)地讀取數(shù)據(jù),在任何時間點上,它們都應(yīng)該能夠觀察到相同的數(shù)據(jù)。
- 可用性(Availability):系統(tǒng)在任何時間點都能正常響應(yīng)用戶請求,即系統(tǒng)對外提供服務(wù)的能力。如果一個系統(tǒng)不能提供響應(yīng)或響應(yīng)時間過長,則認(rèn)為系統(tǒng)不可用。
- 分區(qū)容忍性(Partition tolerance):指系統(tǒng)在遇到網(wǎng)絡(luò)分區(qū)或節(jié)點失效的情況下,仍能夠繼續(xù)工作并保持?jǐn)?shù)據(jù)的一致性和可用性。
CAP 理論指出,在分布式系統(tǒng)中,不能同時滿足一致性、可用性和分區(qū)容錯性這三個特性,只能是 CP 或者是 AP。
- CP:強一致性和分區(qū)容錯性設(shè)計。這樣的系統(tǒng)要求保持?jǐn)?shù)據(jù)的一致性,并能夠容忍分區(qū)故障,但可用性較低,例如在分區(qū)故障期間無法提供服務(wù)。
- AP:高可用性和分區(qū)容錯性設(shè)計。這樣的系統(tǒng)追求高可用性,而對一致性的要求較低。在分區(qū)故障期間,它可以繼續(xù)提供服務(wù),但數(shù)據(jù)可能會出現(xiàn)部分不一致。
CAP 無法全部滿足的原因
CA 或 CAP 要求網(wǎng)絡(luò)百分之百可以用,并且無延遲,否則在 C 一致性要求下,就必須要拒絕用戶的請求,而拒絕了用戶的請求就違背了 A 可用性,所以 CA 和 CAP 在分布式環(huán)境下是永無無法同時滿足的,分布式系統(tǒng)要么是 CP 模式,要么是 AP 模式。
BASE 理論
BASE 理論是對分布式系統(tǒng)中數(shù)據(jù)的一致性和可用性進行權(quán)衡的原則,它是對 CAP 理論的一種補充。BASE 是指:
- 基本可用性(Basically Available):系統(tǒng)保證在出現(xiàn)故障或異常情況下依然能夠正常對外提供服務(wù),盡管可能會有一定的性能損失或功能缺失。在分布式系統(tǒng)中,為了保證系統(tǒng)的可用性,有時會犧牲一致性。
- 軟狀態(tài)(Soft State):系統(tǒng)中的數(shù)據(jù)的狀態(tài)并不是強一致的,而是柔性的。在分布式系統(tǒng)中,由于網(wǎng)絡(luò)延遲、節(jié)點故障等因素,數(shù)據(jù)可能存在一段時間的不一致。
- 最終一致性(Eventually Consistent):系統(tǒng)會保證在一段時間內(nèi)對數(shù)據(jù)的訪問最終會達到一致的狀態(tài)。即系統(tǒng)允許數(shù)據(jù)副本在一段時間內(nèi)存在不一致的狀態(tài),但最終會在某個時間點達到一致。
BASE 理論強調(diào)系統(tǒng)的可用性和性能,盡可能保證系統(tǒng)持續(xù)提供服務(wù),而不是追求強一致性。在實際應(yīng)用中,為了降低分布式系統(tǒng)的復(fù)雜性和提高性能,可以采用一些方法來實現(xiàn)最終一致性,如版本管理、異步復(fù)制等技術(shù)手段。
“PS:BASE 理論并不是對 CAP 理論的顛覆,而是對分布式系統(tǒng)在某些場景下的設(shè)計原則,在具體系統(tǒng)設(shè)計中,開發(fā)人員需要根據(jù)業(yè)務(wù)需求和場景來權(quán)衡和選擇適當(dāng)?shù)囊恢滦院涂捎眯圆呗浴?/p> ”
3.你有什么技術(shù)優(yōu)勢?
當(dāng)面試官問你這個問題時,你可以從以下幾個方面回答:
- 總結(jié)你掌握的技術(shù)點:首先,從你所應(yīng)聘的職位和相關(guān)領(lǐng)域出發(fā),總結(jié)并列出你的技術(shù)專長或?qū)I(yè)專長。注意,你講的這些技術(shù)點一定要向面試公司要求的技術(shù)點靠攏。
- 強調(diào)你的技術(shù)專長:在列舉領(lǐng)域后,強調(diào)你在這些領(lǐng)域中的技術(shù)專長。你可以提及一些主要技術(shù)、框架等方面的技術(shù)專長。
- 舉例說明:提供一些具體的項目案例或工作經(jīng)驗,展示你在技術(shù)領(lǐng)域上的實際應(yīng)用能力。說明你如何使用所掌握的技術(shù)解決具體問題、優(yōu)化系統(tǒng)性能或提升用戶體驗等。這樣可以更加具體地說明你的技術(shù)優(yōu)勢,并證明你的技能在實踐中是有價值的。
- 強調(diào)自己“軟”優(yōu)勢:向面試官展示你的“軟”優(yōu)勢,例如:喜歡專研技術(shù)(加上具體的例子,例如每天都有寫代碼提交到 GitHub)、積極學(xué)習(xí)和持續(xù)成長等能力。同時,強調(diào)你在團隊合作中的貢獻和溝通技巧等其他能力,這些也是技術(shù)優(yōu)勢的重要補充。
“PS:其他常規(guī)的八股問題,可以在我的網(wǎng)站 www.javacn.site 找到答案,本文就不再贅述了,大家自己去看吧。
”
小結(jié)
貨拉拉解決了日常生活中搬家難的痛點,也是屬于某一個細分賽道的龍頭企業(yè)了,公司不大,但算的上是比較知名的企業(yè)。他們公司的面試題并不難,以八股和項目中某個具體問題為主,只要好好準(zhǔn)備,拿到他們公司的 Offer 還是比較簡單的。
最后:祝大家都能拿到滿意的 Offer。說件大事
磊哥一直在做的事,為了讓大家找到更好的工作,所以有著 13 年工作經(jīng)驗的我,開發(fā)了一門《Java 面試突擊訓(xùn)練營》。
整個課程為期一個月,帶著大家把 16 萬的圖文 + 3000 多分鐘的視頻課系統(tǒng)的學(xué)完,并且錄屏支持永久更新和觀看。
整個課程從 Java 基礎(chǔ)到微服務(wù) Spring Cloud 應(yīng)用盡有,包含以下 16 個大的模塊:

訓(xùn)練營收費 1200 元,帶你高效的搞定面試問題,學(xué)完之后可以應(yīng)對當(dāng)前市面上絕大部分公司的面試,得到高薪 Offer。
加我微信咨詢吧:GG_Stone【備注:訓(xùn)練營】

