怠惰な道
因子生成アルゴリズム(非常に一般的)の作成や、覚えやすい単一または二重にリンクされたリストの並べ替えなど、特定のタスクをソフトウェアエンジニアに依頼することで、詰め込む能力以外に候補者のスキルについて何もわかりません。「A」文字のASCIIコードを尋ねた方がよいでしょう 。
多くの問題の詳細な解決策は、プログラミングのインタビューで一般的なすべての問題のアルゴリズム的かつ具体的な解決策を説明するさまざまな参考資料、多くの場合本で簡単に見つけることができます。
私は会社で働いていましたが、そこで同僚と大規模なヘッジファンドへのインタビューがどのようなものであったかについて詳しく話しました。彼は、広く入手可能なインタビューの質問と回答の本からすべての技術的な質問を注意深く記憶しました。当時の従業員は、それをすべてのインタビューの質問のソースとして渡しました。
幸いなことに、私の同僚は経験豊富なエンジニアですが、彼は仕事を続けるためにこの露骨に単調でありふれた運動を行うことに同意しました。彼はこれをする必要はありませんでした-インタビューは彼の貴重な時間の無駄であっただけでなく、雇用会社が彼の能力を決定することも何もしませんでした。同僚は、雇用と非効率的な管理の面で低い技術レベルにうんざりして、1年後に去りました...
メモリ
特定の言語でアルゴリズムを作成する場合も、同じ引数が機能します。実際のプロジェクトでは、ソフトウェアエンジニアは、ある種の構文チェックツール(たとえば、エディターの組み込みコード補完)なしで、ある種の技術ドキュメントを参照せずに、または単に完成したソリューションをコピーせずに、コードのセクションを作成することはありません。たぶん。車輪を再発明する意味はありません。
今日の世界のシステムで実行されるコードのほとんどは、StackOverflowへの応答として作成されたものだと思います。
そのすべての実用性のために、特定のプログラミング言語の構文での作業は、親しみやすさとアプリケーションから始まります。あなたにインタビューする人は、特定の言語のニュアンスについてのあなたの知識をテストすることは、その言語についてのあなたの理解をテストしていると思うかもしれません。たとえば、私はCで30年近く書いていますが、常に構文を見逃していると断言できます。
実際、私のキャリアが進み、興味のある言語に精通するにつれて、C、C ++、Objective-Cなどの構文のニュアンスについて常に混乱していました。私がひどいソフトウェアエンジニアだからではなく(一部の人は同意しないかもしれませんが...)、頭の中でいつでもすぐに思い出すことができる知識だけがあなたの記憶に保存されているからです。
優れたエンジニアは、特定の質問に対する答えをすぐには知らないことがよくありますが、どこでそれを探すべきかは確かに知っています。おそらく、インタビューの質問に関する情報を見つけるのに最適な場所はどこかを尋ねたいですか?
一般的なタスク
私がすでに触れた何か:これは格言です-車輪を再発明しないでください。たとえば、Cで作業していて、シリアルポートルーチンが必要な場合は、状況に応じて最初から記述しないでください。おそらく、JSONパーサーが必要です。これは、非常に一般的な要件です。限られたリソースで埋め込みボードにコードを記述している場合を除き、静止軌道またはMalbolgの衛星用 です。それなら多分あなたはあなたがすでに書いたものをライブラリから引き出すべきです。ほとんどの場合、コードは長い間使用されており、完全にテストされており、詳細な(そして正しい)ドキュメントがあります。信頼できます。
最新のソフトウェアエンジニアリングでは、ライブラリでまだ自動化されていない、またはアルゴリズムを見つけるのが難しい一般的なタスクが存在する可能性はほとんどありません。
あなたが私のようであり、何よりもあなたが主題への愛情から働いているなら、あなたはあなたが以前に書いたものを実行する場所を積極的に探します:奇妙な、新しい世界、新しい生活、新しい文明を求めて...
実際、遠い将来のソフトウェアエンジニアの概念は、コード考古学者に例えられてきました。エンジニアは主に既存のコードを再利用し、新しいアルゴリズムの開発とプログラミングに比較的少ない時間を費やしています。
討論。討論。討論
私はあなたが雇っている人が彼らのビジネスを知っていることを知ることを支持します。しかし、私の意見では、上記の方法はまったく役に立たない。誰かを怒らせたくない、そのまま言います。
たとえば、現代のソフトウェアエンジニアリングのプログラミングパラダイムについて話すだけで、言語が特定の実装に適しているかどうか、または特定のソフトウェアエンジニアリング方法論(アジャイル、私はあなたを見ています)がはるかに有用で関連性のあるトピックであるかどうかについて話し合います。
ディスカッションを主導して、共通点の領域を強調し、候補者が新しい問題をどのように理解しているか、そしておそらく古い問題を解決するための新しい代替方法を確認します。候補者が物事の発展をどのように見ているか、彼らが何かを解決し始める方法。開いたままで、細部や些細なことから離れてください。
ここで重要なのは議論です。「前向き」で「その分野のリーダー」と見なされている企業の多くは、実際の技術的な流れをほとんど理解していないため、時代遅れで単調で完全に予測可能な採用方法に頼っていることに常に驚いています。
求職者は、会社が面接するのと同じように会社に面接するべきだとよく言われます。私は完全にそれのためです。
正確な技術的な質問のリストで誰かにインタビューすることは、特に人々が特定の問題についての議論を引きずり出したくない場合は、常に危険信号です。これは、面接対象者が自分の質問を完全に理解していない可能性があることを示していることが多く、スクリプトに書かれている内容と完全に一致しない回答は正しくないと見なされます。
まとめましょう
より良い雇用方法に移行した企業もあれば、不十分な企業もあります。これは、私があなたの仲間のプログラマーに、古い方法を採用し、テストとコーディングの練習を主張する会社に関与しないように強く勧めるところです。特に長いもののために!
候補者の締め切りにプロジェクトを完了するように求める企業の話を聞いたことがありますが、多くの場合、数日かかります。
他の人は、特定の言語のための一般的な「適性テスト」、複数選択テストを持っています。限られた時間内に、頭の中の霧のヒントは、あなたがインタビューに失敗したことを意味します!
初心者の方は面接を飛ばすことができないかもしれませんし、よくわかりますが、学習体験だと思います。先に進み、経験を積み、可能な限り多くを学び、仕事があなたを失望させた場合は、先に進んでください。今後、自信、知識、経験を積むことができます。結局のところ、会社はあなたから恩恵を受けているので、あなたは会社から等しく恩恵を受けるべきです。
私のように年配で経験豊富な方は、採用会社にご相談ください。私たちは多くの経験を持っており、多くのことを見て、行ってきました。資格は履歴書とCVにはっきりと表示されています。そして、私は一般的な採用パイプラインに導かれ、私の能力が何度もテストされていることに憤慨しています。
あなたが立派な雇用主だと思っていて、一見素晴らしい候補者が去って去る理由がわからない場合は、どのように人を雇うかをよく見てください。
<>
その他の職業やコース
</>