開発者にインタビューするための2つのタスク

以前は、多くの場合、さまざまな役職の人にインタビューする必要がありました。そのほとんどはアプリケーションおよびデータベースの開発者でした。 このプロセスは非常に面倒です、なぜなら プログラマーは勇敢で、創造的で、好奇心が強く、目的を持った人々です。

私の練習にはあらゆる種類の質問がありました。 この記事では、3つの主要なタイプを取り上げ、最終的に何になったのか、そしてその理由を説明します。



トリッキーなタスク



あなたは険しい山に立ち、その高さは100メートルです。 長さ80メートルのロープがあります。 地面から約50メートルの標高の岩の上には、立ち上がって足場を得ることができる棚があります。 降りる方法は?



すでに答えを知っていたが、深く思慮深い人のふりをした人たちがいました。 ソリューションを生み出しました。 多くの人が正直にその課題に対処しませんでした。 しかし、それはまだ一種の導入作業でした。



その後、目を修正し、そのようなタスクを拒否しました。 結局のところ、私にとっての主なことは、将来、完全に異なる問題を解決する必要があるインテリジェントプログラマーを見つけることでした。つまり、ほとんどの場合、大規模なクールなソリューションを見つける必要はなく、突然何らかのブレーンストーミングが必要な場合は、一緒に集まることができます他の同僚と彼らの創意工夫を測定します。



技術の知識



私が尋ねた質問の2番目のタイプは、たとえば、ツール、メカニズム、テクノロジーの知識に関連していました。



  1. カプセル化とは何ですか。
  2. C ++で記述されたdllライブラリからJavaで関数呼び出しを行う方法。
  3. MS SQL ServerとMySQLの欠点は何ですか? 彼らの根本的な違いは何ですか?


時間が経つにつれて、私はこれらの質問を拒否しました。 私の意見では、すべてのプログラマーがこのすべてを完全に知っている必要はありません。 はい、カプセル化は重要なOOPツールですが、プログラマーがOOPなしで一生を書いたとしたら、今は何が悪いのでしょうか? 彼はただ必要としませんでした。 しかし、彼はすぐに効果的な文字列圧縮アルゴリズムまたはドライバーを書くことができます。 私は通常、異なるDBMS間のホリバーについては黙っています。いつでもドキュメント、フォーラムを開いて、何をどのように読むことができます。 メカニズムについても同じことです。何がどのように発生しているかを知る必要はありません。この問題の「解決策を見つける」ことができる必要があります。 dllから関数を一度も呼び出したことがない場合、これはあなたを連れて行かない理由ではなく、賢明または愚かであるとあなたを特徴付けません。 他の人がそれをどのように行うかを見て、あなたは成功します。



実用的なタスク



最後に、私は特定のタスクのみを持っていました:ここがあなたのための時間、ここがツールキット、ここがタスク、あなたがそれを行う必要があります、それからあなたはそれをどのように実装したか、なぜ、あなたの決定の利点は何ですか、それはどのように速く動作し、何がされていないのかを議論します。



私の意見では、これは人を検証する最も正しい方法です。 彼が実際の条件に近い実用的なタスクに対処する準備ができているかどうか。 私が皆に同じ課題を与え、すでに解決しました。



まず、同じ条件でさまざまな人々がどのように行動するかを見るために。 第二に、苦情がないように、彼らは私にあなたのために何かをし、あなたは私を連れて行かず、そしてあなたは自分の仕事を自分で使いました。 このために、この機能が既に実装されている既製の作業アプリケーションを示しました。 すべてが公正で透明です。



そして最後に、もしあなたが自分の手を試すことに興味があるなら、あたかもそれらのまさにインタビューにたどり着いたかのように、ここに2つのタスクがあります。



最初のタスク


ロシア語のwords_1とwords_2の2つのテーブルがあり、フィールド(wordはVARCHAR、refはINT)、wordは単語、refは他の(重要ではない)テーブルへのリンク(数値コード)で、これらの単語のすべての定義がリストされています。 各テーブルでは、すべての単語が一意です(繰り返しはありません)。 最初の表には2番目の表にない単語があり、その逆も同様です。2番目の表には最初の表にない単語がありますが、両方の表のほとんどの単語は同じです。 すべての単語とそれに対応するリンクを含む単一のテーブルを取得する必要があります。



初期条件/困難:



  1. 同じ単語に対して、異なるテーブルのリンクは異なる場合があります。 辞書はさまざまな場所からダウンロードされました。
  2. 各テーブルの単語数は数十万、つまり 額の比較アルゴリズムはすべての人で機能するわけではありません。 10万x 10万は少なくとも100億の比較を行います。
  3. データベース開発者の場合、タスクはsqlで実行する必要があります。


ソース表:



words_1

ランプシェード-1

映画館-2

飛行機-3

人-4



words_2

映画館-15

音楽-16

飛行機-17



最初のテーブルに基づく結果のテーブル:



all_words_1

ランプシェード-1

映画館-2

音楽-16

飛行機-3

人-4



2番目のテーブルに基づく結果のテーブル:



all_words_2

ランプシェード-1

映画館-15

音楽-16

飛行機-17

人-4



2番目のタスク


フィールド(defがTEXT、refがINT)を含むdefsテーブルがあります。defは単語の定義、refは他のテーブルからの単語自体へのリンク(数値コード)です(重要ではありません)。 辞書の各単語は、定義のすべての部分的な重複を削除し、最も完全な繰り返しのないものだけを残す必要があります。



初期条件/困難:



  1. 定義は数千文字と非常に長くなる可能性があります。
  2. テーブル内のレコード数は数百万です。フルテキストレコードを間抜けに比較すると、サーバーは曲がります。
  3. データベース開発者の場合、タスクはsqlで実行する必要があります。


ソース表:



refs

大きな耳を持つ動物-1

大きな耳と長い鼻を持つ動物-1

長い鼻を持つ大型動物-1

ふわふわ小動物-2

ナッツをかじる小さなふわふわの動物-2



(注1は象、2はリスです。)



結果のテーブル:



clear_refs

大きな耳と長い鼻を持つ動物-1

長い鼻を持つ大型動物-1

ナッツをかじる小さなふわふわの動物-2



そのようなもの。 覚えておいて、あなたは1、2時間の時間を持っているので、結果として、インタビュアーはまずプログラムのテキストではなく、望みの結果で完成した表を見たいと思っています。



All Articles