科目別に学ぶ
コーディング面接
コーディング面接では、計算量、データ構造、アルゴリズムのパターン、設計問題を暗記します。Lumiは、ホワイトボードの前で固まらずに答えられるようになるまで、あなたに問い返します。

この科目をカードにする方法
データ構造ごとに、各操作のコストを書いたカードを1枚ずつ作り、アルゴリズムのパターン(two pointersやsliding windowなど)ごとに、それを見分けるサインを書いたカードを1枚ずつ作ります。設計については、コンポーネント(キャッシュ、メッセージキュー、ロードバランサーなど)ごとに、その役割を書いたカードを1枚ずつ作ります。罠は、パターンを一切定着させずに100問解いて、同じ種類の問題でつまずくことです。Lumiでは、解答を見る前に記憶から説明し、その想起が反射を作ります(Roediger と Karpicke, 2006)。パターンには数日空けて戻り、常に計算量を声に出して言いましょう(Cepeda ら, 2006)。
丸暗記が必要なこと
- 通常の操作の時間計算量と空間計算量、Big O記法。
- データ構造、配列、連結リスト、スタック、キュー、ハッシュテーブル、木、グラフ。
- アルゴリズムのパターン、two pointers、sliding window、再帰、動的計画法。
- 古典的なソートと走査、そのコスト。
- 設計問題の構成要素、キャッシュ、メッセージキュー、ロードバランサー、データベース。
Lumiが覚えるのをどう手伝うか

あなたはカードをLumiに教えます。計算量、構造、パターン、設計。Lumiはあなたと同じように時間とともに忘れ、忘れる直前にあなたに問いかけます。面接が近づくと、あまり得意でない分野(たとえば動的計画法やグラフ)に霧がかかり、Lumiはそこを最初に尋ねます。あなたはパターンをすぐに見分けて到着します。
例のカード
自分で書くとしたらこうなる3枚のカードと、Lumiが期待する答え。
二分探索の計算量は?
ソート済み配列でO(log n)。
後入れ先出しで動作する構造は?
スタック。
sliding windowを示すサインは?
最適化すべき連続部分配列や部分文字列に関する質問。
例題カード
試してみてください。Lumiがブラウザで穴埋め問題に変えます。
コーディング面接・このカードをLumiに教える
ソート済み配列の二分探索はO(log n)時間で実行されます。ハッシュテーブルは平均O(1)時間でアクセスできます。スタックは後入れ先出しで動作します。グラフの幅優先探索はキューを使います。
Lumiからの問題
ソート済み配列の二分探索はO(_____)時間で実行されます。
抜けている単語を選びましょう


正解してLumiを光らせましょう
事実が抜け落ちると、ランプは暗くなります。
よくある質問
- 面接前に何問解くべき?
- 問題数よりも、そこから何を定着させるかが重要です。各問題の後、パターンをカードに書き、Lumiに問い返してもらって定着させましょう。
- システム設計の問題はどう復習する?
- コンポーネントごとに、役割とトレードオフを書いたカードを1枚ずつ。Lumiが問い返し、あなたは声に出して答えを組み立てます。
- Lumiは問題プラットフォームでの練習の代わりになる?
- いいえ、両者は補完し合います。プラットフォームは問題を提供し、Lumiはそこから得られる計算量やパターンを定着させます。
次に読む
出典
- Roediger, Karpicke (2006). Test-enhanced learning. Taking memory tests improves long-term retention. Psychological Science, 17(3). doi.org/10.1111/j.1467-9280.2006.01693.x
- Cepeda, Pashler, Vul, Wixted, Rohrer (2006). Distributed practice in verbal recall tasks. A review and quantitative synthesis. Psychological Bulletin, 132(3). doi.org/10.1037/0033-2909.132.3.354
これをLumiに教える
コーディング面接のノートをLumiに渡すと、ちょうどいいタイミングで質問として返してくれます。


