Successfully reported this slideshow.
Your SlideShare is downloading. ×

Coding Interview

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 17 Ad

Coding Interview

Download to read offline

2014/5/31 めとべや東京 にて発表。
コーディング面接を題材にしたライブコーディング(の前ふり的なスライド)
コーディング内容(台本、あるいは、3分間クッキング方式の既製品)はOneDriveに: http://1drv.ms/T1uCCd

2014/5/31 めとべや東京 にて発表。
コーディング面接を題材にしたライブコーディング(の前ふり的なスライド)
コーディング内容(台本、あるいは、3分間クッキング方式の既製品)はOneDriveに: http://1drv.ms/T1uCCd

Advertisement
Advertisement

More Related Content

Similar to Coding Interview (20)

Advertisement

More from 信之 岩永 (20)

Recently uploaded (20)

Advertisement

Coding Interview

  1. 1. コーディング面接 岩永 信之
  2. 2. 目的・今日やること • 日本でももっとコーディング面接はやらないか な • 実際に出るような問題で、ありそうな流れの例 をライブ コーディング
  3. 3. 出題例 • 文字列の中から回文になっている部分をすべて 列挙 abcbad a, b, c, bcb, abcba
  4. 4. ポイント • 見られるのは計算機科学的なところ • アルゴリズムを考えられるか • 計算量やテストも考えているか • 過程も見られる • どういう考えでコードを書いているか • 試験監との対話
  5. 5. やること • まずはシンプルな実装を • 計算量とか気にせずとりあえず結果出したい • 後々、アルゴリズムを改善していくうえでのテスト に使いたい
  6. 6. ここまで • アルゴリズムがらみではyield return便利 • この手の問題にはデータの列挙が非常に多い • 「substringの列挙」と「回文判定」を分けれる
  7. 7. やること • ちょっとコード整理 • 1で作ったコードはテスト用にとっておきたい • → SimpleImplementationクラスに移動 • オーダーとか抜きにして軽く書き換え&テストして みる • string.Substringは呼ぶたびに文字列のコピーを作るという 問題が • 回文判定を前にもってきて、必要な時にだけSubstringする ように • →Implementation1クラス追加
  8. 8. ここまで • とりあえず下準備完了 • stringのコピー作らないように • 条件判定をデリゲートで渡して前にもってくる • テスト • 1で作ったコードとSequenceEqual • とりあえずテストデータは数パターン • 後で時間があればもっとテストケース増やす
  9. 9. やりたいこと • 最適化の基本は計測 • ループの一番深いところにcount++仕込む • Stopwatch
  10. 10. ここまで • 判定の順序変えただけなので • 比較回数は変わってない • 文字列コピーの頻度が減るので • 実行時間はかなり減る • 元のコードは常時O(n3) • 新しいコードは平均的にはO(n2)
  11. 11. やりたいこと • ようやくまともにアルゴリズムを考える 回文 非回文 回文a a 非回文a a 回文の両脇だけ見れば 1周り大きい回文の 判定できる 回文a b 回文 非回文 非回文 回文でないものを中心 として別の回文ができ ることはありえない
  12. 12. ここまで • 元のアルゴリズム • 平均O(n2)、最悪O(n3) • ちゃんとしたアルゴリズム • 平均O(n)、最悪O(n2)
  13. 13. 最後に • この内容は下準備ありなので手際よくやれて当 然 • あんまりテスト コードに気をとられてるとそれだ けで時間切れになるかも • 先にどういうコード書きたいかのアイディア伝える • 本番中にいいアルゴリズムを思いつくとも限らない けども、対話しながら進める

×