Scala開発者へのインタビュー方法[非公開]


17

Scalaプログラマーはどのようにインタビューを受けていますか?Scala開発者にインタビューするときにインタビュアーが探す側面は何ですか?


10
はしごの上に立っている間にFizzBu​​zzをコーディングする必要があります。
ジョブ

2
FizzBu​​zzがStateモナドとIOモナドを使用している場合、@ Job Extraポイント!:-)
ダニエルC.ソブラル

Scala開発者への質問をいくつか見つけて、自分で答えを書くことにしました。誰かが興味がある場合:pedrorijo.com/blog/scala-interview-questions
pedrorijo91

回答:


17

まず、Scala開発者が必要な理由を考えます。本当に必要なのはScalaですか?Scalaに付属しているもの(IDE、ビルドツール、ライブラリ、Javaの上の別の複雑なレイヤーなど)について考えてください。質問に戻ります。理論的な理解と実践的な能力という2つの側面があります。「理論」に惑わされないでください。Javaでは実用性が重要であるのと同様に、Scalaでは重要です。

理論的

  • 彼らが実際に機能的なパラダイムが何であるかを知っているかどうかを確認してください。哲学と実践における2つのパラダイム(FPと命令型)を比較するように依頼します。FPを完全または部分的にサポートしている言語の例を提供できれば、プラスになります。

理論と実践が混ざり合っている

  • 実際に関数型プログラミングを正しい方法で実行できるかどうかを確認してください。リスト、マップ、zip、再帰について質問してください。次に、クロージャー、ラムダ、リダクション、高階関数、不変性があります。

実用的

  • 命令型コードスニペットを適切な機能的代替にリファクタリングできるかどうかを確認します(上記を参照)。これらの線に沿っていくつかの数学または何かを実装するループを試してください。

  • 機能的なスタイルと命令的なスタイルの好みを見つけてください。より機能的なスタイルを選択しますが、開発者側で極端にならないように注意してください。

  • Scalaライブラリ(Lift、ディスパッチなど)とツール(SBT、fsc、IDEAなど)についてどれだけ知っているかを確認してください。

  • Java(コードおよびツール)をどの程度活用できるかをご覧ください。Scalaは、より深刻な環境では特にJavaと緊密に結合されます。これを知ることは大きなプラスです。

理論的

  • ScalaをJava(PHP、C ++、Objective Cなど)と比較するよう依頼し、Scalaの何が問題なのかを伝えるように依頼します。問題と利点を理解しているかどうかを確認してください。Scalaの短所が問題を引き起こす可能性のある現実の例を挙げてもらいます(例えば、新しいJoeが仲良くするのは難しい、Javaに比べてサポートが非常に限られているため未熟です)

実用的

  • コミュニティに接続しているかどうかを確認します。Martin OderskyとDavid Pollakについて質問してください。少数のScalaプロジェクトに名前を付けて説明してもらう(Facebook、Twitter、FourSquare、DBPedia、DBPedia SpotLight)。これらのプロジェクトでScalaがどのように使用されているかを彼らが知っているかどうかを確認してください。彼らは記事を読んだり、ビデオを見たりしましたか?

  • 本について彼らに尋ねる(ほんの数例しかない)。彼らが知っているほど、より良い。

  • 最後の注意点として、素晴らしい言語には間違った人々を引き付けるこの奇妙な可能性があると言えます。すべての間違った理由でScalaに来る種類に注意してください。ここにいくつかあります:

    • Scalaは特権者向けです(私は賢く、他のJoesとはとても違うと感じています。まったく新しい光沢のある博士号を取得しました。 )。このタイプは、深刻なプロジェクトでは生産的ではなく、うまくやっていくのは困難です。
    • 私はScalaの構文が大好きで、コードを書く機会があればどこでもDSLを書きたいと思っています。この種は、最後のドロップに対するScalaの特性を破壊的な方法で活用するのが大好きです。彼らは、判読できなくなるまで、不可解で過度に簡潔なコードを書くのは素晴らしいと感じています。この種のコードは判読できないため、特に危険です。彼らのプレゼントは、オペレーターのオーバーロード、奇妙な名前、ワンライナーを書くことへの愛です。
    • 何があってもScalaを最後の一滴まで使い続けます。これは素朴な純粋主義者のタイプです。現実世界のプロジェクトの場合のように、ハイブリッドアプローチが必要な場合、それらはトレードオフできず、プロジェクトは苦しみます。

PS:あなたが良いジョーを見つけたなら、私たちがいくつかを必要とするので、ぜひ教えてください;)


@Dave Briccetti、私はDaveから「コミュニティにつながる」というアイデアを得て、詳しく説明することにしましたが、最終的には非常に長い回答になりました。コミュニティに言及した功績はDaveにあります;)
Ashkan Kh。ナザリー

素晴らしい投稿。あなたは誰?
デイブブリッケッティ

@Dave、私は現在、NLPをScalaでやっている@ AYLIENの主任開発者です。
アシュカンKh。ナザリー

全体的にはすばらしい答えですが、特に「間違った理由」の短いリストの場合は+1です。C ++狂信者にも同じ病状が見られます。
DarenW 14

1
Scalaでコーディングしなくても、おそらくそのインタビューの半分以上を渡すことができます。それはバグですか、それとも機能ですか?あなたの結論がプログラミング言語についてもっと不可知論者ではないことに驚いています。例えば、結局のところ、優れたScala開発者は異なる構文糖を持つ良い開発者です。
アーサーハヴリチェク14

8

現実世界のインタビューでは、Scalaが勝った戦いの半分であることがわかります。優れたプログラマーを雇うことは、言語に関係なく常に困難です!

ScalaプログラマーはすでにJavaでゲームのトップにおり、「次のレベルに上げたい」と思ったため、この言語に来る傾向があります。

面接に利用できるScala開発者が豊富にある場合は、幸運だと考えてください。そうでない場合、より関連性のある質問は、「Scalaを使用するためにトレーニングするプログラマーのどの側面を探す必要がありますか?」および「現在トレーニングサービスを提供できる企業は?」です。


1
すべてのScala開発者がJava(またはその他)でトップであるわけではなく、Scalaが提供する「私は違う」または「賢い」という感じが大好きです。多くの人は、Scalaが本当に何であるかを少しでも手がかりを持っていません。あなたはそれらに注意する必要があります;-)
アシュカンKh。ナザリー

@ ashy_32bit-これは最近ではますます真実になっていますが、2011年にこれに答えたときはそれほどそうではありませんでした
ケビンライト14

7

私はこのような小さな問題の解決策を見たいと思っています。2つの6面ダイスを200回投げた結果のヒストグラムを作成します。

興味深い回答については、コメントをご覧ください:http : //briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

ダニエル・ソブラルのような解決策を持っている人、またはケビン・ライトからのこれ:http : //ideone.com/8LFs3はよく見る価値があるでしょう。

回答がJavaコードのように見える場合、申請者は十分な距離にいない可能性があります。

また、その人がScalaコミュニティに接続していることを確認したいと思います。本、著者、オープンソース開発者、ユーザーグループ、興味深い人々を知っています。


それは業界平均を2だけ下回っていますが、;
ダンカンマックレガー

4

私はScalaの雇用を行ったことは一度もありませんが、暗黙の仕組み、型クラスパターン、および関数型プログラミングの基本についての理解を求めています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.