Kacam.net

面接即答

MVCC 是怎么实现的

「多版本,读不加锁」—— 那「多版本」具体存在哪儿?

プロンプトをコピーして、どれか一つを選んでください。答えを並べるのではなく、面接官として場面ごとに問い詰めてきます。

アプリを入れたスマートフォンなら、そのままアプリが開きます。WeChat の中では外部アプリを開けないので、先にブラウザで開いてください。

コピーした文章の末尾には採点用の答えが付いています。自分で先に読まないこと —— 自分で導き出せたかどうかが肝心です。

答到「读不加锁」只是起点。第二幕开始拆结构:一行数据背后挂着什么、每一版怎么串起来、判断该看哪一版靠哪几个字段。

第三幕给一个具体的并发场景要你走一遍:谁能看到谁的修改、为什么。这一层答不上来的,通常只背了结论。

第五幕问边界:哪些读根本不走这一套、长事务为什么是大忌、代价具体压在哪里。默认按 MySQL / InnoDB 讲。

★★★★☆ · 約 40 分 · 問われるのは:版本怎么存、可见性怎么判、两种读的分界、长事务的代价

この一問が寄りかかる領域

一貫性と分離 並行とロック

この問題はやったか

ログインすると「この問題はやった」を記録できます。次に来たとき、いつやったか分かります。

やった人の手記

まだ誰も書いていません。やり終えたら、そのやり取りで何が出てきたか書いてください —— どの場面で詰まったか、あとで変えた結論はどれか。

ログインすると手記を書けます。

使い方

これは講義ではなく詰問です。模擬面接そのものなので、答えられないのは普通の結末であり、助け舟も出しませんし、言いよどんだ続きを代わりに話したりもしません。面接の練習ではなくその分野を理解したいなら、「コンピュータシステム」「データベース」「アルゴリズム」へ —— あちらは導く姿勢です。

定番の一問で 40 分もつ理由:五層のはしご

  • 第一層・定義 —— 各語が何を指し、違いは何か。答えられなければ、覚えていないということ。
  • 第二層・仕組み —— その違いを生んでいるのは、どの構造のどの一歩か。答えられなければ、結論だけ暗記したということ。
  • 第三層・数字 —— どれだけ違う? 何マイクロ秒、何倍、I/O 何回。答えられなければ、手を動かしていないということ。
  • 第四層・選択 —— 具体的な場面でどちらを選び、代償は何で、その選択が誤りになるのはどんなときか。答えられなければ、使えていないということ。
  • 第五層・限界 —— いま話した説明が成り立たなくなるのはどんな場合か。答えられなければ、網羅はしていても本当には分かっていないということ。

合格ライン:第四層に届いて面接を通るレベル、第五層に届いて本当に分かっているレベル。第一層で止まるものはすべて「暗記」と記録されます。

全六幕。最初と最後はこのシリーズだけの形

  • 第一幕では遮らず、論評せず、ヒントも出しません。いまのあなたの答えを一気に話し切らせ、それを基準版として記録します。黙っているのは意図的であって、聞いていないわけではありません。
  • 中間の四幕ははしごを下りていきます。主戦場は第三幕、仕組みと数字です。
  • 最後の幕は 60 秒を計って話し直させ、冒頭の版と並べて比べます —— 面接で差し出すものは「分かっています」ではなく、その場で口に出せる一続きの話だからです。

始め方

  1. 一つ選んで開き、プロンプトをコピーします。
  2. まっさらな会話に貼り付け、何も言わずに最初の質問を待ちます。
  3. そこから面接のつもりで、いまのあなたの答えを一気に話します。出来が悪くても構いません —— それが最後に比較する基準版です。
  4. その後は追及が始まります。答えられないのは普通の結末です。学習教材ではなく模擬面接なので。

途中でいつでも使える五つの合図

  • 跳过 すぐ次の幕へ
  • 提示 答えではなくヒントを一つ
  • 直说吧 完全な答えをそのまま話して
  • 重讲 最後の幕に飛び、60 秒版を録り直して冒頭の版と比べる
  • 复盘 すぐ締めに飛び、振り返りカードを出す

三つの落とし穴

  • コピーした本文の末尾には手の内が付いています。先に読まないこと。この一群の手の内には「暗唱の指紋」という欄があり、あなたが口をついて出すであろう言い回しそのものが書かれています —— 読んだら練習になりません。
  • 数字を出すべきところに形容詞を出さないこと。「かなり速い」「ほぼ無視できる」と言えばその場で数字を求められます。結論は言えても桁を言えないものは、すべて暗記と記録されます。
  • 最後の二群は言語に紐づいています。Java を書く人は Java の群、Go を書く人は Go の群へ。互いの翻訳版ではなく設問も別なので、両方やる必要はありません。

来週バックエンドの面接なら、プロセスとスレッド → TCP と UDP → なぜ B+ 木 → 分離レベル → キャッシュの三つの崩れ方 → 冪等、の順に。出題頻度が最も高く、しかも重なりません。面接で打ちのめされて穴を埋めたいなら、まず「URL を入力してから画面が出るまで」を —— 弱点を横一列に洗い出してくれるので、その結果から次を選べます。