A service that supports coding interviews.
- 考え方の可視化
既存サービスが提供する機能は大まかに以下の2点。
- 基本的知識のチェック
- 問題に対して答えを算出するコードとそのチェック
コーディング面接は、以下の点をチェックするべき。
- 考え方・・・★
- 経験・・・★
- 組織文化との相性・・・★
- コーディングスキル
- 基本知識
なお、コーディングスキルと基本知識については既存サービスとの同質化すべき点であることに留意。
問題の提示がされたあとに、以下のフローで双方向のコミュニケーションができると良い。
- 問題に対する例を記述したり図で問題への理解を示す
- 単純な解法(ブルートフォースな解法)を書いてみる
- 上記の解法を最適化する
- 擬似言語または自身の得意な言語で表現してみる(※ 最初から詳細な実装に入らなくても良い)
- テストを書く(※ ただし、テストは単純な解法のときから書いていても良い)
- コードのボトルネックの有無(存在すればその箇所を指摘)
- 不要な操作の有無(存在すればその箇所を指摘)
- 重複している処理の有無(存在すればその箇所を指摘)
- BCR(Best Conceivable Runtime)の考察
- 正しい入力とそうでない入力に対して適切な解を示せること
- 実行時間とメモリ消費に対して効率的であること
- シンプルであること
- 可読性が高いこと
- 保守しやすいこと(責務の分離や変更時の影響範囲を最小限にしていること)