アルゴリズム勉強会グループにて出題された過去問置き場です
- 出題者が問題と簡単なExampleを示す。
- 回答者が質問をする
- エッジケースについて
- データの構造について
- 回答者は回答を考える。まずは非効率な方法でも良い
- 簡単な例をホワイトボードに書きながらより効率的な方法を考える
- 回答者の問題の解き方に対して出題者がOKってなったら実装を開始する
- PCにてコードを書く
- できたら頭の中でテストをしてみる
- 実行する
実行しながらデバッグは普通の開発では当たり前だが、ここでは面接を想定しているので実行する環境がないかもしれないのである程度自分の頭でデバッグできるようにしたい。 あとPCにデバッグさせるとなんかよくわからんけど動いた的な現象もあるし、頭で考えるほうが本質的な理解も深まる(はず)
- 出題者が問題をだす
- 回答者が疑問点やスコープについての質問をする
- 最小の構成を考えてホワイトボードに書く
- 回答者の考えたシステムをみながら追加の質問を出題者が出す。回答者がそれに答えるを繰り返す。(アクセスが100倍になったら。など)
- 一通り終わったら出題者なりのシステムデザインを教える
基本はアルゴリズムの問題(難しいアルゴリズムを使わなくても解ける)がいいと考えてる。 理由
- バイナリサーチとかくらいならいいけどあんまり難しいとそもそも面白くない
- 知識もだけど考え方、より効率の良い計算方法を探したり実装する力を向上させたい
またアルゴリズムにかかわらず以下のような問題は結構良いと思う (問題出す方のハードルも上がりそう)
- オブジェクト指向のデータ構造の設計
- SQL
- システムデザイン(チャットサーバーをどのように設計するかなど)
などなど。プログラマとして強くなれるような問題
楽しもう