Kacam.net

世界を見る

面接即答:定番の一問を、五層下まで掘る

お題は面接官が実際に口にするあの一文 ——「プロセスとスレッドの違いは」「TCP と UDP の違いは」。用語の説明はゴールではなく出発点です。まず今のあなたの答えを記録し、五層のはしごを一段ずつ下り、最後に 60 秒で話し直させます。

このプロンプト集は今のところ简体中文だけです。

使い方

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

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

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

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

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

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

始め方

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

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

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

三つの落とし穴

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

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

OS と並行処理

进程和线程的区别
「进程是资源分配的最小单位,线程是 CPU 调度的最小单位」—— 然后呢?
★★★☆☆ · 約 45 分
同步、异步、阻塞、非阻塞
「同步就是要等,异步就是不用等」—— 这句说完,问题才刚开始。
★★★★☆ · 約 40 分
死锁:怎么产生、怎么破、怎么查
四个条件背得滚瓜烂熟 —— 那你们代码里真的破了哪一条?
★★★☆☆ · 約 40 分
乐观锁和悲观锁
「乐观锁假设不会冲突」—— 那你说得出你们那张表的冲突率吗?
★★★☆☆ · 約 35 分
线程池的参数怎么定、满了会怎样
参数表说得出来的人很多,说得出这几个参数谁先谁后的很少。
★★★☆☆ · 約 40 分

データベース

四种隔离级别、幻读到底是什么
「可重复读解决了幻读」—— 真的解决干净了吗?给个反例。
★★★★☆ · 約 40 分
MVCC 是怎么实现的
「多版本,读不加锁」—— 那「多版本」具体存在哪儿?
★★★★☆ · 約 40 分

キャッシュとメッセージング

分布式锁怎么做才对
「setnx 加个过期时间就行」—— 然后它会一个一个坑问过来。
★★★★☆ · 約 40 分

分散システムと設計

限流:三种算法和真实部署
三种算法都说得出来 —— 那你那个阈值是怎么定的?
★★★★☆ · 約 40 分

Java と JVM

HashMap 的原理、它的线程不安全表现在哪
「数组 + 链表 + 红黑树,负载因子 0.75」—— 那容量为什么必须是 2 的幂?
★★★★☆ · 約 40 分
synchronized 和 Lock、锁升级四个状态
锁升级四个状态背得出来 —— 那每一级到底省了哪一笔开销?
★★★★☆ · 約 40 分

Go とランタイム

GMP 调度模型
「G 是协程、M 是线程、P 是处理器」—— 那为什么非要有 P?
★★★★☆ · 約 40 分
channel 的底层和 select
「无缓冲 channel 会阻塞」—— 它是一个长度为 0 的队列吗?
★★★★☆ · 約 40 分
defer、panic、recover
「defer 延迟执行、后进先出」—— 那它的参数是什么时候求值的?
★★★★☆ · 約 35 分
このプロンプトはオープンソースです 本文は公開リポジトリ kacam-net/hero-prompts で管理しています。追及が甘い、手の内が一行足りない —— そう思ったら直しに来てください。サイトに載せるかどうかは別の判断で、こちら側の一覧が決めます。