グラフィックプログラマーインタビューで最もよくある質問

最近、私はゲームスタジオでジュニアグラフィックプログラマーのインタビューを受けました。 その結果、私は彼らが初心者プログラマーに期待するスキルと彼らが尋ねることができる質問を見つけました。 この記事では、質問を便利なリストに入れました。 ポイントは、他の初心者プログラマーが最初のインタビューに行く前に準備するためにそれを使用できるということです。 しかし、これらの質問に対する答えを覚えているだけではお勧めしない予約をしたいと思います 。 リストのトピックは、実際のグラフィックプログラミングの問題を解決するために理解して習得する必要があるトピックです。 答えを覚えるのではなく、それらを理解する必要があります。



質問は、C ++、数学、最適化、コンピューターグラフィックスのトピックに分かれています。 明らかに、これらは日常業務の主要なトピックです。 C ++は実際のタスクでよく使用されるため、インタビュー中に多くの質問をするのは当然です。 さらに、グラフィックスプログラミングでは、他のほとんどの種類のプログラミングよりも数学の知識が必要です。これが、数学のスキルが最も重要な理由です。 最後に、60 FPSと高忠実度のレンダリングを実現するには、強力な最適化スキルが必要です。 各カテゴリの一般的な質問を見てみましょう。



C ++の質問





原則として、言語の高度な機能については何も質問されません。 たとえば、幸運なことに、テンプレートのメタプログラミングを実行するように依頼されたことはありません。



数学の質問



実際、数学の問題はかなり単調です。





おそらく、彼らはスカラー積、ベクトル積、四元数の使用に関連するいくつかの実際的な問題を解決することを提案するでしょう。



最適化に関する質問





ゲームスタジオは、NVIDIA Nsightなどのツールを使用してコードのプロファイリングと最適化の経験を積むことを推奨しているようですので、チェックしてください。 キャッシュメモリなど、コンピューターアーキテクチャに関するもう1つの優れた書籍を紹介します。



コンピュータグラフィックスの質問





最後の質問は、インタビュー中に特によく起こります。 パイプラインのすべての部分について完全に確信がない場合は、小さなソフトウェアラスタライザーを作成することをお勧めします。 ソフトウェアラスタライザーを作成することは、グラフィックパイプラインをゼロから実装することに似ているため、この演習では、パイプラインをより深く理解することができます。



上記の多くは準備質問です。 その後、より深い質問が続きます(会社を代替しないために、私はそれらを開示しません)。 ただし、上記の質問リストは、雇用主が初心者プログラマーにどのような知識を期待しているかをよく理解しています。



皆さんの中には、コンピューターグラフィックスで作業するためのカリキュラム科目をまだ勉強して選択している人もいます。 私のアドバイスは、主に高性能コンピューティングと応用数学に集中することです。 プログラミングの主題から、マルチスレッド、コンピューターアーキテクチャ、GPGPU、および高性能コンピューティングに関連する他のトピックを習得してください。 数学のコースには、線形代数、多次元計算(米国ではこのコースはCalculus IIIと呼ばれます)、確率理論、数値最適化、微分方程式、計算幾何学があります。 まず、コンピューターグラフィックスではそれほど必要ではないため、トポロジや抽象代数などのより抽象的な数学的トピックではなく、応用数学に焦点を当てます。



一般に、コンピュータグラフィックスのすべてのニュアンスを理解することは期待されていません。 コンピューターグラフィックスの概念は、グローバルライティング、オクルージョンカリング、シャドウ生成、パストレーシング、流体モデリング、ジオメトリ処理、GPGPU、物理的に正しいレンダリングなど、幅広いトピックをカバーしています。 ジューンがこれらのトピックのすべてのニュアンスを知っていることを期待するのは不合理です。 ただし、履歴書に何かを指定する場合は、このトピックに詳細に答える準備をしてください。



したがって、コンピュータグラフィックスに関するすべてを知る必要はありません。 多くの場合、作業した主なプロジェクトについて話すように求められます。 その後、インタビュアーはさらに多くの質問をし、プロジェクトの詳細を詳細に説明するように求めます。 したがって、私のアドバイス:インタビューの前に、特に誇りに思ういくつかのプロジェクトを選択し、詳細な説明の準備をします。



私の意見では、インタビューの準備をする最良の方法は、自由時間に多数のサードパーティのプロジェクトに取り組むことです。 自分が取り組んでいるプロジェクトを実演することは、自分自身を示し、このビジネスに本当に情熱を持っていることを示す良い方法です。 最後に、サードパーティのプロジェクトに取り組むことで、プログラミングスキルが磨かれます。 そして、これは、この記事に記載したすべての質問に答えるのに非常に役立ちます。



All Articles