メニューを閉じる

テクノデジタルグループ

メニューを開く

2018.04.26

その他

Rubyでホワイトボードの問題を解いてみましょう

Canadian Devです。

もう春が来ましたね。日本では入学、入社、ニュースタートの時期ですね。日本人には毎年あるもので普通だと思われるでしょうが、多くの新卒者が会社に入ることが僕にとってまた新しいことです。就職活動というのも欧米と違うんだなと感じました。欧米のIT業界の就職活動について思い出されます。

ホワイトボード

ホワイトボードの面接をご存知ですか?

欧米の多くのIT企業では面接の一部としてホワイトボードの面接があります。ホワイトボードの面接が何かというと、インタビュアーの前でホワイトボードにコードを書いて問題を解く面接です。

カナダではホワイトボード面接を受ける場合が少なくはありません。問題をその場で知ることになるので、何も準備ができなくてとても緊張します。あまりに緊張してしまうと頭が真っ白になって簡単な問題でも解けなくなります。

だから、落ち着いてホワイトボードでゆっくり自分の考え方を説明しながら問題を解いていくほうがいいとよく言われます。何より応募者がロジックの考え方をちゃんと表現できるのかを把握したいからやらせる面接なので、黙々と行うだけではよくないです。

僕はホワイトボードの問題を解いたことが数回あります。その一つの問題について書きたいと思います。

問題

下記のような英語の文章を解析して文章に出てくる単語と、回数が2つ以上だったら、単語の回数をまとめる。

It was a dark and stormy night. Suddenly, a shot rang out! A door slammed. The maid screamed. Suddenly, a pirate ship appeared on the horizon! While millions of people were starving, the king lived in luxury. Meanwhile, on a small farm in Kansas, a boy was growing up.

回答

一番分かりやすい解決法はテキストを配列に変換して再帰処理でハッシュに単語をキーで、回数をバリューで記録することでしょう。問題をRubyで解くと:

def get_word_instances(text)
  record = Hash.new
  text.split(' ').each do |word|
    word = word.downcase.scan(/[a-z]/).join #英文字だけ受け入れる。
    if record[word]
      record[word] += 1
    else
      record[word] = 1
    end
  end
  record.reject { |k, v| v <= 1 }
end

英語の文章を引数としてget_word_instancesに渡して実行すると、下記のハッシュが返ってきます。

{
  "was"=>2,
  "a"=>6,
  "suddenly"=>2,
  "the"=>3,
  "on"=>2,
  "in"=>2
}

この問題にはバリエーションが沢山あります。

  1. e」文字が入っている単語の回数を返す。
  2. 一番回数が多い3つの単語を返す。
  3. 母音数と子音数が同じな単語の回数だけ返す。

まとめ

ホワイトボードは厳しいプロセスだし、技術力が必ずしも判断できるとも限らないので、ホワイトボードの面接をしないIT企業もあります。ですが、ホワイトボードの面接はコミュニケーション力、問題解決能力、クリエイティビティなどを訓練させることではないかと思っています。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事