4.17螞蟻一面涼經(jīng)
- 自我介紹
- 畢業(yè)想從事什么方向的工作
- 聊一下自己做的項(xiàng)目(我自己挑了一個(gè)黑馬點(diǎn)評(píng))
- UV統(tǒng)計(jì)怎么做的?為什么要這么實(shí)現(xiàn)呢?用HyperLogLog為什么不會(huì)占用很大空間呢?16KB怎么去存儲(chǔ)這個(gè)數(shù)據(jù)呢
- 好友關(guān)注怎么做的
- 項(xiàng)目的哪個(gè)點(diǎn)是有挑戰(zhàn)性的(回答了優(yōu)惠券秒殺)
- 秒殺為什么要用消息隊(duì)列
- Redis掛了怎么辦(回答用集群方案來(lái)解決)整個(gè)集群掛了就不行了對(duì)吧?(面試官追問(wèn) 回答考慮限流)
- 但你的庫(kù)存信息都是在 Redis 里面,對(duì)吧?就是限流,你取不到庫(kù)存了嗎
- 你怎么保證那個(gè) Redis 里面庫(kù)存和 DB 里面的庫(kù)存它是一致的,沒(méi)有可能出錯(cuò)?
- 你那個(gè) Redis 你去做扣減庫(kù)存怎么保障它的原子性呢?
- 不用lua腳本會(huì)帶來(lái)什么樣的問(wèn)題?
- 扣減庫(kù)存的原子性是為了解決什么樣的問(wèn)題
- 假設(shè)這個(gè)地方我們不用 lua 腳本,對(duì)吧?就用最普通的方案會(huì)帶來(lái)什么樣的問(wèn)題?
- 樂(lè)觀鎖怎么解決超賣的問(wèn)題
- 你能那個(gè)詳細(xì)的描述一下 lua 腳本里面是用了什么樣的 Redis 的命令?
- 你lua腳本就是怎么寫的?就是你肯定是用了 Redis 的命令,對(duì)吧?
- 比如說(shuō)你扣了庫(kù)存,我們肯定是要做支付,對(duì)吧?那庫(kù)存和支付的順序是怎么樣?先支付再扣,或者先扣庫(kù)存再支付,這個(gè)過(guò)程你來(lái)講一下吧。
- 創(chuàng)建訂單,然后假設(shè)支付失敗了呢。
- 那怎么去把數(shù)據(jù)寫到 Redis 里面呢?你這個(gè)時(shí)候你 Redis 里面庫(kù)存也得回加,對(duì)吧?這里就可以會(huì)涉及到一個(gè)你 DB 的庫(kù)存跟 Redis 的庫(kù)存的一致性的問(wèn)題,怎么去保障它們一致性?
- 因?yàn)橄G失導(dǎo)致的這個(gè)消息消費(fèi)失敗導(dǎo)致的庫(kù)存不一致,怎么發(fā)現(xiàn)這個(gè)問(wèn)題
- 重新發(fā)消息的時(shí)候會(huì)不會(huì)導(dǎo)致那個(gè)庫(kù)存的操作重復(fù)?
- 通過(guò)訂單號(hào)去做冪等是嗎。
- 那假設(shè)那個(gè)用戶量進(jìn)一步的變大,就可能你一步的去消費(fèi) MQ 的消息的時(shí)候, DB 的壓力還是會(huì)比較大,還是會(huì)消化不完,這個(gè)時(shí)候我們應(yīng)該怎么去優(yōu)化呢?(考慮集群、分庫(kù))
- 你這個(gè)場(chǎng)景你會(huì)怎么去做?分庫(kù)用什么字段去分?(回答用訂單號(hào)作為分配的依據(jù))
- 假設(shè)一個(gè)用戶下了 3 筆單,然后落到了 3 個(gè)庫(kù),他最終去查的時(shí)候,他會(huì)涉及一個(gè)全庫(kù)式掃描,對(duì)吧?你怎么去避免這種問(wèn)題呢?(答用用戶id來(lái)做分庫(kù))
- 那假設(shè)商家要查他有多少秒殺進(jìn)來(lái)的訂單,這個(gè)情況怎么辦呢?
- 如果用 MQ 消息隊(duì)列可以做嗎?用消息隊(duì)列可以去怎么優(yōu)化這個(gè) case (指的是用消息隊(duì)列優(yōu)化商家查詢訂單的速度)嗎?
- 反問(wèn)階段
全程拷打點(diǎn)評(píng)項(xiàng)目,一天后掛了
還是太菜了 再沉淀沉淀吧