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

More Related Content

Viewers also liked (12)

PPTX
C#とILとネイティブと
信之 岩永
 
PDF
シリコンバレー 面接体験
paiza
 
PDF
DeclarativeSql
Takaaki Suzuki
 
PPTX
Modern .NET
信之 岩永
 
PDF
第5回 cogbot勉強会!
貴志 上坂
 
PPTX
C#や.NET Frameworkがやっていること
信之 岩永
 
PDF
C++ マルチスレッドプログラミング
Kohsuke Yuasa
 
PDF
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
Yoshio Hanawa
 
PDF
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
 
PPTX
めとべや東京#4 LT「WP8.1アプリ開発のススメ」
OD-10Z Midorikawa
 
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
 
PDF
C# でブロックチェーン実装
Yuto Takei
 
C#とILとネイティブと
信之 岩永
 
シリコンバレー 面接体験
paiza
 
DeclarativeSql
Takaaki Suzuki
 
Modern .NET
信之 岩永
 
第5回 cogbot勉強会!
貴志 上坂
 
C#や.NET Frameworkがやっていること
信之 岩永
 
C++ マルチスレッドプログラミング
Kohsuke Yuasa
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
Yoshio Hanawa
 
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
 
めとべや東京#4 LT「WP8.1アプリ開発のススメ」
OD-10Z Midorikawa
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
 
C# でブロックチェーン実装
Yuto Takei
 

Similar to Coding Interview (20)

PDF
Scrum,Test,Metrics #sgt2016
kyon mm
 
KEY
Cobolでもやりたいテスト自動化
daisukhayash
 
PDF
型無しラムダ計算―OCamlによる実装―
Proktmr
 
PDF
VBAとPythonで始める数値計算教育
Katsuhiro Morishita
 
PPTX
TeamLabLT20120630
tayama0324
 
KEY
a-blog cms初心者が テンプレート作るまで
girigiribauer
 
PPTX
コード祭り予選突破練習会
rian_tkb
 
PDF
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
 
PDF
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
Developers Summit
 
PDF
AtCoder Beginner Contest 007 解説
AtCoder Inc.
 
PDF
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
 
PDF
TDD を自分の道具にしよう
yujiorama
 
PDF
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
 
PDF
最近の単体テスト
Ken Morishita
 
PDF
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
PPTX
JOI-summer-seminar
chigichan24
 
PDF
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
PDF
AtCoder Beginner Contest 015 解説
AtCoder Inc.
 
PDF
PFPファシグラ(2009/07/03)
nishikawa_makoto7
 
PDF
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
KazukiNishizono1
 
Scrum,Test,Metrics #sgt2016
kyon mm
 
Cobolでもやりたいテスト自動化
daisukhayash
 
型無しラムダ計算―OCamlによる実装―
Proktmr
 
VBAとPythonで始める数値計算教育
Katsuhiro Morishita
 
TeamLabLT20120630
tayama0324
 
a-blog cms初心者が テンプレート作るまで
girigiribauer
 
コード祭り予選突破練習会
rian_tkb
 
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
 
【デブサミ福岡B5】コードレビューの進め方~全員で行う品質の維持~
Developers Summit
 
AtCoder Beginner Contest 007 解説
AtCoder Inc.
 
Pythonで始めた数値計算の授業@わんくま勉強会2018-04
Katsuhiro Morishita
 
TDD を自分の道具にしよう
yujiorama
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
 
最近の単体テスト
Ken Morishita
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
JOI-summer-seminar
chigichan24
 
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
AtCoder Beginner Contest 015 解説
AtCoder Inc.
 
PFPファシグラ(2009/07/03)
nishikawa_makoto7
 
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
KazukiNishizono1
 
Ad

More from 信之 岩永 (20)

PPTX
YouTube ライブ配信するようになった話
信之 岩永
 
PPTX
C# 9.0 / .NET 5.0
信之 岩永
 
PPTX
C# コンパイラーの書き換え作業の話
信之 岩永
 
PPTX
Unicode文字列処理
信之 岩永
 
PPTX
C# 8.0 非同期ストリーム
信之 岩永
 
PPTX
C# 8.0 null許容参照型
信之 岩永
 
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
 
PPTX
async/await のしくみ
信之 岩永
 
PPTX
.NET Core 2.x 時代の C#
信之 岩永
 
PPTX
C# 7.2 with .NET Core 2.1
信之 岩永
 
PPTX
C#言語機能の作り方
信之 岩永
 
PPTX
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
 
PPTX
それっぽく、適当に
信之 岩永
 
PPTX
.NET Compiler Platform
信之 岩永
 
PPTX
Deep Dive C# 6.0
信之 岩永
 
PPTX
Orange Cube 自社フレームワーク 2015/3
信之 岩永
 
PPTX
Code Contracts in .NET 4
信之 岩永
 
PPTX
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
PPTX
C#/.NETがやっていること 第二版
信之 岩永
 
PPTX
プログラミング .NET Framework 第4版
信之 岩永
 
YouTube ライブ配信するようになった話
信之 岩永
 
C# 9.0 / .NET 5.0
信之 岩永
 
C# コンパイラーの書き換え作業の話
信之 岩永
 
Unicode文字列処理
信之 岩永
 
C# 8.0 非同期ストリーム
信之 岩永
 
C# 8.0 null許容参照型
信之 岩永
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
 
async/await のしくみ
信之 岩永
 
.NET Core 2.x 時代の C#
信之 岩永
 
C# 7.2 with .NET Core 2.1
信之 岩永
 
C#言語機能の作り方
信之 岩永
 
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
 
それっぽく、適当に
信之 岩永
 
.NET Compiler Platform
信之 岩永
 
Deep Dive C# 6.0
信之 岩永
 
Orange Cube 自社フレームワーク 2015/3
信之 岩永
 
Code Contracts in .NET 4
信之 岩永
 
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永
 
C#/.NETがやっていること 第二版
信之 岩永
 
プログラミング .NET Framework 第4版
信之 岩永
 
Ad

Recently uploaded (8)

PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 

Coding Interview