评审一段缓存代码
读缓存、写数据库、删缓存 —— 这三行的顺序里藏着一小时的脏数据。
プロンプトをコピーして、どれか一つを選んでください。答えを並べるのではなく、面接官として場面ごとに問い詰めてきます。
アプリを入れたスマートフォンなら、そのままアプリが開きます。WeChat の中では外部アプリを開けないので、先にブラウザで開いてください。
コピーした文章の末尾には採点用の答えが付いています。自分で先に読まないこと —— 自分で導き出せたかどうかが肝心です。
三个函数:读商品、更新商品、取热榜。都是日常写法,也都是线上真出过事的写法。
这一份追一个别的地方很少追的问题:脏数据会在缓存里待多久。 一次不一致和「一小时都不一致」是两回事,而说不出后面那个数的人,改法通常也是错的。
第三幕的中心问题是:先删缓存再更新库有窗口,那反过来就没有了吗? 两种顺序都有窗口,只是差几个数量级 —— 说得出这一句才算过。
主に仕込まれているもの
この本文をリポジトリで見る (ファイルの末尾が手の内です。開けば目に入ります)
この問題はやったか
ログインすると「この問題はやった」を記録できます。次に来たとき、いつやったか分かります。
やった人の手記
使い方
材料はこちらで用意しています:一見動きそうな数十行に、深刻度順で十個ほどの欠陥。だからこのシリーズは自分のコードが要りません。開けばすぐ始められます。
姿勢は追及型です:ネタバレなし、褒めなし、答えられないのは普通の結末。「ここに競合がある」と言っても逃がしてくれません —— 二列のタイムラインと、被害の規模を求められます。
始め方
- 一つ選び、開いて、プロンプトをコピーします。
- 新しい空のチャットに貼ると、まずそのコードをそのまま提示してきます。
- 自分で読み、見つけた問題を全部言い切ります —— 第一幕では遮りもヒントもありません。終わったら「以上です」と言います。
途中でいつでも使える四つの合言葉
跳过すぐ次の幕へ提示方向だけ、答えは言わないで直说吧この点の完全な答えを言って、そのあと代償を追及して复盘すぐ締めのカードへ
締めに出るのは数字
発見率:自分でいくつ見つけたか、全部でいくつか、うち誤検出はいくつか。もう一つ、もっと厳しい数字も出ます —— 見落とした中で最上位の深刻度(金が消える/データが漏れる/サービスが落ちる)がいくつあったか。合計点よりこちらが効きます。
三つの落とし穴
- 末尾の底牌がその欠陥一覧です。先に読まないこと —— 読んだ時点でこの一つは使い切りです。
- 命名やスタイルを指摘しないこと。ここで問われるのは金が消えるか、データが漏れるか。スタイルの指摘は誤検出として記録されます。
- 褒め始めたら「褒めるな」の条を指摘してください。肯定された感覚は「何を見落としたか」をかき消します。
まずは送金の回から。欠陥が最も密です。日々 API を書いているなら一覧エンドポイントへ直行を —— 権限の抜けと並び替えパラメータの注入は、自分のコードに同型を見つけやすいものです。どれをやっても、あとで自分のリポジトリを検索してみてください。本当の成果は締めに出る三つの持ち帰り項目です。
ログインすると手記を書けます。