プログラマーは仕事でプレッシャーを受けるだけでなく、新年の間もプレッシャーにさらされます。クラスメートは自分の給料について尋ねられることを最も恐れています。。。春節が終わる前に面接に行ったのですが…
インタビュアーは、この生命を脅かす一連の12の質問をしましたが、誰がそれに耐えることができますか?
⏬
インタビュアー:クラスメート、すべてのプロジェクトでRedisを使用していると思いますが、Redisの使用方法を教えてください。
クラスメートA:主にキャッシング、分散セッション、読み取り/いいねカウント統計に使用されます
インタビュアー:さて、Redisはどのように永続性を実行しますか?
クラスメートA:bgsaveはRDBバイナリファイルに対して完全な永続性を実行し、aofは増分永続性を実行し、テキストプロトコルデータを格納します。
インタビュアー:彼らの長所と短所は何ですか?
学生A:Rdbバイナリファイルは起動と読み込みが速く、aofはコマンドを再生する必要があるため、速度が遅くなります
インタビュアー:Redisの永続化中、メインプロセスは引き続き外部サービスを提供できますか?
同級生A:はい
インタビュアー:Redisは新しく書き込まれたデータをどのように処理しますか?このデータは直接永続化されますか?
同級生A:。。。これは可能です!
インタビュアー:Reidsは最大メモリサイズを設定できます。データが最大メモリ制限に達した場合、Redisはそれをどのように処理しますか?
学生A:除去戦略LRUまたはLFU除去戦略を構成できます。
インタビュアー:RedisのLRUアルゴリズムの実装原理について話していただけますか?
学生A:これはそれほど明確ではありません。
インタビュアー:Redisのコアデータ型は何ですか?
クラスメートA:文字列、ハッシュ、リスト、セット、zset。
インタビュアー:データを格納するために文字列型とハッシュ型をどのように選択しますか?
クラスメートA:文字列多数のフィールドオブジェクトで特定のデータを取得するには、全体のデータを取得する必要があり、クライアント側で逆シリアル化が完了し、ハッシュは指定されたフィールドを取得してデータを取得できます。したがって、アクセスのニーズに応じて選択してください。
インタビュアー:他に考慮事項はありますか?
同級生A:いいえ
インタビュアー:zsetの基本的な実装原則を理解しましたか?
学生A:時計をジャンプすることで実現しているようです!
インタビュアー:その実装原理と時間計算量分析について話していただけますか?
学生A:これはそれほど明確ではありません。
インタビュアー:キャッシュの浸透について話していただけますか?
学生A:照会するデータがキャッシュに存在せず、データベースに直接ヒットします。そのような要求が多数ある場合、それらすべてがデータベースに侵入し、データベースがクラッシュします。
インタビュアー:解決策はどうですか?
学生A:ブルームフィルターを使用してブロックできます。
インタビュアー:ブルームフィルターの実現原理は何ですか?何か教えてもらえますか?
学生A:これはそれほど明確ではありません。
インタビュアー:さて、私たちの会社のインタビューに参加していただきありがとうございます、今日は最初にここに行きましょう
面接で常にRedisの問題が発生するのはなぜですか?Redisは、基本的な設計原則を明確に理解していますが、それだけでは言えませんか?将来、これらのRedisインタビューの質問に遭遇した場合はどうすればよいですか?考えてみてください!
Redisの同時実行性の高いアーキテクチャ設計とソースコード分析コースの内容:
セクション1:ダブルイレブンセキルシステムバックエンドRedis高同時実行アーキテクチャ実際の戦闘
1.同時実行性の高いシナリオで売られ過ぎのバグの実際の戦闘を再現します
2.スパイクシナリオでの実用的なJVMレベルのロックと分散ロック
3.分散ロックのRedissonフレームワークの実際の戦闘
4. RedissonソースコードからLuaを分析して、ロックの原子性の問題を解決します
5.Redisマスタースレーブアーキテクチャのロック障害の問題とRedlockの詳細な説明
6.ダブルイレブンプロモーション中に分散ロックのパフォーマンスを100倍に向上させる方法
7. Redisキャッシュクラスターアーキテクチャを使用して、11の主要なトラフィックピークの2倍に抵抗します
8. CAPの観点からRedis&Zookeeperロックアーキテクチャの類似点と相違点を分析します
9.Redisキャッシュとデータベースの二重書き込みの間の不整合に対する究極のソリューション
セクション2:1億トラフィックのSinaWeiboとWeChatRedisアーキテクチャの戦闘
1.Redisコアデータストレージ構造
2. int&embstr&rawをエンコードするRedisの基礎となる文字列の詳細な説明
3.Redisの下部圧縮リストとジャンプテーブルとハッシュテーブルの詳細な説明
4.Redisの下部にあるZSetによって実装された圧縮リストとジャンプテーブルを選択する方法
5.WeiboおよびWeChatメッセージフローRedisの実装
6. WeChatのいいね、コレクション、タグはRedisに基づいて実装されています
7. WeiboとWeChatの友達は、Redisの実装に基づくモデルに従います
8.Weiboの近くの人々はRedisに基づいています
9.Redisでeコマースショッピングカートを実装する方法
10.Redisでeコマースレコメンデーションシステムを実装する方法
セクション3:基盤となるCソースコードを深く掘り下げて、Redisの高性能データ構造を説明します
1.Redisのコアデータ構造の紹介
2.10億レベルのユーザーの毎日のライブ統計ビットマップの実際の戦闘
3.Redisブロッキングキューの基本的な実装原則の分析
4.高性能遅延キューを実装する方法
5.ジオハッシュに基づいて近くの人を見つける
6.ZSetボトムジャンプテーブル実装のCソースコード分析の詳細な分析
7.Redisコアデータ構造設計の詳細なCソースコード分析
8、シングルスレッド最適化と比較したRedis6.0マルチスレッド