天天看點

大廠面試系列(六):Redis及nosql應用Redis 和MongoDB及應用

Redis 和MongoDB及應用

Redis

  • redis優化政策
  • redis除了做緩存還能做什麼?
  • 說說redis持久化方式?分别優缺點是什麼?redis更新政策是什麼?
  • redis的資料結構存儲?以及應用場景?如何實作叢集和高可用?
  • 業務中redis如何保證可用性 怎麼實作分布式鎖(redis)
  • 分布式鎖的實作方式,zk實作和Redis實作的比較
  • redis支援的資料類型到跳躍表,redis同步政策 ,如何自己實作lru
  • 什麼是緩存擊穿,redis的hotkey如何處理?如何保證資料庫與緩存雙寫的一緻性。
  • redis緩存過期政策,準備同步,哨兵機制和叢集的差別
  • 遇到的問題就是“緩存穿透”和“緩存擊穿”,“緩存雪崩”,雙寫不一緻等。如何解決上述遇到的問題?
  • redis有哪幾種資料類型,如何持久化,怎麼更新,使用場景,主從複制怎麼做?影響redis的瓶頸?
  • NoSQL資料庫,以及MongDB和Redis使用場景?
  • 緩存一緻性問題 資料先寫 redis?還是先寫 MySQL?寫入失敗怎麼辦?redis 或者 MySQL 挂掉怎麼辦?
  • redis的高可用,redis的叢集方案,一緻性哈希和哈希槽模式下緩存伺服器當機,資料如何遷移
  • 你知道redis為什麼讀寫速度那麼快麼?redis資料裝在記憶體中,那麼資料可以持久化嗎?redis資料持久化的方式有哪些呢?這兩種持久化方式的差別在哪裡呢?你知道redis的記憶體淘汰機制嗎?redis的cluster叢集原理能簡單說一下嗎?
  • 如何解決 Redis 的并發競争 Key 問題
  • zset底層怎麼實作的?
  • 關于Redis的主從複制?
  • Redis 怎麼保證不丢資料,能不能保證嚴格意義的一定不會丢 Redis 叢集,生産環境Redis 如何做資料遷移
  • 如何了解redis的高性能和高并發
  • Redis基本資料結構 跳表實作原理 過期處理,Redis單線程優勢,影響吞吐因素,支援事務嗎 Redis會遇到哪些問題 緩存一緻性 穿透 雪崩,解決方案.
  • BloomFilter 知道嗎?說下原理,怎麼提高準确性
  • 單線程的redis如何利用多核cpu機器?
  • 有海量key和value都比較小的資料,在redis中如何存儲才更省記憶體?
  • redis分布式鎖如何保證原子性?
  • redis主備切換過程是怎樣的?
  • redis的過期政策,定期删除何時終止
  • Redis如何解決key沖突?
  • 如果redis作為分布式鎖的時候,主節點挂掉了,但是資料還沒有同步到從節點,這種情況怎麼辦?
  • redis的key是如何尋址的啊?
  • 分布式緩存redis原理
  • redis分布式鎖三種實作方式
  • redis和memcached 的記憶體管理的差別等等
  • redis的session共享的具體實作
  • 講講redis裡面的哈希表?
  • redis 叢集主從複制原理。
  • Guava緩存除了做緩存還能做什麼?和Redis的優缺點。
  • redis分片取模算法。
  • redis,memcache底層用戶端使用一緻性Hash,看是否了解;redis的事件驅動多路複用底層實作
  • redis的事務機制;
  • Redis 有序集合實作方式有哪些;zset與set差別?list和set又有什麼差別?
  • set 和setNx有什麼差別
  • redis資料結構、跳躍表,redis qps能上多少,怎麼知道的 ,sentinel和cluster差別和各自适用場景,redis cluster叢集同步過程
  • 講下布隆過濾器的實作機制
  • redis處理大量重複資料
  • 生産環境Redis 如何做資料遷移
  • Redis官方為什麼不提供Windows版本?
  • redis 記憶體淘汰機制(MySQL裡有2000w資料,Redis中隻存20w的資料,如何保證Redis中的資料都是熱點資料?)
  • Redis主要消耗什麼實體資源?
  • 分布式鎖的方案,redis和zookeeper那個好,如果是叢集部署,高并發情況下哪個性能更好?

MongoDB

  • MongoDB和MySQL的差別,各自使用場景

應用

  • 項目裡用redis存哪些資料?為什麼用redis?和jetty本地緩存有什麼差別?
  • 發散性問題:假如有100萬個玩家,需要對這100W個玩家的積分中前100名的積分,按照順序顯示在網站中,要求是實時更新的。積分可能由做的任務和獲得的金錢決定。問如何對着100萬個玩家前100名的積分進行實時更新?

    思路就是考慮出了前100名的後100W-100名玩家的積分,讓變化的積分跟第100名比較,如果比第100名高,那就替換的原則。就是利用緩存機制,緩存---tomcat---DB,層級計算,能不用到DB層就别用,因為每進一層,實作起來都會更複雜和更慢。

  • 談談你對緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級的了解?
  • 解決緩存擊穿的方式有哪幾種?加鎖的時候什麼時候選擇本地鎖,什麼時候選擇分布式鎖?
  • 資料庫有1萬條資料,怎麼很快的加載到redis?
  • 問nosql如何設計?
  • 做個微信商城,其中有各種活動,限時優惠,和秒殺,問我并發的時候怎麼做處理的。

    (用redis計數器做,當秒殺的商品庫存減低時,直接響應請求)

  • 設計一個防止緩存穿透的解決方案,
  • 分布式緩存實作原理,秒殺業務怎樣防止超賣;